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:
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
Que tal, esta padre, donde puedo conseguir el package ese de crear botones? esta padre saludos
Pronto lo colgaré en el blog.
Un salu2
Hola me gustaría poder conseguir el paquete Ada_botenes, pone que lo poblicarás pero no he encontrado nada. Gracias
ups! Aquí lo tienes: http://www.itimag.net/up/programacion/ada/botones.zip
Pronto lo colgaré en el blog. Ja ja
Hola, el link de ada_botones no lo encuentra
lo volveras a colgar?