Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   crear programa en el cual haya un algoritmo para poder robar cartas (https://www.clubdelphi.com/foros/showthread.php?t=68527)

ZERO0 18-06-2010 20:12:46

crear programa en el cual haya un algoritmo para poder robar cartas
 
Buenas a todos. Soy nuevo en este foro. Os escribo porque estoy intentando hacer un progrma donde en el cual se emplee ficheros que ponga cartas intercmabiables, y en uno de esos modulos, se requiere que, dado un numero entero, te permita robar x cartas. Pero tengo un problema, y es que como en mi curso de informatica no vimos nada o casi nada de estructura aleatorias, pues como que no se como poder programarlos. Se que se necesita los random y randomize oportunos, pero no sé cómo. Espero que puedan ayudarme, ya que es un programa interesante para el estudio sobre el juego en el cual lo desarollo.

PD: aqui es necsario que haya archivos para que fucnione optimamente.

PD: os pongo los programas tal y como los tengo hasta ahora:

programa a corregir (en el que hay que poner el modulo aleatorio vaya)
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;


type
Tcarta = record
num: integer;
nom: string[40];
color:string[25];
tipo:string[40];
HP:string[3];
text_carta1:string[255];
text_carta2:string[255];
text_carta3:string[255];
text_carta4:string[255];
debilitat:string[33];
resistencia:string[33];
costretirada:string[10];
end;
var
opcio: integer;

procedure Crearmall();
var
mall1:file of Tcarta;
aux1:Tcarta;
i:integer;
begin

Assignfile(mall1,'baralla_a_estudi.car');
Rewrite(mall1);
for i:=1 to 2 do
begin
Writeln('dona tots els detalls de la carta a posar en el mall');
Readln(aux1.num);
Readln(aux1.nom);
Readln(aux1.tipo);
Readln(aux1.color);
Readln(aux1.hp);
Readln(aux1.text_carta1);
Readln(aux1.text_carta2);
Readln(aux1.text_carta3);
Readln(aux1.text_carta4);
Readln(aux1.debilitat);
Readln(aux1.resistencia);
Readln(aux1.costretirada);
Write(mall1,aux1);
end;

Closefile(mall1);
end;

procedure Llegirmall();
var
mall2:file of Tcarta;
aux2:Tcarta;
begin
Assignfile(mall2,'baralla_a_estudi.car');
Reset(mall2);
while not Eof(mall2) do
begin
Read(mall2,aux2);
Writeln('carta numero:',aux2.num);
Writeln(aux2.nom);
Writeln(aux2.tipo);
Writeln(aux2.color);
Writeln(aux2.hp);
Writeln(aux2.text_carta1);
Writeln(aux2.text_carta2);
Writeln(aux2.text_carta3);
Writeln(aux2.text_carta4);
Writeln(aux2.debilitat);
Writeln(aux2.resistencia);
Writeln(aux2.costretirada);
end;
Closefile(mall2);
end;

procedure RobarnCartes();
var
mall3:file of Tcarta;
aux3:Tcarta;
i,n,robat:integer;

begin
Assignfile(mall3,'baralla_a_estudi.car');
Reset(mall3);
writeln('quin nomrbre de cartes vols robar?');
readln(n);
i:=1;
Randomize;
robat:=0;
while (i<=n) do
begin
robat:=1 + random(1);
if (robat=aux3.num) then
begin
Read(mall3,aux3);
Writeln('carta robada numero:',i);
Writeln(aux3.nom);
Writeln(aux3.tipo);
Writeln(aux3.color);
Writeln(aux3.hp);
Writeln(aux3.text_carta1);
Writeln(aux3.text_carta2);
Writeln(aux3.text_carta3);
Writeln(aux3.text_carta4);
Writeln(aux3.debilitat);
Writeln(aux3.resistencia);
Writeln(aux3.costretirada);
i:=i+1;
end;
end;
Closefile(mall3);
end;

begin
WRITELN('ESCULL UNA OPCIO DEL MENU/ESCOGE UNA OPCION DEL MENU');
WRITELN('--------------------------------------------------------------------');
WRITELN('1-Crear un mall de pokemon tcg per al seu estudi / Crear un mazo de pokemon tcg para su estudio');
WRITELN('2-Llegir un mall creat des de la primera fins a la ultima carta / leer un mazo ya creado desde la primera hasta la ultima carta.');
WRITELN('--------------------------------------------------------------------');

readln(opcio);
case opcio of
1:Crearmall();
2:Llegirmall();
3:RobarnCartes();
end;


readln;
end.

Programa antes de poner el modulo:

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
Tcarta = record
nom: string[40];
color:string[25];
tipo:string[40];
HP:string[3];
text_carta1:string[255];
text_carta2:string[255];
text_carta3:string[255];
text_carta4:string[255];
debilitat:string[33];
resistencia:string[33];
costretirada:string[10];
end;
var
opcio: integer;

procedure Crearmall();
var
mall1:file of Tcarta;
aux1:Tcarta;
i:integer;
begin

Assignfile(mall1,'baralla_a_estudi.car');
Rewrite(mall1);
for i:=1 to 2 do
begin
Writeln('dona tots els detalls de la carta a posar en el mall');
Readln(aux1.nom);
Readln(aux1.tipo);
Readln(aux1.color);
Readln(aux1.hp);
Readln(aux1.text_carta1);
Readln(aux1.text_carta2);
Readln(aux1.text_carta3);
Readln(aux1.text_carta4);
Readln(aux1.debilitat);
Readln(aux1.resistencia);
Readln(aux1.costretirada);
Write(mall1,aux1);
end;

Closefile(mall1);
end;

procedure Llegirmall();
var
mall2:file of Tcarta;
aux2:Tcarta;
begin
Assignfile(mall2,'baralla_a_estudi.car');
Reset(mall2);
while not Eof(mall2) do
begin
Read(mall2,aux2);
Writeln('dona tots els detalls de la carta a posar en el mall');
Writeln(aux2.nom);
Writeln(aux2.tipo);
Writeln(aux2.color);
Writeln(aux2.hp);
Writeln(aux2.text_carta1);
Writeln(aux2.text_carta2);
Writeln(aux2.text_carta3);
Writeln(aux2.text_carta4);
Writeln(aux2.debilitat);
Writeln(aux2.resistencia);
Writeln(aux2.costretirada);
end;
Closefile(mall2);
end;

begin
WRITELN('ESCULL UNA OPCIO DEL MENU/ESCOGE UNA OPCION DEL MENU');
WRITELN('--------------------------------------------------------------------');
WRITELN('1-Crear un mall de pokemon nb tcg per al seu estudi / Crear un mazo de pokemon tcg para su estudio');
WRITELN('2-Llegir un mall creat des de la primera fins a la ultima carta / leer un mazo ya creado desde la primera hasta la ultima carta.');
WRITELN('--------------------------------------------------------------------');

readln(opcio);
case opcio of
1:Crearmall();
2:Llegirmall();
end;

readln;
end.

AzidRain 18-06-2010 23:14:14

A los moderadores...seria bueno qye abran un foro llamado "Tareas" o similar. asi sería más fácil ordenar las opiniones, este caso es precisamente un tarea de escuela...

Casimiro Notevi 18-06-2010 23:56:19

Por favor, ZERO0, lee nuestra guía de estilo, gracias.

ZERO0 19-06-2010 00:17:01

crear programa en el cual haya un algoritmo para poder robar cartas
 
Cita:

Empezado por Casimiro Notevi (Mensaje 367691)
Por favor,ZERO0, lee nuestra guia de estilo, gracias.

Muy bien ya me lei la guia de estilo. Ahora bien, mirando el post que hice, hay algun fallo en lo que puse? ¿Qué debo corregir? Si no es así, el mensaje que me pusisteis era para que me leeyera el post no?

Gracias por adelantado.

Caral 19-06-2010 00:33:59

Hola
Para mi la pregunta esta bien planteada, lo que me parece es que se deberia especificar el sitio donde se requiere que se haga lo que se necesita y no colocar todo el codigo, asi se iria mas al grano.
Por lo demas esta bien, para mi.
Saludos

ZERO0 19-06-2010 00:43:46

Cita:

Empezado por Caral (Mensaje 367702)
Hola
Para mi la pregunta esta bien planteada, lo que me parece es que se deberia especificar el sitio donde se requiere que se haga lo que se necesita y no colocar todo el codigo, asi se iria mas al grano.
Por lo demas esta bien, para mi.
Saludos

Muy bien, ahora mismo le pongo el sitio para poder hacer la mejora:
Código:

procedure RobarnCartes();
var
mall3:file of Tcarta;
aux3:Tcarta;
i,n,robat:integer;

begin
Assignfile(mall3,'baralla_a_estudi.car');
Reset(mall3);
writeln('quin nomrbre de cartes vols robar?');
readln(n);
i:=1;
Randomize;
robat:=0;
while (i<=n) do
begin
robat:=1 + random(1);
if (robat=aux3.num) then
begin
Read(mall3,aux3);
Writeln('carta robada numero:',i);
Writeln(aux3.nom);
Writeln(aux3.tipo);
Writeln(aux3.color);
Writeln(aux3.hp);
Writeln(aux3.text_carta1);
Writeln(aux3.text_carta2);
Writeln(aux3.text_carta3);
Writeln(aux3.text_carta4);
Writeln(aux3.debilitat);
Writeln(aux3.resistencia);
Writeln(aux3.costretirada);
i:=i+1;
end;
end;
Closefile(mall3);
end;

Lo que necesito es modificar el módulo que le muestro a continuación para que compile el archivo como una estructura aleatoria, que simule un robo de cartas de un mazo. Eso es todo. Por favor, si me lo puede modificar para que tenga lo que pido, modifiquemelo.

Gracias por adelantado.


La franja horaria es GMT +2. Ahora son las 17:03:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi