Ahorcado v0.1

Bueno, esta tarde he finalizado mis examenes de la Universidad y como no tenía nada que hacer me he puesto a programar un poco en ada. Tras pensar que es lo que podía programar, se me ha ocurrido hacer un ahorcado.

Tras realizar el algoritmo e implantarlo, ha resultado el siguiente juego: Aparece una pantalla inicial que pide el nivel de dificultad deseado. Tras clicar sobre el modo de juego deseado, dependiendo del píxel en el que se hace clic, es elegida una de las palabras del fichero de texto que contiene las palabras.

Ahora es el momento de adivinar la palabra pero con cuidado, que solo son aceptados 5 fallos.

Unas capturas del juego:

AhorcadoAhorcado

Podeis descargaros el juego desde aquí . El programa utiliza una librería llamada adagraph.

Pulsa sobre leer más para ver el algoritmo del juego.

El código fuente es el siguiente (se aceptan críticas, que seguro que las hay, xDD):

with Adagraph;
use Adagraph;
with Ada_Botones; use Ada_Botones;
with ada.Text_IO; use ada.Text_IO;
 
procedure Ahorcado is
 
x_size,Y_size: constant:=600;
Principiante,Intermedio,Experto: Boton;
X_Location,Y_Location: integer;
No_Salir,No_Stop:Boolean :=True;
encontrado:boolean:=false;
Nombre_Fichero: String (1..14);
Contador, num_letras, letras_detect: Integer:=0;
F:File_Type;
Car: Character;
Intentos_Rest: String(1..1) :=(5);
Car_Intro: String(1..20);
J: Integer:=1;
car2: string (1..1);
 
type Pal is array (1..20) of Character;
Palabra: Pal;
I: Integer:=1;
 
X1: Positive:=20;
X2: Positive:=28;
y: positive:=450;
Intentos: Integer:=5;
 
procedure seleccion_nivel(X,Y: in integer; A,B,C: in boton; fich: in out string; s: out boolean ) is
Prin:String(1..9):=”facil.txt”;
Int:String(1..14):=”intermedio.txt”;
Exp:String(1..11):=”experto.txt”;
 
begin
if Boton_Pulsado(A,X,Y) then
for I in 1..9 loop
Fich(I):=Prin(I);
end loop;
S:=false;
elsif Boton_Pulsado(B,X,Y) then
for I in 1..14 loop
Fich(I):=int(I);
end loop;
S:=false;
elsif Boton_Pulsado(C,X,Y) then
for I in 1..11 loop
Fich(I):=exp(I);
end loop;
S:=false;
else
s:=true;
end If;
 
end seleccion_nivel;
 
begin
Open_Graph_Window(X_Size,Y_Size);
Set_Window_Title(”El Ahorcado”);
display_text(50,550,”Bienvenido al ahorcado”,red);
Display_Text(50,525,”Selecciona el nivel de dificultad que quieras. Suerte!”);
Display_Text(20,20,”Juego realizado por itimag.net”,Red);
Crear_Boton(Principiante,250,450,350,475); –CREAMOS EL BOTON “Salir” MEDIANTE UNA FUNCIONALIDAD DEL PACKAGE BOTONES.
Pintar_Boton(Principiante,”Fácil”);
Crear_Boton(Intermedio,250,400,350,425); –CREAMOS EL BOTON “Reset” MEDIANTE UNA FUNCIONALIDAD DEL PACKAGE BOTONES.
Pintar_Boton(Intermedio,”Intermedio”);
Crear_Boton(Experto,250,350,350,375); –CREAMOS EL BOTON “Del” MEDIANTE UNA FUNCIONALIDAD DEL PACKAGE BOTONES.
Pintar_Boton(Experto,”Experto”);
while No_Salir=True loop
Get_Mouse_button(Left_Button,X_Location,Y_Location);
seleccion_nivel(X_location,Y_location,Principiante,Intermedio,Experto,Nombre_Fichero,No_Salir);
end loop;
Clear_Window;
Open(F,In_File,Nombre_Fichero);
while No_Stop=true loop
while Contador/=X_Location loop
if not End_Of_File(F) then
while not End_Of_Line(F) loop
Get(F,Car);
end loop;
if not end_of_file(F) then
Get(F,Car);
end if;
contador:=contador+1;
else
Reset(F,In_File);
end if;
end loop;
if Contador=X_location then
No_Stop:=False;
end if;
end loop;
while not End_Of_Line(F) loop
palabra(I):=car;
Get(F,Car);
I:=I+1;
end loop;
Palabra(I):=Car;
— Ponemos espacio en sitio del array restante.
for J in (I+1)..20 loop
Palabra(J):=’ ‘;
end loop;
— contamos los caracteres de la palabra
for I in 1..20 loop
if palabra(I)/=’ ‘ then
Num_Letras:= Num_Letras +1;
end if;
end loop;
 
– Pintamos donde van a ir las letras introducidas
for I in 1..Num_Letras loop
Draw_Line(X1,Y,X2,Y,red);
X1:=X1+15;
X2:=X2+15;
end loop;
 
Display_Text(20,150,”Caracteres introducidos:”);
Display_Text(320,150,”Intentos restantes:”);
Display_Text(475,150,Intentos_rest);
Draw_Box(20,120,250,140); –DIBUJAMOS LA CASILLA PARA VISUALIZAR LOS CARÁCTERES INTRODUCIDOS.
Draw_Box(21,120,250,139,light_gray,True);
 
for I in 1..20 loop — Inicializamos a espacio en blanco el string
Car_Intro(I):=’ ‘;
end loop;
 
while intentos>0 and Letras_Detect/=Num_Letras loop
if Key_Hit then
encontrado:=false;
car:=get_key;
Car_Intro(J):=car;
J:=J+1;
X1:=5;
X2:=13;
–Intentos:=Intentos-1;
for I in 1..Num_Letras loop
if Car=Palabra(I) then
car2(1):=Palabra(I);
Display_Text((X1+(I*15)),Y+2,Car2);
Encontrado:=True;
letras_detect:= letras_detect+1;
end if;
end loop;
if Encontrado=false then
Intentos:=Intentos-1;
Draw_Box(474,150,484,162,white,true);
if Intentos=4 then — QUEDA PINTAR LAS PARTES DEL CUERPO.
intentos_rest(1):=’4′;
Display_Text(475,150,Intentos_Rest);
elsif Intentos=3 then
intentos_rest(1):=’3′;
Display_Text(475,150,Intentos_Rest);
elsif Intentos=2 then
intentos_rest(1):=’2′;
Display_Text(475,150,Intentos_Rest);
elsif Intentos=1 then
intentos_rest(1):=’1′;
Display_Text(475,150,Intentos_Rest);
end if;
end if;
Display_Text(21,122,Car_Intro);
end if;
end loop;
if Intentos

——————————————————————————————–

Espero que os haya gustado!!!! Saludos

  1. Miguel Angel Lopez dice:

    Que tal, esta padre, donde puedo conseguir el package ese de crear botones? esta padre saludos

  2. Itimag dice:

    Pronto lo colgaré en el blog.

    Un salu2

  3. Pablo dice:

    Hola me gustaría poder conseguir el paquete Ada_botenes, pone que lo poblicarás pero no he encontrado nada. Gracias

  4. Advent dice:

    Pronto lo colgaré en el blog. Ja ja

  5. ada dice:

    Hola, el link de ada_botones no lo encuentra

    lo volveras a colgar?

  1. There are no trackbacks for this post yet.

Leave a Reply