Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

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 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter