En este post veremos como crear el juego del ahorcado en visual basic 6.0.
Elementos del formulario.
Como pueden observar en esta ventana tenemos tres frames visibles: ingreso, info, errores y uno que esta oculto.
* Dentro del frame ingreso tenemos un textbox y un boton. En el textbox que esta dentro del frame ingreso tendremos que escribir una palabra, los limites de la palabra son de de: 4 dígitos como mínimo y 13 dígitos como máximo (Solo se admiten letras MAYUSCULAS). Una vez ingresada la palabra, presionamos jugar.
* Dentro del frame info tenemos dos labels y tenemos un botón oculto. Los labels los usamos para mostrar texto informativo y el botón para reiniciar el juego (El botón nos aparecerá cuando hayamos perdido o ganado el juego).
* Dentro del frame errores tenemos un dibujo en el cual se irán añadiendo las partes del muñeco cada vez que ingresemos una letra incorrecta.
* El cuarto frame se encuentra ubicado detrás del frame ingreso, en este frame tenemos una matriz de de labels con index de 0 a 13.El frame palabra sera visible una vez que ingresemos una palabra en el textbox del frame ingreso y presionemos jugar.
Al ejecutar el programa se nos abrirá la siguiente ventana.
En uno de los dos labels (Estado) ubicados en el frame info nos aparecerá el siguiente mensaje "Ingrese una palabra y presione Jugar".Para que nos aparezca este mensaje escribimos dentro de Private Sub Form_Load() lo siguiente.
Al presionar el botón Jugar que tiene por nombre "start" ocurrirá lo siguiente.
Private Sub start_Click()For I = 0 To 13J(I).Text = ""Next IPA = palabra.TextCANT = Len(PA)If (PA = "") ThenEstado.Caption = "Ingrese una palabra."ElseIf (CANT < 4) ThenEstado.Caption = "Palabra muy corta"ElseIf CANT > 13 ThenEstado.Caption = "Superaste el numero de letras permitidas"CANT = 0ElseinfoNdigit.Caption = "La palabra ingresada tiene " & CANT & " dígitos"ilp.Visible = Falsepbra.Visible = TrueEstado.Caption = "Comienza el juego"juego.Enabled = TrueEnd IfEnd IfEnd Sub
Con el primer ciclo for limpiamos todos los labels, esto lo podemos hacer gracias a que estamos utilizando una matriz de controles.
La variable PA, va a almacenar la palabra que ingresemos en el textbox del frame ingreso. Para determinar el numero de caracteres que tiene la palabra ingresada utilizamos la función Len, la función len devuelve un Long que contiene el número de caracteres en una cadena o el número de bytes necesarios para almacenar una variable, CANT = Len(PA). Almacenamos esos datos en la variable "CANT".
Verificamos, si PA = "", si no hay ninguna palabra escrita en el textbox, imprimimos en el label lo siguiente Estado.Caption = "Ingrese una palabra.". Caso contrario.
Verificamos cuantos caracteres tiene esa palabra, si la palabra ingresada tiene menos de cuatro caracteres imprimimos el mensaje Estado.Caption = "Palabra muy corta", si la palabra tiene mas de 13 caracteres, escribimos lo siguiente Estado.Caption = "Superaste el numero de letras permitidas".
Si ninguna de las dos opciones anteriores es verdadera, entonces:
* Imprimimos en el segundo label del frame info lo siguiente infoNdigit.Caption = "La palabra ingresada tiene " & CANT & " dígitos", con esto sabremos el numero de letras que tiene la palabra ingresada. Como yo puse la palabra MESA, me aparecerá: "La palabra ingresada tiene 4 dígitos".
* Ocultamos el frame info que tiene por nombre "ilp" ilp.Visible = False y mostramos el frame palabra que tiene por nombre "pbra" pbra.Visible = True.
* En el label estado imprimimos: Estado.Caption = "Comienza el juego"
* Activamos un temporizador juego.Enabled = True
Temporizador juego.
Dentro del temporizador juego tenemos los siguiente:
Private Sub juego_Timer()I = 0N = 0Do While I < CANT + 100LE = InputBox("INGRESE UNA LETRA, RECUERDE QUE SOLO SE ADMITEN LETRAS MAYUSCULAS.", "Ingreso", "", 0, 0)XX = 0For B = 1 To CANTLE2 = Mid(PA, B, 1)If LE = LE2 ThenEstado.Caption = "Letra correcta: " & LESelect Case BCase 1J(0).Text = LECase 2J(1).Text = LECase 3J(2).Text = LECase 4J(3).Text = LECase 5J(4).Text = LECase 6J(5).Text = LECase 7J(6).Text = LECase 8J(7).Text = LECase 9J(8).Text = LECase 10J(9).Text = LECase 11J(10).Text = LECase 12J(11).Text = LECase 13J(12).Text = LECase 14J(13).Text = LEEnd SelectXX = 1End IfNext BIf XX = 0 ThenN = N + 1Estado.Caption = "Letra incorrecta: " & LEEnd IfSelect Case NCase 1N1.Visible = TrueN11.Visible = TrueCase 2N2.Visible = TrueCase 3N6.Visible = TrueCase 4N7.Visible = TrueCase 5N8.Visible = TrueCase 6N9.Visible = TrueCase 7N10.Visible = TrueEnd SelectG = 0For P = 0 To CANT - 1If J(P) <> "" ThenG = G + 1End IfNext PIf G = CANT Thenjuego.Enabled = FalseMsgBox "Ganaste"Estado.Caption = " "PA = ""I = CANT + 100vj.Visible = TrueEnd IfIf N = 8 Thenjuego.Enabled = FalseMsgBox "Perdiste"Estado.Caption = "PALABRA INGRESADA: " & PAPA = ""I = CANT + 100vj.Visible = TrueEnd IfI = I + 1LoopEnd Sub
Abrimos un Do While, dento de este do while tenemos lo siguiente:
* Creamos un InputBox y lo ubicamos en la posición x (left) = 0 y y (top)= 0 aquí tendemos que ingresar las letras que creamos que puede tener la palabra que ingresamos previamente. Debemos hacerlo letra por letra. Estos valores se guardaran en la variable LE.
* Utilizamos la variable XX para comprobar. Si no se ingreso una letra o si la letra ingresada no coincide con alguna letra de la palabra ingresada, entonces XX vale 0.
* Creamos un ciclo for con una variable B este ciclo ira de 0 al numero de caracteres que contenga la palabra previamente ingresada.
* A continuación utilizamos la función "mid", la función mid devuelve una variante ( cadena ) que contiene un número específico de caracteres de una cadena. Los valores que nos entrega la función mid los guardamos en la variable LE2.
* Comparamos LE y LE2 si los valores son iguales: Imprimimos en el label estado, Estado.Caption = "Letra correcta: " & LE, abrimos un select case en cada caso tenemos este código J().Text = LE, buscamos que posición o posiciones coinciden con la letra ingresada e imprimimos la letra en el label correspondiente. Ejemplo:
Yo ingrese la palabra MESA, ingrese en el ImputBoxla letra E. Como la letra E si coincide es decir si esta incluida en la palabra MESA entonces, buscamos su posición. E esta en la posición 2 entonces imprimimos en la posición (1) de la matriz de controles del label "J " la letra E.
Case 2
J(1).Text = LE
J(1).Text = LE
* Salimos del select case y le damos a la variable XX el valor de 1.
* A continuación tenemos una condición if XX = 0 then, esta condición se cumple en el caso de que ingresemos una letra incorrecta. Entonces, si esta condición es verdadera ocurre lo siguiente:
* Sumamos la variable N e imprimimos en el label estado: Estado.Caption = "Letra incorrecta: " & LE.
* Abrimos un select case para la letra N. Cada vez que ingresemos una letra incorrecta ira apareciendo una parte del muñeco.
* Abrimos otro ciclo for con la variable P que ira de 0 hasta el numero de letras que contenga la palabra previamente ingresada. Dentro de este ciclo for tenemos lo siguiente.
* Si If J(P) <> " " Then, Quiere decir que: si tenemos una letra en cualquiera de las posiciones de la matriz de controles que creamos con los labels , en otras palabras si adivinamos una letra de la palabra ingresada , se sumara una variable G = G + 1.
* Cuando la variable G sea igual al numero de caracteres (letras) de la palabra ingresada If G =CANT Then, quiere decir que adivinamos la palabra, entonces como adivinamos la palabra hacemos lo siguiente:
1.- Desactivamos el temporizador, juego.Enabled = False.
2.- En un MsgBox escribimos ganaste, MsgBox "Ganaste".
3.- impiamos el label estado. Estado.Caption = " "
4.- Limpiamos la variable PA. PA = ""
5.- Esta condicion es para llegar al limite del do while. I = CANT + 100
6.- En el formulario info hacemos visible el botón "Volver a jugar". vj.Visible = True
* Si la variable N = 8 (Se formo todo el muñeco), Perdimos y sucede lo siguiente.
1.- Desactivamos el temporizador, juego.Enabled = False.
2.- En un MsgBox escribimos perdiste, MsgBox "Perdiste".
3.- limpiamos el label estado. Estado.Caption = "PALABRA INGRESADA: " & PA.
4.- Limpiamos la variable PA. PA = "".
5.- Esta condición es para llegar al limite del do while. I = CANT + 100.
6.- En el formulario info hacemos visible el botón "Volver a jugar". vj.Visible = True.
* Sumamos la variable. I I = I + 1
* Cerramos el ciclo DoWhile. Loop
Al presionar el botón "Volver a jugar" que tiene por nombre "vj" ocurrirá lo siguiente.
Private Sub vj_Click()palabra.Text = ""lp.Visible = Truevj.Visible = FalseEstado.Caption = "Ingrese una palabra y presione Jugar"infoNdigit.Caption = ""N = 0N1.Visible = FalseN2.Visible = FalseN3.Visible = FalseN4.Visible = FalseN5.Visible = FalseN6.Visible = FalseN7.Visible = FalseN8.Visible = FalseN9.Visible = FalseN10.Visible = FalseN11.Visible = FalseEnd Sub
* Limpiamos el textbox Palabra.
* Hacemos visible el frame "Ingreso".
* Ocultamos el frame "Palabra".
* Imprimimos un mensaje en el label estado Estado.Caption = "Ingrese una palabra y presione Jugar".
* Limpiamos el label infoNdigit.Caption = "".
* Enceramos la variable N y ocultamos las partes del muñeco.
Publicar un comentario