 /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.
