Elaboración en Pascal del juego del Ahorcado

Juegos. Programación estructurada

  • Enviado por: Eduardo Donderis
  • Idioma: castellano
  • País: España España
  • 3 páginas

publicidad

P.10.6.- Escriba un programa para ejecutar el juego del ahorcado. La palabra que se debe adivinar no tendrá más de 10 caracteres. Por cada carácter que se introduzca que no pertenezca a la palabra, se visualizará en pantalla uno de los siguientes caracteres `OI/\' hasta que se forme la figura siguiente, momento en que se habrá perdido el juego. Los caracteres que se adivinen aparecerán en pantalla en la posición que ocupan en la palabra.

Figura del ahorcado o

/I\

I

/ \

program ahorcado;

uses

crt;

type

cad=string[10];

var

palabra,auxi,adi:cad;

letra:char;

posi,l:integer;

procedure comienzo(var palabra,auxi,adi:cad;var l:integer);

var

i:integer;

begin

gotoxy(25,10);

writeln('JUEGO DEL AHORCADO');

writeln('Escribe la palabra a adivinar: ');

readln(palabra);

l:=length(palabra);{LONGITUD DE LA PALABRA A ADIVINAR}

auxi:=palabra;

adi[0]:=chr(l); {INDICO EL TAMA¥O DE LA CADENA QUE VOY ADIVINANDO}

for i:=1 to l do

adi[i]:='_'; {LLENO DICHA PALABRA CON _ EN CADA LETRA}

clrscr;

end;

procedure acierto(auxi:cad;var posi:integer;letra:char);

var

n:integer;

begin

delete(auxi,1,posi);{BORRA HASTA DONDE HA ENCONTRADO LA LETRA}

n:=posi;

posi:=pos(letra,auxi);{BUSCA LA LETRA EN EL NUEVO TROZO DE PALABRA}

if posi<>0 then

posi:=posi+n;{SI HA ENCONTRADO OTRA POSICION,SE LA SUMA A LA ANTERIOR}

end;

procedure dibujo(p:integer);

var

parte:string[7];

f,c:integer;

begin

parte:='O/I\I/\'; {DIBUJO DEL AHORCADO}

case p of {DEPENDIENDO DEL N§ DE FALLOS,ESCRIBE UNA PARTE DEL MU¥ECO}

1 : begin

f:=1; c:=2;

end;

2 : begin

f:=2; c:=1;

end;

3 : begin

f:=2; c:=2;

end;

4 : begin

f:=2; c:=3;

end;

5 : begin

f:=3; c:=2;

end;

6 : begin

f:=4; c:=1;

end;

7 : begin

f:=4; c:=3;

end;

end;

gotoxy(7+c,18+f);

write(parte[p]);

end;

procedure pregunta(var letra:char;var posi:integer;var adi,auxi:cad;palabra:cad);

var

z,p:integer;

begin

z:=1;

p:=1;

repeat

gotoxy(5,2);

writeln('Dime una letra');

readln(letra);

posi:=pos(letra,palabra); {CALCULA POSICION DE LA LETRA EN LA PALABRA}

writeln('posicion: ',posi);

if posi<>0 then {SI SE HA ENCONTRADO SIGUE BUSCANDO EN LA PALABRA}

repeat

adi[posi]:=letra;

gotoxy(10,10);

write(adi); {MUESTRA LA PALABRA QUE VAMOS DICIENDO}

acierto(auxi,posi,letra);

writeln;

until (posi=0)

else {SI NO ESTA ESA LETRA EN LA PALABRA...}

begin

gotoxy(3,14);

writeln('LETRAS QUE NO PERTENECEN A LA PALABRA:');

gotoxy(5+z,15);

write(letra); {VA MOSTRANDO POR PANTALLA LAS LETRAS}

z:=z+2;

dibujo(p);{Y EL DIBUJO DEL AHORCADO}

p:=p+1;

end;

until (adi=palabra) or (p=8);{HASTA ADIVINARLA O COMPLETAR EL MU¥ECO}

writeln;

end;

begin {PROG. PPAL}

clrscr;

comienzo(palabra,auxi,adi,l);{DEVUELVE LA PALABRA,AUXILIAR Y LONGITUD}

writeln('LA PALABRA A ADIVINAR TIENE: ',l,' LETRAS');

pregunta(letra,posi,adi,auxi,palabra);{VA PIDIENDO LAS LETRAS}

if palabra=adi then

begin

gotoxy(20,20);

writeln('­­­­ HAS GANADO !!!!!');

end

else

begin

writeln('Has perdido,la palabra era: ',palabra);

gotoxy(20,20);

writeln('­­­­ AHORCADO !!!!');

end;

READKEY

end.