Pascal/Turbo Pascal - Problemas con el ahorcado

   
Vista:

Problemas con el ahorcado

Publicado por LUISPDL (2 intervenciones) el 13/10/2007 21:29:28
Tengo un problema en el juego del ahorcado. Este se basa en un menu con el juego para 1 solo jugador(la palabra a adivinar es aleatoria de un archivo), y otra opcion para 2 jugadores(un jugador ingresa una palabra y el otro la tiene que adivinar). Cuando ejecuto cualquiera de los 2 juegos en el menu funciona normalmente pero cuando vuelvo al menu y quiero volver a elegir la opcion 1 me da un Runtime error 5. a que se debe el problema. El codigo es medio largo pero lo dejo para que el que lo pueda entender me ayude por favor:

program ahorcado;

uses crt,dos;

type
vector1=array[1..50] of string;
vector=array[1..30] of string;

var
palabra:string;
longitud:integer;
v:vector;
v1:vector1;
var tecla:char;

procedure cargar(var v:vector;pal:string);
var i:integer;
begin
longitud:=length(pal);
for i:=1 to longitud do
v[i]:='_';
end;

procedure mostrar(v:vector;pal:string);
var i:integer;
begin
for i:=1 to longitud do
write(v[i],' ');
end;

procedure letras(var v:vector;pal:string);
var l:string;
i,aux,j,c,y,d:integer;
begin
c:=1;
d:=1;
y:=1;
readln(l);
while (c<=7) and (d<=longitud) do
begin
gotoxy(25,12);
mostrar(v,palabra);
gotoxy(1,y);
y:=y+1;
write('ingrese una letra:');
readln(l);
aux:=0;
for i:=1 to longitud do
begin
if l=pal[i] then
begin
v[i]:=pal[i];
aux:=1;
d:=d+1;
end;
end;
if aux=0 then
begin
if c=1 then
begin
gotoxy(28,3);
writeln('O');
c:=c+1;
end
else
if c=2 then
begin
gotoxy(28,4);
writeln('|');
c:=c+1;
end
else
if c=3 then
begin
gotoxy(27,4);
writeln('/');
c:=c+1;
end
else
if c=4 then
begin
gotoxy(29,4);
writeln('\');
c:=c+1;
end
else
if c=5 then
begin
gotoxy(27,5);
writeln('/');
c:=c+1;
end
else
if c=6 then
begin
gotoxy(29,5);
writeln('\');
c:=c+1;
end
else
begin
gotoxy(25,13);
writeln('PERDISTE, la palabra es ', pal);
c:=c+1;
gotoxy(27,3);
writeln('___');
end;
end;
if d>longitud then
begin
gotoxy(25,13);
writeln('FELICITACIONES GANASTE');
end;
end;
end;

procedure mastil;
begin
gotoxy(28,2);
writeln('|');
gotoxy(25,1);
writeln('___');
gotoxy(24,2);
writeln('|');
gotoxy(24,3);
writeln('|');
gotoxy(24,4);
writeln('|');
gotoxy(24,5);
writeln('|');
gotoxy(24,6);
writeln('|');
gotoxy(25,6);
writeln('__');
gotoxy(22,6);
writeln('__');
end;

procedure salida;
begin
gotoxy(1,24);
writeln('el juego termino,presione un tecla para salir');
readkey;
end;

procedure palabras(var v1:vector1);
var i:integer;
texto:string;
archivotexto:text;
begin
assign(archivotexto,'prueba.txt');
reset(archivotexto);
for i:=1 to 50 do
begin
readln(archivotexto,texto);
v1[i]:=texto;
end;
randomize;
palabra:=(v1[random(49)+1]);
end;

procedure juego1;
begin
clrscr;
palabras(v1);
cargar(v,palabra);
mastil;
letras(v,palabra);
gotoxy(25,12);
mostrar(v,palabra);
salida;
end;

procedure juego2;
begin
clrscr;
while palabra='' do
begin
gotoxy(1,1);
write('ingrese una palabra para empezar a jugar:');
readln(palabra);
end;
readkey;
clrscr;
mastil;
cargar(v,palabra);
letras(v,palabra);
gotoxy(25,12);
mostrar(v,palabra);
salida;
end;

procedure menu;
begin
tecla:=' ';
while (tecla<>'3') do
begin
clrscr;
gotoxy(20,1);
writeln('MENU DEL JUEGO');
gotoxy(21,2);
writeln('El AHORCADO');
writeln;
writeln('1-Un jugador');
writeln('2-Dos jugadores');
writeln('3-Salir');
gotoxy(40,24);
write('Ingresar una opcion:');
read(tecla);
case tecla of
'1':juego1;
'2':juego2;
end;
end;
end;

begin
menu;
end.

Si alguein me puede ayudar para mejorar que lo diga tambien, todo es bien venido. Gracias
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

RE:Problemas con el ahorcado

Publicado por NachoC (2 intervenciones) el 14/10/2007 14:48:48
No lo puedo probar, al no tener el fichero de palabras; tampoco dices qué compilador usas. Aun así, sigamos el programa...

Al pulsar la opción 1, entras a "juego1"

"juego1" llama a "palabras", que abre el fichero y lo lee.

En la segunda pasada del juego, cuando llamas a palabras... vuelves a intentar abrir el fichero... que no habías cerrado!!!

A mí que el problema es ese.

Por cierto, por si te da alguna idea, yo hice hace tiempo un ahorcado en modo gráfico. Lo tienes en

http://www.nachocabanes.com/videojuegos/ipj/ipj05.php#pascal
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

RE:Problemas con el ahorcado

Publicado por LUISPDL (2 intervenciones) el 14/10/2007 19:23:28
Gracias NachoC ese era el problema, lo que pasa es que recien estoy aprendiendo a utilizar los archivos y tambien a programar.
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