Descargar

Programación de un juego de damas en Visual Basic 2005 (página 5)

Enviado por jaimemontoya


Partes: 1, 2, 3, 4, 5, 6

If casilla(fila1 – 2, columna1 + 2).ocupada = False Then

MsgBox("Se debe seguir comiendo.", MsgBoxStyle.OkOnly, "Juego de Damas") 'Mensaje para indicar que se debe seguir comiendo.

casilla(fila1, columna1).ocupada = False

casilla(fila1 – 2, columna1 + 2).ocupada = True

casilla(fila1, columna1).jugador = 0

casilla(fila1 – 2, columna1 + 2).jugador = 2

sender.Top = casilla(fila1 – 2, columna1 + 2).Top + 12.5

sender.Left = casilla(fila1 – 2, columna1 + 2).Left + 12.5

comer1(fila1 – 1, columna1 + 1)

'Código para comer triple (si fuera posible).

posibilidad_soplar() 'Actualizar valores y determinar si hay posibilidad de comer una tercera vez (que le soplen la ficha si no come) para el Jugador 1, luego de haber comido doble.

If fila1 – 2 = soplarfila2 And columna1 + 2 = soplarcolumna2 And soplar2 = True Then 'Si la ficha del Jugador 2 que acaba de terminar de comer doble tiene posibilidad de seguir comiendo o de comer triple (pues las variables la tienen amenazada de ser soplada).

comertriple2(CType(sender, Panel)) 'Se llama al procedimiento para verificar si el Jugador 1 puede seguir comiendo (comer triple).

End If

'Condición para controlar si con la comida doble la ficha se llega a coronar.

If fila1 = 2 Then

fila1 = 0 'Cuando una ficha del Jugador 2 está en la fila 1 (contando filas de arriba hacia abajo), se corona.

End If

End If

End If

End If

End If

End If

End If

variablemensaje = 0 'Se reinicia en 0 esta variable, que sirve para que solamente se entre a uno de los If anteriores para comer doble, no a los dos, pues o se come a la izquierda o se come a la derecha, pues no se puede comer a ambos lados en un solo movimiento.

End Sub

Private Sub comertriple1(ByVal sender As Panel) 'Procedimiento para que cuando el Jugador 1 haya comido una segunda ficha (comido doble), evaluar si hay oportunidad para que esa ficha siga comiendo una tercera vez (comer triple).

Dim variablemensaje = 0

If soplarfila1 < 6 Then 'Ese 6 equivale a decir fila 7 (pues el subíndice 0 es la fila 1). Esta condición se hace porque desde la fila 7 o desde la fila 8 (contando filas de arriba hacia abajo) ya no puede comer el Jugador 1, entonces en las evaluaciones daría problema el código con los subíndices, pues buscaría posiciones que no existen.

If soplar1 = True Then

'Para Jugador 1, comer hacia su derecha (izquierda de la pantalla).

If soplarcolumna1 > 1 Then

If casilla(soplarfila1 + 1, soplarcolumna1 – 1).jugador = 2 Then

If casilla(soplarfila1 + 2, soplarcolumna1 – 2).ocupada = False Then

MsgBox("Se debe seguir comiendo.", MsgBoxStyle.OkOnly, "Juego de Damas") 'Mensaje para indicar que se debe seguir comiendo.

casilla(soplarfila1, soplarcolumna1).ocupada = False

casilla(soplarfila1 + 2, soplarcolumna1 – 2).ocupada = True

casilla(soplarfila1, soplarcolumna1).jugador = 0

casilla(soplarfila1 + 2, soplarcolumna1 – 2).jugador = 1

sender.Top = casilla(soplarfila1 + 2, soplarcolumna1 – 2).Top + 12.5

sender.Left = casilla(soplarfila1 + 2, soplarcolumna1 – 2).Left + 12.5

comer1(soplarfila1 + 1, soplarcolumna1 – 1)

variablemensaje += 1

'Condición para controlar si con la comida doble la ficha se llega a coronar.

If fila1 = 5 Then

fila1 = 7 'Cuando una ficha del Jugador 1 está en la fila 8 (contando filas de arriba hacia abajo), se corona.

End If

End If

End If

End If

'Para Jugador 1, comer hacia su izquierda (derecha de la pantalla).

If variablemensaje = 0 Then 'Para que si ya comió doble con el If anterior, que ya no entre a este If.

If soplarcolumna1 < 6 Then

If casilla(soplarfila1 + 1, soplarcolumna1 + 1).jugador = 2 Then

If casilla(soplarfila1 + 2, soplarcolumna1 + 2).ocupada = False Then

MsgBox("Se debe seguir comiendo.", MsgBoxStyle.OkOnly, "Juego de Damas") 'Mensaje para indicar que se debe seguir comiendo.

casilla(soplarfila1, soplarcolumna1).ocupada = False

casilla(soplarfila1 + 2, soplarcolumna1 + 2).ocupada = True

casilla(soplarfila1, soplarcolumna1).jugador = 0

casilla(soplarfila1 + 2, soplarcolumna1 + 2).jugador = 1

sender.Top = casilla(soplarfila1 + 2, soplarcolumna1 + 2).Top + 12.5

sender.Left = casilla(soplarfila1 + 2, soplarcolumna1 + 2).Left + 12.5

comer1(soplarfila1 + 1, soplarcolumna1 + 1)

'Condición para controlar si con la comida doble la ficha se llega a coronar.

If soplarfila1 = 5 Then

fila1 = 7 'Cuando una ficha del Jugador 1 está en la fila 8 (contando filas de arriba hacia abajo), se corona.

End If

End If

End If

End If

End If

End If

End If

variablemensaje = 0 'Se reinicia en 0 esta variable, que sirve para que solamente se entre a uno de los If anteriores para comer doble, no a los dos, pues o se come a la izquierda o se come a la derecha, pues no se puede comer a ambos lados en un solo movimiento.

End Sub

Private Sub comertriple2(ByVal sender As Panel) 'Procedimiento para que cuando el Jugador 2 haya comido una segunda ficha (comido doble), evaluar si hay oportunidad para que esa ficha siga comiendo una tercera vez (comer triple).

Dim variablemensaje = 0

If soplarfila2 > 1 Then 'Ese 1 equivale a decir fila 2 (pues el subíndice 0 es la fila 1). Esta condición se hace porque desde la fila 0 o desde la fila 1 (contando filas de arriba hacia abajo) ya no puede comer el Jugador 2, entonces en las evaluaciones daría problema el código con los subíndices, pues buscaría posiciones que no existen.

If soplar2 = True Then

'Para Jugador 2, comer hacia su izquierda (izquierda de la pantalla).

If soplarcolumna2 > 1 Then

If casilla(soplarfila2 – 1, soplarcolumna2 – 1).jugador = 1 Then

If casilla(soplarfila2 – 2, soplarcolumna2 – 2).ocupada = False Then

MsgBox("Se debe seguir comiendo.", MsgBoxStyle.OkOnly, "Juego de Damas") 'Mensaje para indicar que se debe seguir comiendo.

casilla(soplarfila2, soplarcolumna2).ocupada = False

casilla(soplarfila2 – 2, soplarcolumna2 – 2).ocupada = True

casilla(soplarfila2, soplarcolumna2).jugador = 0

casilla(soplarfila2 – 2, soplarcolumna2 – 2).jugador = 2

sender.Top = casilla(soplarfila2 – 2, soplarcolumna2 – 2).Top + 12.5

sender.Left = casilla(soplarfila2 – 2, soplarcolumna2 – 2).Left + 12.5

comer1(soplarfila2 – 1, soplarcolumna2 – 1)

variablemensaje += 1

'Condición para controlar si con la comida doble la ficha se llega a coronar.

If soplarfila2 = 2 Then

fila1 = 0 'Cuando una ficha del Jugador 2 está en la fila 1 (contando filas de arriba hacia abajo), se corona.

End If

'End If

End If

End If

End If

'Para Jugador 2, comer hacia su derecha (derecha de la pantalla).

If variablemensaje = 0 Then 'Para que si ya comió doble con el If anterior, que ya no entre a este If.

If soplarcolumna2 < 6 Then

If casilla(soplarfila2 – 1, soplarcolumna2 + 1).jugador = 1 Then

If casilla(soplarfila2 – 2, soplarcolumna2 + 2).ocupada = False Then

MsgBox("Se debe seguir comiendo.", MsgBoxStyle.OkOnly, "Juego de Damas") 'Mensaje para indicar que se debe seguir comiendo.

casilla(soplarfila2, soplarcolumna2).ocupada = False

casilla(soplarfila2 – 2, soplarcolumna2 + 2).ocupada = True

casilla(soplarfila2, soplarcolumna2).jugador = 0

casilla(soplarfila2 – 2, soplarcolumna2 + 2).jugador = 2

sender.Top = casilla(soplarfila2 – 2, soplarcolumna2 + 2).Top + 12.5

sender.Left = casilla(soplarfila2 – 2, soplarcolumna2 + 2).Left + 12.5

comer1(soplarfila2 – 1, soplarcolumna2 + 1)

'Condición para controlar si con la comida doble la ficha se llega a coronar.

If soplarfila2 = 2 Then

fila1 = 0 'Cuando una ficha del Jugador 2 está en la fila 1 (contando filas de arriba hacia abajo), se corona.

End If

'End If

End If

End If

'End If

End If

End If

End If

End If

variablemensaje = 0 'Se reinicia en 0 esta variable, que sirve para que solamente se entre a uno de los If anteriores para comer doble, no a los dos, pues o se come a la izquierda o se come a la derecha, pues no se puede comer a ambos lados en un solo movimiento.

End Sub

End Class

Form1.vb

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

TextBox1.Text = "Jugador" + Str(turno) 'Para que cuando se cargue el formulario, que intediatemente aparezca a quién le toca el turno de movimiento (que inicialmente será para el Jugador 1).

End Sub

Private Sub MOSTRARTABLEROToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MOSTRARTABLEROToolStripMenuItem.Click

Me.MOSTRARTABLEROToolStripMenuItem.Enabled = False 'Porque una vez mostrado el tablero, ya no se podrá pedir que se muestre otra vez.

Me.MOSTRARFICHASToolStripMenuItem.Enabled = True 'Lo que sí se podrá hacer es pedir que se muestren fichas.

Me.COLORDELTABLEROToolStripMenuItem.Enabled = True 'También se podrá dar color al tablero, una vez esté mostrado.

'Me.Panel1.Visible = True 'Se muestra el Panel1 (que muestra a quién le corresponde el movimiento).

Me.Panel2.Visible = True 'Se muestra el Panel2 (que muestra la posición a la que apunta el mouse en la matriz del tablero)

Me.Panel3.Visible = True 'Se muestra el Panel3 (que es para dibujar el tablero, fichas y donde se hacen las jugadas),

Me.GroupBox1.Visible = True 'Se muestra el GroupBox1 (que es para elegir los colores del tablero).

CASILLAS.color1 = Color.White 'Inicialmente la posición (0,0) del tablero, o la casilla superior izquierda, es de color blanco.

CASILLAS.color2 = Color.Black 'Inicialmente la posición (0,1) del tablero, la la casilla que está a la derecha de la casilla superior izquierda, es de color negro.

crear_cas() 'Se invoca el procedimiento público "crear_cas()", con lo cual se va a crear el tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

'Dependiendo de los colores que se tengan seleccionados, esos colores aparecerán escritos en los ComboBox.

Select Case CASILLAS.color1

Case Color.Blue

ComboBox1.Text = "Azul"

Case Color.White

ComboBox1.Text = "Blanco"

Case Color.Black

ComboBox1.Text = "Negro"

Case Color.Red

ComboBox1.Text = "Rojo"

Case Color.Green

ComboBox1.Text = "Verde"

End Select

Select Case CASILLAS.color2

Case Color.Blue

ComboBox2.Text = "Azul"

Case Color.White

ComboBox2.Text = "Blanco"

Case Color.Black

ComboBox2.Text = "Negro"

Case Color.Red

ComboBox2.Text = "Rojo"

Case Color.Green

ComboBox2.Text = "Verde"

End Select

End Sub

Private Sub MOSTRARFICHASToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MOSTRARFICHASToolStripMenuItem.Click

Me.MOSTRARFICHASToolStripMenuItem.Enabled = False 'Porque una vez mostradas las fichas, ya no se podrá pedir que se muestren otra vez.

Me.GroupBox2.Visible = True 'Para habilitar el cambio de fichas.

Me.GroupBox3.Visible = True 'Para habilitar la visualización del Jugador al que le corresponde el movimiento.

Me.ComboBox4.Text = "Pepsi"

Me.ComboBox3.Text = "Fanta"

crear_ficha() 'Se invoca el procedimiento público "crear_ficha()", con lo cual se van a crear las fichas sobre el tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

jugador1Label.Visible = True 'Para que ya con las fichas en el tablero, se muestre un Label que indique cuáles fichas le pertenecen al Jugador 1.

jugador2Label.Visible = True 'Para que ya con las fichas en el tablero, se muestre un Label que indique cuáles fichas le pertenecen al Jugador 2.

Me.txt_Jugador.Text = "Jugador 1"

Timer1.Enabled = True

Timer2.Enabled = True

End Sub

Private Sub SALIRToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SALIRToolStripMenuItem.Click

Me.Close() 'Equivale a escribir "End".

End Sub

Private Sub AzulToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AZULToolStripMenuItem.Click 'Procedimiento para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea azul.

If CASILLAS.color2 <> Color.Blue Then 'Si el color2 es diferente de Color.Blue, entonces el color1 se podrá poner Color.Blue. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.Blue 'A la variable color1 de la clase CASILLAS se le asigna el color azul al escribir "Color.Blue".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.Blue, no se va a permitir que el color1 sea también azul, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub BlancoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BLANCOToolStripMenuItem.Click 'Procedimiento para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea blanco.

If CASILLAS.color2 <> Color.White Then 'Si el color2 es diferente de Color.White, entonces el color1 se podrá poner Color.White. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.White 'A la variable color1 de la clase CASILLAS se le asigna el color blanco al escribir "Color.White".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.White, no se va a permitir que el color1 sea también blanco, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub NegroToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NEGROToolStripMenuItem.Click 'Procedimiento para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea negro.

If CASILLAS.color2 <> Color.Black Then 'Si el color2 es diferente de Color.Black, entonces el color1 se podrá poner Color.Black. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.Black 'A la variable color1 de la clase CASILLAS se le asigna el color negro al escribir "Color.Black".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.Black, no se va a permitir que el color1 sea también negro, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub RojoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ROJOToolStripMenuItem.Click 'Procedimiento para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea rojo.

If CASILLAS.color2 <> Color.Red Then 'Si el color2 es diferente de Color.Red, entonces el color1 se podrá poner Color.Red. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.Red 'A la variable color1 de la clase CASILLAS se le asigna el color rojo al escribir "Color.Red".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.Red, no se va a permitir que el color1 sea también rojo, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub VerdeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VERDEToolStripMenuItem.Click 'Procedimiento para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea verde.

If CASILLAS.color2 <> Color.Green Then 'Si el color2 es diferente de Color.Green, entonces el color1 se podrá poner Color.Green. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.Green 'A la variable color1 de la clase CASILLAS se le asigna el color verde al escribir "Color.Green".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.Green, no se va a permitir que el color1 sea también verde, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub AzulToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AZULToolStripMenuItem1.Click 'Procedimiento para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea azul.

If CASILLAS.color1 <> Color.Blue Then 'Si el color1 es diferente de Color.Blue, entonces el color2 se podrá poner Color.Blue. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.Blue 'A la variable color2 de la clase CASILLAS se le asigna el color azul al escribir "Color.Blue".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.Blue, no se va a permitir que el color2 sea también azul, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub BlancoToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BLANCOToolStripMenuItem1.Click 'Procedimiento para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea blanco.

If CASILLAS.color1 <> Color.White Then 'Si el color1 es diferente de Color.White, entonces el color2 se podrá poner Color.White. De lo contrario no porque no estará bien que queden del mismo color tanto el color2 como el color1 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.White 'A la variable color2 de la clase CASILLAS se le asigna el color blanco al escribir "Color.White".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color2 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.White, no se va a permitir que el color2 sea también blanco, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub NegroToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NEGROToolStripMenuItem1.Click 'Procedimiento para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea negro.

If CASILLAS.color1 <> Color.Black Then 'Si el color1 es diferente de Color.Black, entonces el color2 se podrá poner Color.Black. De lo contrario no porque no estará bien que queden del mismo color tanto el color2 como el color1 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.Black 'A la variable color2 de la clase CASILLAS se le asigna el color negro al escribir "Color.Black".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color2 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.Black, no se va a permitir que el color2 sea también negro, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub RojoToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ROJOToolStripMenuItem1.Click 'Procedimiento para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea rojo.

If CASILLAS.color1 <> Color.Red Then 'Si el color1 es diferente de Color.Red, entonces el color2 se podrá poner Color.Red. De lo contrario no porque no estará bien que queden del mismo color tanto el color2 como el color1 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.Red 'A la variable color2 de la clase CASILLAS se le asigna el color rojo al escribir "Color.Red".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color2 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.Red, no se va a permitir que el color2 sea también rojo, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

Private Sub VerdeToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VERDEToolStripMenuItem1.Click 'Procedimiento para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea verde.

If CASILLAS.color1 <> Color.Green Then 'Si el color1 es diferente de Color.Green, entonces el color2 se podrá poner Color.Green. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color1 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.Green 'A la variable color2 de la clase CASILLAS se le asigna el color verde al escribir "Color.Green".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color2 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.Green, no se va a permitir que el color2 sea también verde, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Sub

'Public Sub New()

' ' Llamada necesaria para el Diseñador de Windows Forms.

' InitializeComponent()

' ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

'End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

Select Case ComboBox1.SelectedItem

Case "Azul" 'Para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea azul.

If CASILLAS.color2 <> Color.Blue Then 'Si el color2 es diferente de Color.Blue, entonces el color1 se podrá poner Color.Blue. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.Blue 'A la variable color1 de la clase CASILLAS se le asigna el color azul al escribir "Color.Blue".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.Blue, no se va a permitir que el color1 sea también azul, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

Case "Blanco" 'Para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea blanco.

If CASILLAS.color2 <> Color.White Then 'Si el color2 es diferente de Color.White, entonces el color1 se podrá poner Color.White. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.White 'A la variable color1 de la clase CASILLAS se le asigna el color blanco al escribir "Color.White".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.White, no se va a permitir que el color1 sea también blanco, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

Case "Negro" 'Para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea negro.

If CASILLAS.color2 <> Color.Black Then 'Si el color2 es diferente de Color.Black, entonces el color1 se podrá poner Color.Black. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.Black 'A la variable color1 de la clase CASILLAS se le asigna el color negro al escribir "Color.Black".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.Black, no se va a permitir que el color1 sea también negro, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

Case "Rojo" 'Para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea rojo.

If CASILLAS.color2 <> Color.Red Then 'Si el color2 es diferente de Color.Red, entonces el color1 se podrá poner Color.Red. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.Red 'A la variable color1 de la clase CASILLAS se le asigna el color rojo al escribir "Color.Red".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.Red, no se va a permitir que el color1 sea también rojo, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

Case "Verde" 'Para que el color1 de las casillas (casilla con posición (0,0) por ejemplo) sea verde.

If CASILLAS.color2 <> Color.Green Then 'Si el color2 es diferente de Color.Green, entonces el color1 se podrá poner Color.Green. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color1 = Color.Green 'A la variable color1 de la clase CASILLAS se le asigna el color verde al escribir "Color.Green".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color2 es Color.Green, no se va a permitir que el color1 sea también verde, entonces se manda el color respectivo.

MsgBox("El color 1 del tablero no puede ser igual que el color 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Select

'Dependiendo de los colores que se tengan seleccionados, esos colores aparecerán escritos en los ComboBox.

Select Case CASILLAS.color1

Case Color.Blue

ComboBox1.Text = "Azul"

Case Color.White

ComboBox1.Text = "Blanco"

Case Color.Black

ComboBox1.Text = "Negro"

Case Color.Red

ComboBox1.Text = "Rojo"

Case Color.Green

ComboBox1.Text = "Verde"

End Select

Select Case CASILLAS.color2

Case Color.Blue

ComboBox2.Text = "Azul"

Case Color.White

ComboBox2.Text = "Blanco"

Case Color.Black

ComboBox2.Text = "Negro"

Case Color.Red

ComboBox2.Text = "Rojo"

Case Color.Green

ComboBox2.Text = "Verde"

End Select

End Sub

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

Select Case ComboBox2.SelectedItem

Case "Azul" 'Para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea azul.

If CASILLAS.color1 <> Color.Blue Then 'Si el color1 es diferente de Color.Blue, entonces el color2 se podrá poner Color.Blue. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color2 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.Blue 'A la variable color2 de la clase CASILLAS se le asigna el color azul al escribir "Color.Blue".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color1 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.Blue, no se va a permitir que el color2 sea también azul, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

Case "Blanco" 'Para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea blanco.

If CASILLAS.color1 <> Color.White Then 'Si el color1 es diferente de Color.White, entonces el color2 se podrá poner Color.White. De lo contrario no porque no estará bien que queden del mismo color tanto el color2 como el color1 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.White 'A la variable color2 de la clase CASILLAS se le asigna el color blanco al escribir "Color.White".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color2 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.White, no se va a permitir que el color2 sea también blanco, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

Case "Negro" 'Para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea negro.

If CASILLAS.color1 <> Color.Black Then 'Si el color1 es diferente de Color.Black, entonces el color2 se podrá poner Color.Black. De lo contrario no porque no estará bien que queden del mismo color tanto el color2 como el color1 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.Black 'A la variable color2 de la clase CASILLAS se le asigna el color negro al escribir "Color.Black".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color2 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.Black, no se va a permitir que el color2 sea también negro, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

Case "Rojo" 'Para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea rojo.

If CASILLAS.color1 <> Color.Red Then 'Si el color1 es diferente de Color.Red, entonces el color2 se podrá poner Color.Red. De lo contrario no porque no estará bien que queden del mismo color tanto el color2 como el color1 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.Red 'A la variable color2 de la clase CASILLAS se le asigna el color rojo al escribir "Color.Red".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color2 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.Red, no se va a permitir que el color2 sea también rojo, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

Case "Verde" 'Para que el color2 de las casillas (casilla con posición (0,0) por ejemplo) sea verde.

If CASILLAS.color1 <> Color.Green Then 'Si el color1 es diferente de Color.Green, entonces el color2 se podrá poner Color.Green. De lo contrario no porque no estará bien que queden del mismo color tanto el color1 como el color1 porque se va a ver todo el tablero de un solo color.

CASILLAS.color2 = Color.Green 'A la variable color2 de la clase CASILLAS se le asigna el color verde al escribir "Color.Green".

cambiar_color_casillas() 'Se invoca el procedimiento público "cambiar_color_casillas()", con lo cual se va a cambiar el color2 del tablero tablero. Este procedimiento se encuentra en el módulo llamado "PRINCIPAL".

Else 'Si el color1 es Color.Green, no se va a permitir que el color2 sea también verde, entonces se manda el color respectivo.

MsgBox("El color 2 del tablero no puede ser igual que el color 1.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End Select

'Dependiendo de los colores que se tengan seleccionados, esos colores aparecerán escritos en los ComboBox.

Select Case CASILLAS.color1

Case Color.Blue

ComboBox1.Text = "Azul"

Case Color.White

ComboBox1.Text = "Blanco"

Case Color.Black

ComboBox1.Text = "Negro"

Case Color.Red

ComboBox1.Text = "Rojo"

Case Color.Green

ComboBox1.Text = "Verde"

End Select

Select Case CASILLAS.color2

Case Color.Blue

ComboBox2.Text = "Azul"

Case Color.White

ComboBox2.Text = "Blanco"

Case Color.Black

ComboBox2.Text = "Negro"

Case Color.Red

ComboBox2.Text = "Rojo"

Case Color.Green

ComboBox2.Text = "Verde"

End Select

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim mensaje As Integer 'Variable que almacenará el valor devuelto por la función MsgBox().

mensaje = MsgBox("Elegir fichas requiere terminar el juego actual. ¿Desea hacerlo?", vbYesNo, "Juego de Damas")

If mensaje = 6 Then 'La función MsgBox devuelve un valor, el cual ha sido almacenado en la variable "mensaje". Los valores devueltos pueden ser 1, 2, 3, 4, 5, 6 o 7. El valor 6 significa que se ha hecho clic en el botón Yes.

'Las siguientes 2 líneas son para que al reiniciar un juego, el primer turno sea para el Jugador 1.

TextBox1.Text = "Jugador 1"

turno = 1

ficha = New FICHAS 'Se inicializa un objeto de la clase FICHAS, el cual va a ser referenciado o utilizado mediante la variable "ficha". Esto se hace porque va a ser necesario usar el procedimiento comer1(indice1, indice2), el cual pertenece a la clase FICHAS.

For f = 0 To 7 '8 iteraciones, correspondientes a las 8 filas.

For c = 0 To 7 '8 iteraciones, correspondientes a las 8 columnas.

ficha.comer1(f, c) 'Se está utilizando el mismo procedimiento que sirve para comer fichas. Esto funcionará como si se comieran fichas en las 64 casillas (por eso los 2 ciclos For anidados), de manera que van a quedar vacías o sin ninguna ficha en el tablero.

casilla(f, c).jugador = 0 'Para que al reiniciar un juego, que primeramente todas las casillas se pongan como no pertenecientes a ningún jugador (a la ficha de ningún jugador), antes de crear las nuevas fichas sobre el tablero.

casilla(f, c).jugador = False 'Para que al reiniciar un juego, que primeramente todas las casillas se pongan como desocupadas o sin ninguna ficha sobre ellas.

soplar1 = False 'Para que no se tenga ninguna ficha pendiente por soplar al reiniciar un juego.

soplar2 = False 'Para que no se tenga ninguna ficha pendiente por soplar al reiniciar un juego.

Next

Next

'Con los 2 ciclos For anteriores (las 5 líneas de arriba) ya se tienen las 64 casillas sin fichas (el tablero sin fichas).

If ComboBox4.Text <> ComboBox3.SelectedItem Then 'Si se ha seleccionado una ficha diferente para cada jugador.

crear_ficha() 'Esta función se encuentra en el módulo PRINCIPAL, y lo que hace es crear las 12 fichas de cada jugador en las posiciones como para iniciar un nuevo juego.

Else 'Si se ha seleccionado la misma ficha para ambos jugadores.

MsgBox("La ficha del jugador 1 no puede ser igual que la del jugador 2.", MsgBoxStyle.OkOnly, "Juego de Damas")

End If

End If

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

posibilidad_soplar() 'Debido a que el Timer1 tiene la propiedad Interval en 10, el procedimiento posibilidad_soplar() se estará ejecutando 100 veces por segundo (pues un Interval de 1000 es 1 segundo y un Interval de 10 son 10 milisegundos o 0.01 segundos), de modo que 100 veces por segundo se estará verificando si han posibilidad de comer por parte de cualquiera de los jugadores, y con ello se sabrá si hay posibilidad de soplar o no.

End Sub

Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

'Para reiniciar las variables que dan a conocer si el Jugador 1 o el Jugador 2 tienen posibilidad de comer (y por lo tanto se les soplan las fichas si no comen). Al hacer esto no van a quedar en verdadero por jugadas anteriores, sino que casa 0.5 segundos (pues el Interval que se le ha programado al Timer2 es de 500) se van a estar ejecutando estas 2 líneas de código, mientras que el Timer1 se ejecutará 100 veces por segundo (pues se le ha programado la propiedad Interval = 10). Entonces continuamente se estará verificando si hay posibilidad de comer (y por tanto de soplar), y si no hubiese, casa medio minuto las variables se regresan a False y no quedan guardando True de jugadas anteriores.

soplar1 = False

soplar2 = False

End Sub

Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click

AyudaForm.Show() 'Muestra el formulario de ayuda.

End Sub

End Class

PRINCIPAL.vb

Module PRINCIPAL

'Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer) As Integer

'Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer

'Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cX As Integer, ByVal cY As Integer, ByVal wFlags As Integer) As Integer

'Const GWL_STYLE As Integer = (-16)

'Const WS_THICKFRAME As Integer = &H40000 ' Con borde redimensionable

'Const SWP_DRAWFRAME As Integer = &H20

'Const SWP_NOMOVE As Integer = &H2

'Const SWP_NOSIZE As Integer = &H1

'Const SWP_NOZORDER As Integer = &H4

Public casilla(7, 7) As CASILLAS 'Matriz que va a tener 64 elementos, correspondientes a cada una de las casillas del tablero.

Public f, c As Integer 'Variables públicas que hacen referencia a filas y columnas.

Public posx, posy As Integer 'Variables públicas que hacen referencia a las posiciones en el eje x y en el eje y.

Public ficha As FICHAS

Public corona As CORONAS

Public cposx, cposy As Integer

Public turno As Integer = 1

Public Jugador1(11) As Panel

Public Jugador2(11) As Panel

Public soplar1 As Boolean 'Para saber si se debe soplar o no una ficha al Jugador 1.

'Inicialmente se ponen las siguientes 2 variables en una posición en la que nunca podría haber una ficha: (0, 1), fila 0 y columna 1. Con esto no se pueden soplar piezas equivocadas inicialmente.

Public soplarfila1 As Integer = 0 'Para saber qué posición en las filas se le debe soplar al Jugador 1.

Public soplarcolumna1 As Integer = 1 'Para saber qué posición en las columnas se le debe soplar al Jugador 1.

Public soplar2 As Boolean 'Para saber si se debe soplar o no una ficha al Jugador 2.

Partes: 1, 2, 3, 4, 5, 6
 Página anterior Volver al principio del trabajoPágina siguiente