Pascal/Turbo Pascal - Pascal trivia

 
Vista:

Pascal trivia

Publicado por Dinver (1 intervención) el 16/07/2021 20:57:44
Hola alguien sabe como puedo hacer un juego de trivia con un archivo de texto en pascal, tengo que sacar las preguntas y las opciones del archivo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pascal trivia

Publicado por ramon (2158 intervenciones) el 01/08/2021 15:20:07
Tienes que crear un archivo con la opcion [entradas] .

program trivial;
uses
crt;
const
categ : array[1..6] of string[23] = ('Geografia','Arte y Literatura',
'Historia','Entretenimiento','Ciencias y Naturaleza',
'Deportes y Pasatiempos');
nombre : string = 'trivi.txt';
max = 20;

var
pregunta, respuesta : string[79];
numero : word;
archi : text;
datos : array[1..max,1..3] of string[79];
v, total : integer;
tipo : string[1];


procedure crea_archivo;
begin
assign(archi,nombre);
{$I-} reset(archi); {$I+}
if ioresult <> 0 then
begin
rewrite(archi);
str(numero,tipo);
writeln(archi,tipo);
writeln(archi,pregunta);
writeln(archi,respuesta);
close(archi);
end
else
begin
append(archi);
str(numero,tipo);
writeln(archi,tipo);
writeln(archi,pregunta);
writeln(archi,respuesta);
close(archi);
end;
end;

procedure entraficha;
var
tec : char;
begin
clrscr;
gotoxy(12,2);write('Entrada Categoria');
gotoxy(12,3);write(' 1 = Geografia');
gotoxy(12,4);write(' 2 = Arte y Literatura');
gotoxy(12,5);write(' 3 = Historia');
gotoxy(12,6);write(' 4 = Entretenimiento');
gotoxy(12,7);write(' 5 = Ciencias y Naturaleza');
gotoxy(12,8);write(' 6 = Deportes y Pasatiempos');
gotoxy(12,10);write(' 7 = salir');
numero := 0;
repeat
tec := readkey;
until tec in['1','2','3','4','5','6','7'];
case tec of
'1' : numero := 1;
'2' : numero := 2;
'3' : numero := 3;
'4' : numero := 4;
'5' : numero := 5;
'6' : numero := 6;
'7' :;
end;
if numero = 0 then
begin
end
else
begin
clrscr;
gotoxy(2,2);write('***** ',categ[numero],' *****');
gotoxy(2,4);write('Entre Pregunta : ');
gotoxy(20,4);readln(pregunta);
gotoxy(2,5);write('Entre Respuesta : ');
gotoxy(20,5);readln(respuesta);
crea_archivo;
end;
end;


procedure preguntas(catego : word);
var
nn, car : string[1];
pr, nu, k : word;
lapre, lares : string[79];
puls : char;
begin
clrscr;
assign(archi,nombre);
{$I-} reset(archi); {$I+}
if ioresult <> 0 then
begin
writeln('Error De Archivo O No Existe Pulse Una Tecla');
readkey;
end
else
begin
nu := 1;
v := 1;
while not Eof(archi) do
begin
readln(archi, tipo);
readln(archi, Pregunta);
readln(archi, respuesta);
k := ord(tipo[1]) - 48;
if k = catego then
begin
datos[v][1] := tipo;
datos[v][2] := Pregunta;
datos[v][3] := respuesta;
v := v + 1;
if v = max then
v := max;
end;
end;
clrscr;
total := v - 1;
writeln('Las Preguntas Son De = ',categ[catego]);
writeln;
repeat
clrscr;
writeln('Tenemos De 1 A ',total,' Eliga Una [0] Final');
writeln;
puls := readkey;
nu := ord(puls) - 48;
if nu > 0 then
begin
writeln(datos[nu][2]);
writeln;
write('La Respuesta Es : ');
readln(lares);
writeln;
for pr := 1 to length(lares) do
lares[pr] := upcase(lares[pr]);
for pr := 1 to length(datos[nu][3]) do
datos[nu][3][pr] := upcase(datos[nu][3][pr]);
if lares = datos[nu][3] then
writeln('La Respuesta Es Correcta')
else
writeln('La Respuesta Es Incorrecta');
writeln;
writeln('**** Pulse Una Tecla ****');
readkey;
end;
until puls = '0';
end;
end;


procedure menu;
var
salir : boolean;
ter, tecl : char;
begin
salir := false;
repeat
clrscr;
writeln('***** Menu Principal *****');
writeln;
writeln(' [E] = Entradas');
writeln(' [P] = Preguntas');
writeln(' [S] = Salir');
writeln;
writeln('<<<< Elija Opcion >>>>');
tecl := upcase(readkey);
case tecl of
'E' : entraficha;
'P' : begin
clrscr;
gotoxy(12,2);write('Elije Categoria');
gotoxy(12,3);write(' 1 = Geografia');
gotoxy(12,4);write(' 2 = Arte y Literatura');
gotoxy(12,5);write(' 3 = Historia');
gotoxy(12,6);write(' 4 = Entretenimiento');
gotoxy(12,7);write(' 5 = Ciencias y Naturaleza');
gotoxy(12,8);write(' 6 = Deportes y Pasatiempos');
gotoxy(12,10);write(' 7 = salir');
numero := 0;
repeat
ter := readkey;
until ter in['1','2','3','4','5','6','7'];
case ter of
'1' : numero := 1;
'2' : numero := 2;
'3' : numero := 3;
'4' : numero := 4;
'5' : numero := 5;
'6' : numero := 6;
'7' :;
end;
if numero > 0 then
preguntas(numero);
end;
'S' : salir := true;
end;
until salir = true;
end;




begin
menu;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar