Está en la página 1de 8

MasterMind en Visual Basic 6.

Para iniciar definiremos como se juega. Mastermind consiste en adivinar


una combinación de 4 colores (no repetidos) en 10 intentos, en cada intento
podemos escoger 4 colores entre 7 colores y como pista nos dirán que
colores son correctos en la posición correcta y cuales están correctos en
distinta posición.

Objetos utilizados:

Estos son los objetos utilizados y algunas de las propiedades que se han
cambiado:

• Form1
o BorderStyle = 0
o StartUpPosition=1
• Frminicio
• Frmjuego
o Visible = False
• cmbjugar
• cmbsalir
• cmbnuevo
• cmbmenu
• cmbsalirj
• cmb0 (Array)
• Shape1 (Array)
o BackStyle=1
o Shape = 3
• Shape2 (Array)
o BackStyle=1
o Shape = 3
• Shape4 (Array)
o BackStyle=1
o Shape = 3

El juego se vera de la siguiente manera:

Con Label se ponen los textos requeridos para dar información de


juego, también se pueden poner imágenes.

Se definirán los pasos a seguir para ejecutar el Mastermind:

Se tienen 2 contenedores Frminicio y Frmjuego ambos del mismo


tamaño y en la misma posición, en Frminicio se encuentran los
objetos que dan inicio al juego y Frmjuego el juego, al iniciar
Frminicio es visible y Frmjuego invisible y se cambian las propiedades
al iniciar el juego, de esta manera se evita utilizar varios formularios.

Se dara click en el boton Jugar, se seleccionaran 4 colores aleatorios


no repetidos y se ubican en Shape2 y saldra el tablero de juego en el
cual se debe dar click en los botones de colores, cada boton cambia
de enable = true a false ya que la combinación no tiene números
repetidos, los numero se reflejan en Shape1 y al seleccionar 4 colores
se validan las pistas que se mostraran cambiando el color en el
shape4, negros para los colores en correctos en posición correcta
(con nombre de famas) y lo que solo son correctos en posición
distinta (llamados puntos) de color gris.

Si se terminan las oportunidades y no se adivina la combinación se


pierde el juego.

Se ubican 3 botones para iniciar un nuevo juego otro para ir al menu


y el ultimo para salir.

Las variables a utilizar son:

Dim colorsecreto(3) As Integer ‘ guarda la combinacion a adivinar


Dim combinaciones(3) As Integer ‘ guarda las cominaciones dadas
por el jugador

Dim i As Byte ‘ se utilza para obtener la combinacion secreta


Dim numero As Byte ‘ es numero aleatorio que sera la combinacion
de colores

Dim turnos As Byte ‘ cotnabiliza los colores en este caso 4 para


validar con la combinacion secreta

Dim puntos As Byte ‘ cantidad de colores correctos en posición


distinta.

Dim famas As Byte ‘ cotnabiliza los colores correctos en posición


correcta.

Dim total As Byte ‘ total de colores asignados por el jugador en este


caso 40

Dim totalpistas As Byte ‘ Cantidad de pistas ya sean puntos o famas

Dim gano As Byte ´se utiliza para saber cuando se ha ganado el


juego.

Primero se dara color café a algunos objetos,

Private Sub Form_Load()


Me.frmjuego.BackColor = RGB(160, 108, 0)
Me.Shape5.BackColor = RGB(160, 108, 0)
End Sub
Al dar click en Jugar,

Private Sub cmbjugar_Click()


Me.frminicio.Visible = False
Me.frmjuego.Visible = True
Jugar ‘ procedimiento
End Sub

Sub jugar()
Combinación ‘ se determina la combinación secreta
‘ se inicializan variables
turnos = 0
total = 0
totalpistas = 0
gano = 0
Me.Shape5.Visible = True ‘ se oculta los colores de la combinación
‘ se limpian los shape para el nuevo juego
For j = 0 To 39
Me.Shape1(j).BackColor = &H80000004
Me.Shape4(j).BackColor = &H80000004
Next j
For j = 0 To 6
Me.cmb0(j).Enabled = True
Next j
End Sub

Sub combinacion()
‘ se llena de 9 para validar numeros repetidos
For j = 0 To 3
colorsecreto(j) = 9
Next j
For i = 0 To 3
Aleatorio ‘ procedimiento
Next i
End Sub

Sub aleatorio()
Randomize ‘ permite aleatorios
numero = (Rnd * 6) ‘ seleccinar numero aleatirio
validar ‘ procedimiento
End Sub

Sub validar() ‘ se valida que no se repitan numero y son asignados


For j = 0 To 3
If numero = colorsecreto(j) Then ‘ si son iguales se asigna fin
en 0 de lo contrario en 1.
fin = 0
j = 3 , se termina el ciclo
Else
fin = 1
End If
Next j
If fin = 0 Then ‘ si fin es 0 se llama el procedimiento y se busca
otro aleatorio para que no se repitan colores
aleatorio
Else ‘ si es diferente se asigna el colores correspondiente
colorsecreto(i) = numero
Select Case numero
Case 0
Shape2(i).BackColor = &HFF&
Case 1
Shape2(i).BackColor = &HFF0000
Case 2
Shape2(i).BackColor = &HFFFF&
Case 3
Shape2(i).BackColor = &H80FF&
Case 4
Shape2(i).BackColor = &HFFFFFF
Case 5
Shape2(i).BackColor = &H0&
Case 6
Shape2(i).BackColor = &HFF00&
End Select
End If
End Sub

Al presionar cada uno de los colores,

Private Sub cmb0_Click(Index As Integer)


combinaciones(turnos) = Index ‘ se asgna un numero para identificar
cada color
Me.Shape1(total).BackColor = Me.cmb0(Index).BackColor
Me.cmb0(Index).Enabled = False
If turnos = 3 Then ‘ al seleccionar los 3 colores se valida los puntos y
las famas y se inicial variables para seguir buscando la combinacion
valida
limpia
Else
'guardar combinacion a validar
turnos = turnos + 1
End If
If total = 39 Then ‘ se terminan los intentos
If gano = 1 Then ‘ se determina si gano o perdio en el ultimo
intento
Me.Shape5.Visible = False
MsgBox "Excelente, descubriste la combinacion."
Nuevojuego ‘ si se desea volver a jugar
Else
Me.Shape5.Visible = False
MsgBox "No has podido descubrir la combinacion."
nuevojuego
End If
Else
If gano = 1 Then ‘ se determina si gano o perdio en intentos
distintos al ultimo
Me.Shape5.Visible = False
MsgBox "Excelente, descubriste la combinacion."
nuevojuego
Else
total = total + 1
End If
End If
End Sub

Sub limpia()
For j = 0 To 6
Me.cmb0(j).Enabled = True
Next j
turnos = 0
puntos = 0
famas = 0
End Sub

Sub valida()
For j = 0 To 3
For t = 0 To 3
If combinaciones(j) = colorsecreto(t) Then
If j = t Then
famas = famas + 1 'igual y en la misma posion
t=3
Else
puntos = puntos + 1 'igual
t=3
End If
Else
'no es igual
End If
Next t
Next j
For j = 1 To famas
Me.Shape4(totalpistas).BackColor = &H0&
totalpistas = totalpistas + 1
Next j
‘ se asignan famas puntos
If famas = 4 Then
gano = 1
Else
For j = famas + 1 To puntos + famas
Me.Shape4(totalpistas).BackColor = &H404040
totalpistas = totalpistas + 1
Next j
If puntos = 4 Then
'no mas
Else
For j = famas + puntos + 1 To 4
Me.Shape4(totalpistas).BackColor = &H80000004
totalpistas = totalpistas + 1
Next j
End If
End If
End Sub
Otros botones,

Private Sub cmbjugar_Click()


Me.frminicio.Visible = False
Me.frmjuego.Visible = True
jugar
End Sub

Private Sub cmbmenu_Click()


Me.frminicio.Visible = True
Me.frmjuego.Visible = False
End Sub

Private Sub cmbnuevo_Click()


Nuevojuego ‘ procedimiento
End Sub

Private Sub cmbsalir_Click()


salir
End Sub

Private Sub cmbsalirj_Click()


salir
End Sub

Procedimientos preguntas del juego,

Sub salir()
menzaje = MsgBox("Desea salir de juego ", vbYesNo, "MasterMind")
If menzaje = 6 Then
End
Else

End If
End Sub

Sub nuevojuego()
menzaje = MsgBox("Desea volver a jugar ", vbYesNo, "MasterMind")
If menzaje = 6 Then
jugar
Else
End
End If
End Sub

Los colores a utilizar son,

Color valor numero asignado


Rojo &HFF& 0
Azul &HFF0000 1
Amarillo &HFFFF& 2
Naranja &H80FF& 3
Blanco &HFFFFFF 4
Negro &H0& 5
Verde &HFF00& 6.

PD, la lógica empleada para hacer este juego no es la mas optima ni


la única, también puede ser modifica según el gusto de cada lector.