PDA

Ver la Versión Completa : ayuda con cargar datos de un archivo .dat


branncg
04-03-2018, 04:49:22
Hola a todos, tengo una duda, tengo un pequeño juego que consiste en comer manzanas para pasar de nivel, cada jugador registra su nombre y se le registra el tiempo en segundos en que tardó en pasar todos los niveles, hay una procedure que es para mostrar todos los nombres y todas las puntuaciones de todos los tiempos, este es el código:


procedure TJuegoPixel.mostrarpuntuaciones;
type
jugador=record
nombre:string[30];
tiempo:integer;
end;
var f:file of jugador;
r:jugador;c:integer;
begin
assignfile(f,'C:\Users\Brandon\Desktop\BRANDONCG\juego\imagenes\Datos.Dat');
reset(f);
c:=0;
while not eof(f) do begin
seek(f,c);
read(f,r);
showmessage(r.nombre+' '+inttostr(r.tiempo));
c:=c+1;
end;
end;


Funciona bien pero muestra primero una puntuación y nombre luego otra puntuacion y nombre, como pueden ver el showmessage hace ese ciclo hasta acabar de leer todo el archivo, ahora mi duda es: ¿cómo puedo hacer para que en lugar de mostrar varios showmessage, muestre una lista con todos los nombres de los jugadores y su tiempo(puntuacion), quizás en en memo o un edit?, pero al momento de querer poner un memo o un edit y al correr la aplicación, no capta los eventos del teclado(que son con los que funciona el juego), sino se va al memo o al edit(al que hubiera puesto) y espera que yo escriba algo en el, muchas gracias de antemano por su ayuda.(lo siento si al momento de poner el código no puse bien las etiquetas de código)

Ñuño Martínez
06-03-2018, 12:47:46
Si configuras el "memo" para sólo lectura (readonly) no deberías tener problemas.

En cualquier caso, para desarrollar juegos no te recomiendo que uses la VCL. Mejor usa bibliotecas (o motores) específicamente diseñados para hacer juegos; así no tendrás que lidiar con problemas como este.

Si estás interesado en el desarrollo de videojuegos, pásate por http://www.pascalgamedevelopment.com. También puedes echar un vistazo al portal de desarrollo de videojuegos de la wiki de Lazarus (http://wiki.freepascal.org/Portal:Game_Development) (muchas bibliotecas y motores que hay ahí funcionan con Delphi).

ElDioni
06-03-2018, 14:49:34
Supongo que también te servirá algo así.

var
temp:string;
begin
assignfile(f,'C:\Users\Brandon\Desktop\BRANDONCG\juego\imagenes\Datos.Dat');
reset(f);
c:=0;
temp:='';
while not eof(f) do
begin
seek(f,c);
read(f,r);
Temp:=temp+(r.nombre+' '+inttostr(r.tiempo)+#$A#$D;
c:=c+1;
end;
showmessage(temp);
end;


Saludos.

branncg
22-03-2018, 00:58:12
gracias a ambos por sus respuestas, me sirvió