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} 1 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 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 3 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; 4 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. 5