Descargar

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

Enviado por jaimemontoya


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

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

Public soplarfila2 As Integer = 7 'Para saber qué posición en las filas se le debe soplar al Jugador 2.

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

Public Sub crear_cas() 'Este procedimiento sirve para crear el tablero con las 64 casillas en colores blanco y negro.

posy = 0 'Variable para determinar la posición de las columnas o eje x (dado en pixeles).

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

posx = 0 'Variable para determinar la posición de las filas o el eje x (dado en pixeles).

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

casilla(f, c) = New CASILLAS 'La variable casilla(f, c) es una instancia de la clase CASILLAS (es un objeto).

casilla(f, c).Size = New Size(75, 75) 'La propiedad Size funciona gracias a que la variable matriz casilla(7, 7) es de tipo CASILLAS, y la clase CASILLAS hereda la clase Panel, y la clase Panel tiene la propiedad Size, por lo tanto la clase Panel le hereda a la clase CASILLAS la propiedad Size. "(75, 75)" son los pixeles, que va a tener 75 pixeles de ancho y 75 pixeles de alto, pues se quiere que sea cuadrado. El Panel3 (que se encuentra en la misma ubicación en la que se va a dibujar el tablero y donde va a estar el escenario para jugar) es cuadrado y mide 620*620 pixeles, entonces tomando en cuenta que cada cuadrito mide 75*75 pixeles, se van a tener 64 cuadritos en total que van a caber, 8 filas y 8 columnas de cuadritos. Pero (620/8)=77.5 pixeles, pero como cada cuadrito tiene 75 pixeles, entonces 75*8=600 pixeles, entonces sobran 20 pixeles (pues el Panel3 no mide 600 pixeles sino que 620 pixeles), y esos 20 pixeles se van a usar para márgenes, que se distribuirían en 10 pixeles de margen al lado izquierdo, 10 al lado derecho, 10 arriba y 10 abajo. Gracias a los 2 ciclos For, se harán 64 iteraciones y con ello se les da el tamaño de 75*75 pixeles a cada uno de los 64 cuadritos que componen el tablero de damas. Size es una estructura que almacena un par de enteros ordenados, en este caso el ancho y alto del rectánculo. Las 64 casillas del tablero se crearán sobre el Panel3, y el Panel3 quedará atrás pero servirá para que se vea el margen de 10 pixeles arriba, abajo, a la izquierda y a la derecha.

casilla(f, c).Location = New Point(357 + posx, 66 + posy) 'Luego de definir el tamaño de cada cuadrito que compone el tablero de damas, con esta línea se define la ubicación que va a tener cada uno de esos cuadritos, de modo que en las 64 iteraciones de los ciclos For anidados, se darán 64 ubicaciones y quedarán bien localizados y estructurados cada uno de los elementos que componen el tablero. La estructura Point representa un par ordenado de coordenadas x e y de enteros que define un punto en un plano bidimensional. El punto de origen o el 0,0 es la parte superior izquierda del formulario (sin contar la barra de título como parte de las coordenadas). Las coordenadas x positivas van hacia la derecha del punto 0,0. Las coordenadas x negativas van hacia la izquierda del punto 0,0. Las coordenadas y positivo van hacia abajo del punto 0,0. Las coordenadas y negativo van hacia arriba del punto 0,0. (347, 56) es la posición del Panel3 en el formulario. Entonces como se quiere que queden 10 pixeles de margen arriba, abajo, a la izquierda y a la derecha del tablero (el tablero estará ubicado sobre el Panel3), entonces por eso se pone (357 + posx, 66 + posy), considerando los 10 pixeles de margen tanto para el eje x como para el eje y, y sabiendo que inicialmente o en la primera iteración (cuando f y c valgan 0) tanto posx como posy van a valer 0.

Form1.Controls.Add(casilla(f, c)) 'Añade el objeto creado en el formulario, con las dimensiones y ubicación establecida en las dos líneas anteriores.

casilla(f, c).BringToFront() 'Esto sirve para que el objeto añadido al formulario con la línea anterior aparezca encima del objeto Panel3, pues de lo contrario no se va a ver el tablero generado porque va a estar detrás del Panel3.

casilla(f, c).ocupada = False 'Con esto se hace que las 64 casillas aparezcan desocupadas, pues lo que se busca con este procedimiento público es crear el tablero, no hacer jugadas ni poner fichas todavía, entonces se hace que todas las casillas se encuentren vacías.

If (f + c) Mod 2 = 0 Then 'Si el residuo de la suma de la fila más la columna entre dos es cero (lo cual significaría que esa suma fue un número par). Por ejemplo las casillas (0,0), (2,4), (3,5), etc.

casilla(f, c).BackColor = Color.White 'El color de la casilla se pone blanco.

Else 'Si el residuo de la suma de la fila más la columna entre dos es diferente de cero (lo cual significaría que esa suma fue un número impar). Por ejemplo las casillas (1,3), (3,4), (6,3), etc.

casilla(f, c).BackColor = Color.Black 'El color de la casilla se pone negro.

End If 'Entonces inicialmente las casillas van a estar blanco y negro, con la casilla (0,0) o la que está en la parte superior izquierda de color blanco.

posx = posx + 75 'Para que en la siguiente iteración, la siguiente casilla se ubique 75 pixeles a la derecha de la anterior hasta formar la fila completa de 8 casillas en una fila.

Next

posy = posy + 75 'Para que en la iteración de las filas, que la siguiente casilla se ubique 75 pixeles abajo de la anterior, y que luego con el For interno se comience a formar la segunda fila completa.

Next

'NOTA: Con los dos ciclos For anidados anteriores, el orden en en que se van a ir formando las casillas es de izquierda a derecha hasta formar la primera fila y luego de arriba hacia abajo formando fila por fila hasta formar las 8 filas y que se tengan las 64 casillas que componen el tablero.

End Sub

Public Sub crear_ficha() 'Este procedimiento sirve para crear las 24 fichas sobre el tablero, 12 para cada jugador, es decir que 12 de un color y 12 de otro.

Dim objDraw1 As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath

objDraw1.AddEllipse(0, 0, 50, 50)

Dim x As Integer

x = 0

'En total, entre los 2 ciclos For anidados, se harán 48 iteraciones.

For f = 0 To 2 'Debido a las fichas correspondientes al Jugador 1 (las fichas de arriba) se van a ubicar en las primeras 3 filas del tablero (contando las filas de arriba hacia abajo), el ciclo irá de 0 a 2.

For c = 0 To 7 'Se hacen 8 iteraciones porque de las primeras 3 filas del tablero se van a evaluar casilla por casilla.

If (f + c) Mod 2 = 0 Then 'Si la suma de la fila más la columna da un número par (por ejemplo (0, 0), (0, 2), (0,6), (1,1), (2, 4), etc.), entonces se va a poner una ficha en esa casilla.

ficha = New FICHAS 'La variable "ficha" es una instancia de la clase FICHAS (es un objeto).

ficha.Region = New Region(objDraw1)

ficha.Size = New Size(50, 50) 'La propiedad Size funciona gracias a que la variable "ficha" es de tipo FICHAS, y la clase FICHAS hereda la clase Panel, y la clase Panel tiene la propiedad Size, por lo tanto la clase Panel le hereda a la clase CASILLAS la propiedad Size. "(50, 50)" son los pixeles, que va a tener 50 pixeles de ancho y 50 pixeles de alto, que es cuadrado pero con el procedimiento AddEllipse se hará circular. Recuérdese que las casillas tienen 75×75 pixeles, entonces las fichas se van a poner 50×50 pixeles para que quepan bien dentro de las casillas.

'ficha.BackColor = Color.BlueViolet

'Seleccionar la imagen de la ficha correspondiente para el Jugador 1.

Select Case Form1.ComboBox4.Text

Case "Águila"

ficha.BackgroundImage = Form1.ImageList1.Images(0)

Case "Blue Boar Ice Ale"

ficha.BackgroundImage = Form1.ImageList1.Images(1)

Case "Cherry Coke"

ficha.BackgroundImage = Form1.ImageList1.Images(2)

Case "Chucho"

ficha.BackgroundImage = Form1.ImageList1.Images(3)

Case "Coca Cola Real"

ficha.BackgroundImage = Form1.ImageList1.Images(4)

Case "Coca Cola"

ficha.BackgroundImage = Form1.ImageList1.Images(5)

Case "Cream Soda"

ficha.BackgroundImage = Form1.ImageList1.Images(6)

Case "Corona Extra"

ficha.BackgroundImage = Form1.ImageList1.Images(7)

Case "Diana"

ficha.BackgroundImage = Form1.ImageList1.Images(8)

Case "Diet Pepsi"

ficha.BackgroundImage = Form1.ImageList1.Images(9)

Case "Dr Pepper"

ficha.BackgroundImage = Form1.ImageList1.Images(10)

Case "Fanta"

ficha.BackgroundImage = Form1.ImageList1.Images(11)

Case "Heineken Beer"

ficha.BackgroundImage = Form1.ImageList1.Images(12)

Case "Hello Kitty"

ficha.BackgroundImage = Form1.ImageList1.Images(13)

Case "Mirinda"

ficha.BackgroundImage = Form1.ImageList1.Images(14)

Case "Nehi Grape"

ficha.BackgroundImage = Form1.ImageList1.Images(15)

Case "Pepsi"

ficha.BackgroundImage = Form1.ImageList1.Images(16)

Case "Red"

ficha.BackgroundImage = Form1.ImageList1.Images(17)

Case "Scandinavian Pepsi"

ficha.BackgroundImage = Form1.ImageList1.Images(18)

Case "Star"

ficha.BackgroundImage = Form1.ImageList1.Images(19)

Case "Stars"

ficha.BackgroundImage = Form1.ImageList1.Images(20)

End Select

'ficha.BorderStyle = BorderStyle.Fixed3D

Form1.Controls.Add(ficha) 'Añade el objeto creado en el formulario, con las dimensiones establecidas en "ficha.Size" y ubicación que se establecerá dos líneas adelante en "ficha.Location".

ficha.BringToFront() 'Esto sirve para que el objeto añadido al formulario con la línea anterior aparezca encima del objeto Panel3 y encima de las casillas, pues de lo contrario no se va a ver la ficha generada porque va a estar detrás del Panel3 y de las casillas del tablero.

ficha.Location = New Point(357 + (c * 75) + 12.5, 66 + (f * 75) + 12.5) 'El Panel3 (que se encuentra en la misma ubicación en la que se van a dibujar las fichas y donde va a ser el escenario para jugar) es cuadrado y mide 620*620 pixeles, entonces tomando en cuenta que cada ficha mide 50*50 pixeles (aunque no van a ser cuadradas sino que se van a hacer redondas con el procedimiento AddEllipse), se va a trabajar de esta forma: luego de definir el tamaño de cada ficha, con esta línea se define la ubicación que va a tener cada una de esas fichas, de modo que en las 48 iteraciones de los ciclos For anidados, se darán 24 ubicaciones (correspondientes a las 12 fichas para cada jugador, pues con la condición If, de las 48 iteraciones solamente 24 van a colocar fichas), y quedarán bien localizadas cada una de las fichas sobre el tablero. La estructura Point representa un par ordenado de coordenadas x e y de enteros que define un punto en un plano bidimensional. El punto de origen o el 0,0 es la parte superior izquierda del formulario (sin contar la barra de título como parte de las coordenadas). Las coordenadas x positivas van hacia la derecha del punto 0,0. Las coordenadas x negativas van hacia la izquierda del punto 0,0. Las coordenadas y positivo van hacia abajo del punto 0,0. Las coordenadas y negativo van hacia arriba del punto 0,0. (347, 56) es la posición del Panel3 en el formulario. Entonces como se quiere que queden 10 pixeles de margen arriba, abajo, a la izquierda y a la derecha del tablero (el tablero estará ubicado sobre el Panel3), entonces por eso se pone (357 + (c * 75) + 12.5, 66 + (f * 75) + 12.5), considerando los 10 pixeles de margen tanto para el eje x como para el eje y (por eso 357 en vez de 347, y 66 en vez de 56). (c * 75) y (f * 75) es para que en cada iteración se tome el inicio desde donde se va a formar la casilla tanto de filas (la "f") como de columnas (la "c"). + 12.5 es porque no se quiere que la ficha se forme justo desde la parte superior izquierda de la casilla, sino que se desea que quede en el centro de la casilla, entonces se ponen esos 12.5 pixeles de margen izquierdo para el caso del eje x y 12.5 pixeles de margen superior para el caso del eje y, entonces la casilla va a tomar 50 pixeles (50 + 12.5 = 62.5 pixeles), y van a quedar otros 12.5 pixeles tanto de margen derecho como de margen inferior, con lo cual se completan los 75 pixeles de cada casilla (pues 62.5 + 12.5 = 75 pixeles).

'ficha.equipo = 1

casilla(f, c).jugador = 1

casilla(f, c).ocupada = True 'Para que la casilla correspondiente según la iteración de los ciclos For anidados, que la casilla quede ocupada para efectos de programación, que no se pueda poner otra casilla mientras esta no se haya quitado o mientras no haya sido comida, etc.

Jugador1(x) = ficha

x = x + 1

End If

Next

Next

x = 0

For f = 5 To 7 'Debido a las fichas correspondientes al Jugador 2 (las fichas de abajo) se van a ubicar en las últimas 3 filas del tablero (contando las filas de arriba hacia abajo, es decir las filas 6, 7 y 8), el ciclo irá de 5 a 7.

For c = 0 To 7 'Se hacen 8 iteraciones porque de las filas 6, 7 y 8 del tablero se va a evaluar casilla por casilla.

If (f + c) Mod 2 = 0 Then 'Si la suma de la fila más la columna da un número par (por ejemplo (5, 1), (5, 3), (6,0), (6,4), (7, 3), etc.), entonces se va a poner una ficha en esa casilla.

ficha = New FICHAS 'La variable "ficha" es una instancia de la clase FICHAS (es un objeto).

ficha.Region = New Region(objDraw1)

ficha.Size = New Size(50, 50) 'La propiedad Size funciona gracias a que la variable "ficha" es de tipo FICHAS, y la clase FICHAS hereda la clase Panel, y la clase Panel tiene la propiedad Size, por lo tanto la clase Panel le hereda a la clase CASILLAS la propiedad Size. "(50, 50)" son los pixeles, que va a tener 50 pixeles de ancho y 50 pixeles de alto, que es cuadrado pero con el procedimiento AddEllipse se hará circular. Recuérdese que las casillas tienen 75×75 pixeles, entonces las fichas se van a poner 50×50 pixeles para que quepan bien dentro de las casillas.

'ficha.BackColor = Color.Crimson

'Seleccionar la imagen de la ficha correspondiente para el Jugador 2.

Select Case Form1.ComboBox3.Text

Case "Águila"

ficha.BackgroundImage = Form1.ImageList1.Images(0)

Case "Blue Boar Ice Ale"

ficha.BackgroundImage = Form1.ImageList1.Images(1)

Case "Cherry Coke"

ficha.BackgroundImage = Form1.ImageList1.Images(2)

Case "Chucho"

ficha.BackgroundImage = Form1.ImageList1.Images(3)

Case "Coca Cola Real"

ficha.BackgroundImage = Form1.ImageList1.Images(4)

Case "Coca Cola"

ficha.BackgroundImage = Form1.ImageList1.Images(5)

Case "Cream Soda"

ficha.BackgroundImage = Form1.ImageList1.Images(6)

Case "Corona Extra"

ficha.BackgroundImage = Form1.ImageList1.Images(7)

Case "Diana"

ficha.BackgroundImage = Form1.ImageList1.Images(8)

Case "Diet Pepsi"

ficha.BackgroundImage = Form1.ImageList1.Images(9)

Case "Dr Pepper"

ficha.BackgroundImage = Form1.ImageList1.Images(10)

Case "Fanta"

ficha.BackgroundImage = Form1.ImageList1.Images(11)

Case "Heineken Beer"

ficha.BackgroundImage = Form1.ImageList1.Images(12)

Case "Hello Kitty"

ficha.BackgroundImage = Form1.ImageList1.Images(13)

Case "Mirinda"

ficha.BackgroundImage = Form1.ImageList1.Images(14)

Case "Nehi Grape"

ficha.BackgroundImage = Form1.ImageList1.Images(15)

Case "Pepsi"

ficha.BackgroundImage = Form1.ImageList1.Images(16)

Case "Red"

ficha.BackgroundImage = Form1.ImageList1.Images(17)

Case "Scandinavian Pepsi"

ficha.BackgroundImage = Form1.ImageList1.Images(18)

Case "Star"

ficha.BackgroundImage = Form1.ImageList1.Images(19)

Case "Stars"

ficha.BackgroundImage = Form1.ImageList1.Images(20)

End Select

'ficha.BorderStyle = BorderStyle.Fixed3D

Form1.Controls.Add(ficha) 'Añade el objeto creado en el formulario, con las dimensiones establecidas en "ficha.Size" y ubicación que se establecerá dos líneas adelante en "ficha.Location".

ficha.BringToFront() 'Esto sirve para que el objeto añadido al formulario con la línea anterior aparezca encima del objeto Panel3 y encima de las casillas, pues de lo contrario no se va a ver la ficha generada porque va a estar detrás del Panel3 y de las casillas del tablero.

ficha.Location = New Point(357 + (c * 75) + 12.5, 66 + (f * 75) + 12.5) 'El Panel3 (que se encuentra en la misma ubicación en la que se van a dibujar las fichas y donde va a ser el escenario para jugar) es cuadrado y mide 620*620 pixeles, entonces tomando en cuenta que cada ficha mide 50*50 pixeles (aunque no van a ser cuadradas sino que se van a hacer redondas con el procedimiento AddEllipse), se va a trabajar de esta forma: luego de definir el tamaño de cada ficha, con esta línea se define la ubicación que va a tener cada una de esas fichas, de modo que en las 48 iteraciones de los ciclos For anidados, se darán 24 ubicaciones (correspondientes a las 12 fichas para cada jugador, pues con la condición If, de las 48 iteraciones solamente 24 van a colocar fichas), y quedarán bien localizadas cada una de las fichas sobre el tablero. La estructura Point representa un par ordenado de coordenadas x e y de enteros que define un punto en un plano bidimensional. El punto de origen o el 0,0 es la parte superior izquierda del formulario (sin contar la barra de título como parte de las coordenadas). Las coordenadas x positivas van hacia la derecha del punto 0,0. Las coordenadas x negativas van hacia la izquierda del punto 0,0. Las coordenadas y positivo van hacia abajo del punto 0,0. Las coordenadas y negativo van hacia arriba del punto 0,0. (347, 56) es la posición del Panel3 en el formulario. Entonces como se quiere que queden 10 pixeles de margen arriba, abajo, a la izquierda y a la derecha del tablero (el tablero estará ubicado sobre el Panel3), entonces por eso se pone (357 + (c * 75) + 12.5, 66 + (f * 75) + 12.5), considerando los 10 pixeles de margen tanto para el eje x como para el eje y (por eso 357 en vez de 347, y 66 en vez de 56). (c * 75) y (f * 75) es para que en cada iteración se tome el inicio desde donde se va a formar la casilla tanto de filas (la "f") como de columnas (la "c"). + 12.5 es porque no se quiere que la ficha se forme justo desde la parte superior izquierda de la casilla, sino que se desea que quede en el centro de la casilla, entonces se ponen esos 12.5 pixeles de margen izquierdo para el caso del eje x y 12.5 pixeles de margen superior para el caso del eje y, entonces la casilla va a tomar 50 pixeles (50 + 12.5 = 62.5 pixeles), y van a quedar otros 12.5 pixeles tanto de margen derecho como de margen inferior, con lo cual se completan los 75 pixeles de cada casilla (pues 62.5 + 12.5 = 75 pixeles).

'ficha.equipo = 2

casilla(f, c).jugador = 2

casilla(f, c).ocupada = True

Jugador2(x) = ficha

x = x + 1

End If

Next

Next

End Sub

Public Sub cambiar_color_casillas() 'Procedimiento público para cambiar el color de las casillas del tablero.

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

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

If (f + c) Mod 2 = 0 Then 'Si el residuo de la suma de la fila más la columna entre dos es cero (lo cual significaría que esa suma fue un número par). Por ejemplo las casillas (0,0), (2,4), (3,5), etc.

casilla(f, c).BackColor = CASILLAS.color1 'El color de la casilla se pone del color contenido en la variable Public Shared color1.

Else 'Si el residuo de la suma de la fila más la columna entre dos es diferente de cero (lo cual significaría que esa suma fue un número impar). Pr ejemplo las casillas (1,3), (3,4), (6,3), etc.

casilla(f, c).BackColor = CASILLAS.color2 'El color de la casilla se pone del color contenido en la variable Public Shared color2.

End If

Next

Next

End Sub

Public Sub crear_corona1()

corona = New CORONAS

Dim objDraw1 As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath

objDraw1.AddEllipse(0, 0, 50, 50)

corona.Region = New Region(objDraw1)

corona.Size = New Size(50, 50) 'La propiedad Size funciona gracias a que la variable "ficha" es de tipo FICHAS, y la clase FICHAS hereda la clase Panel, y la clase Panel tiene la propiedad Size, por lo tanto la clase Panel le hereda a la clase CASILLAS la propiedad Size. "(50, 50)" son los pixeles, que va a tener 50 pixeles de ancho y 50 pixeles de alto, que es cuadrado pero con el procedimiento AddEllipse se hará circular. Recuérdese que las casillas tienen 75×75 pixeles, entonces las fichas se van a poner 50×50 pixeles para que quepan bien dentro de las casillas.

'corona.BackColor = Color.Red

corona.BackgroundImage = Form1.ImageList1.Images(21)

Form1.Controls.Add(corona)

corona.BringToFront()

corona.Location = New Point(cposx, cposy)

End Sub

Public Sub crear_corona2()

corona = New CORONAS

Dim objDraw1 As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath

objDraw1.AddEllipse(0, 0, 50, 50)

corona.Region = New Region(objDraw1)

corona.Size = New Size(50, 50) 'La propiedad Size funciona gracias a que la variable "ficha" es de tipo FICHAS, y la clase FICHAS hereda la clase Panel, y la clase Panel tiene la propiedad Size, por lo tanto la clase Panel le hereda a la clase CASILLAS la propiedad Size. "(50, 50)" son los pixeles, que va a tener 50 pixeles de ancho y 50 pixeles de alto, que es cuadrado pero con el procedimiento AddEllipse se hará circular. Recuérdese que las casillas tienen 75×75 pixeles, entonces las fichas se van a poner 50×50 pixeles para que quepan bien dentro de las casillas.

'corona.BackColor = Color.Blue

corona.BackgroundImage = Form1.ImageList1.Images(22)

Form1.Controls.Add(corona)

corona.BringToFront()

corona.Location = New Point(cposx, cposy)

End Sub

Public Sub posibilidad_soplar()

'Evaluación para determinar si el Jugador 1 tiene que comer hacia su izquierda (derecha de la pantalla).

For f = 0 To 5 'Desde la fila 1 hasta la 5 porque una ficha que no sea reina puede comer como máximo desde la fila 6 (para llegar a caer a la fila 8).

For c = 0 To 5 'Desde la columna 1 hasta la 6 porque una ficha que no sea reina puede comer hacia la derecha de la pantalla (hacia la izquierda del Jugador 1) como máximo desde la columna 6 del tablero (para llegar a caer a la columna 8).

If casilla(f, c).jugador = 1 Then 'Si hay una ficha del Jugador 1 en esta casilla.

If casilla(f + 1, c + 1).jugador = 2 Then 'Si hay una pieza del Jugador 2 que se puede comer en diagonal hacia la izquierda del Jugador 1 (hacia la derecha de la pantalla)

If casilla(f + 2, c + 2).ocupada = False Then 'Si se puede comer porque el espacio donde va a ir a quedar la ficha para comer está vacío.

'If turno = 1 Then 'Para que sea posible soplarle una pieza al Jugador 1 solamente si a él le correspondía mover y no comió.

soplar1 = True

soplarfila1 = f

soplarcolumna1 = c

End If

End If

End If

Next

Next

'Evaluación para determinar si el Jugador 1 tiene que comer hacia su derecha (izquierda de la pantalla).

For f = 0 To 5 'Desde la fila 0 hasta la 5 porque una ficha que no sea reina puede comer como máximo desde la fila 6 (para llegar a caer a la fila 8).

For c = 2 To 7 'Desde la fila 3 hasta la 8 porque una ficha que no sea reina puede comer hacia la izquierda de la pantalla (hacia la derecha del Jugador 1) como máximo desde la columna 3 del tablero (para llegar a caer a la columna 1).

If casilla(f, c).jugador = 1 Then 'Si hay una ficha del Jugador 1 en esta casilla.

If casilla(f + 1, c – 1).jugador = 2 Then 'Si hay una pieza del Jugador 2 que se puede comer en diagonal hacia la derecha del Jugador 1 (hacia la izquierda de la pantalla).

If casilla(f + 2, c – 2).ocupada = False Then 'Si se puede comer porque el espacio donde va a ir a quedar la ficha para comer está vacío.

'If turno = 1 Then 'Para que sea posible soplarle una pieza al Jugador 1 solamente si a él le correspondía mover y no comió.

soplar1 = True

soplarfila1 = f

soplarcolumna1 = c

End If

End If

End If

Next

Next

If soplar1 = False Then

Else

End If

'Evaluación para determinar si el Jugador 2 tiene que comer hacia su izquierda (izquierda de la pantalla).

For f = 2 To 7 'Desde la fila 3 hasta la 8 porque una ficha que no sea reina puede comer como máximo desde la fila 3 (para llegar a caer a la fila 1).

For c = 2 To 7 'Desde la columna 3 hasta la 8 porque una ficha que no sea reina puede comer hacia la izquierda de la pantalla (hacia la izquierda del Jugador 2) como máximo desde la columna 3 del tablero (para llegar a caer a la columna 1).

If casilla(f, c).jugador = 2 Then 'Si hay una ficha del Jugador 2 en esta casilla.

If casilla(f – 1, c – 1).jugador = 1 Then 'Si hay una pieza del Jugador 1 que se puede comer en diagonal hacia la izquierda del Jugador 2 (hacia la izquierda de la pantalla)

If casilla(f – 2, c – 2).ocupada = False Then 'Si se puede comer porque el espacio donde va a ir a quedar la ficha para comer está vacío.

soplar2 = True

soplarfila2 = f

soplarcolumna2 = c

End If

End If

End If

Next

Next

'Evaluación para determinar si el Jugador 2 tiene que comer hacia su derecha (derecha de la pantalla).

For f = 2 To 7 'Desde la fila 3 hasta la 8 porque una ficha que no sea reina puede comer como máximo desde la fila 3 (para llegar a caer a la fila 1).

For c = 0 To 5 'Desde la fila 1 hasta la 6 porque una ficha que no sea reina puede comer hacia la derecha de la pantalla (hacia la derecha del Jugador 2) como máximo desde la columna 6 del tablero (para llegar a caer a la columna 8).

If casilla(f, c).jugador = 2 Then 'Si hay una ficha del Jugador 2 en esta casilla.

If casilla(f – 1, c + 1).jugador = 1 Then 'Si hay una pieza del Jugador 1 que se puede comer en diagonal hacia la derecha del Jugador 2 (hacia la derecha de la pantalla).

If casilla(f – 2, c + 2).ocupada = False Then 'Si se puede comer porque el espacio donde va a ir a quedar la ficha para comer está vacío.

soplar2 = True

soplarfila2 = f

soplarcolumna2 = c

End If

End If

End If

Next

Next

End Sub

End Module

 

 

Autor:

Jaime Montoya

Santa Ana, 22 de junio de 2008

El Salvador

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

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