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

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




Enviado por jaimemontoya



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

GroupBox3

(Name)

GroupBox3

BackColor

Transparent

Font

Georgia, 12pt, style=Bold

ForeColor

Lime

Location

33, 283

Modifiers

Friend

Size

268, 71

TabIndex

9

Text

Turno de Movimiento

Visible

False

GroupBox1

(Name)

GroupBox1

BackColor

Transparent

Font

Georgia, 12pt, style=Bold

ForeColor

Lime

Location

33, 368

Modifiers

Friend

Size

268, 118

TabIndex

4

Text

Colores del Tablero

Visible

False

GroupBox2

(Name)

GroupBox2

BackColor

Transparent

Font

Georgia, 12pt, style=Bold

ForeColor

Lime

Location

33, 494

Modifiers

Friend

Size

268, 182

TabIndex

5

Text

Fichas

Visible

False

Label9

(Name)

Label9

AutoSize

True

Font

Georgia, 12pt, style=Bold

ForeColor

Yellow

Location

16, 29

Modifiers

Friend

Size

60, 18

TabIndex

2

Text

Turno

TextBox1

(Name)

TextBox1

AutoCompleteCustomSource

(Collection)

BackColor

AliceBlue

Lines

String[] Array

Location

98, 29

Modifiers

Friend

ReadOnly

True

Size

153, 26

TabIndex

8

Label3

(Name)

Label3

AutoSize

True

Font

Georgia, 12pt, style=Bold

ForeColor

Yellow

Location

16, 29

Modifiers

Friend

Size

66, 18

TabIndex

2

Text

Color 1

ComboBox1

(Name)

ComboBox1

BackColor

Alice1

FormattingEnabled

True

Items

(Collection)

Azul

Blanco

Negro

Rojo

Verde

Location

98, 26

Modifiers

Friend

Size

153, 26

TabIndex

1

Label4

(Name)

4

AutoSize

True

Font

Georgia, 12pt, style=Bold

ForeColor

Yellow

Location

18, 73

Modifiers

Friend

Size

67, 18

TabIndex

5

ComboBox2

(Name)

ComboBox2

BackColor

AliceBlue

FormattingEnabled

True

Items

(Collection)

Azul

Blanco

Negro

Rojo

Verde

Location

98, 73

Modifiers

Friend

Size

153, 26

TabIndex

5

Label6

(Name)

Label6

AutoSize

True

Font

Georgia, 12pt, style=Bold

ForeColor

Yellow

Location

16, 29

Modifiers

Friend

Size

68, 18

TabIndex

2

Text

Ficha 1

ComboBox4

(Name)

ComboBox4

BackColor

AliceBlue

Items

(Collection)

Águila

Blue Boar Ice Ale

Cherry Coke

Chucho

Coca Cola Real

Coca Cola

Cream Soda

Corona Extra

Diana

Diet Pepsi

Dr Pepper

Fanta

Heineken Beer

Hello Kitty

Mirinda

Nehi Grape

Pepsi

Red

Scandinavian Pepsi

Star

Stars

Location

87, 26

Modifiers

Friend

Size

171, 26

TabIndex

1

Label5

(Name)

Label5

AutoSize

True

Font

Georgia, 12pt, style=Bold

ForeColor

Yellow

Location

16, 73

Modifiers

Friend

Size

69, 18

TabIndex

4

Text

Ficha 2

ComboBox3

(Name)

ComboBox3

BackColor

AliceBlue

FormattingEnabled

True

Items

(Collection)

Águila

Blue Boar Ice Ale

Cherry Coke

Chucho

Coca Cola Real

Coca Cola

Cream Soda

Corona Extra

Diana

Diet Pepsi

Dr Pepper

Fanta

Heineken Beer

Hello Kitty

Mirinda

Nehi Grape

Pepsi

Red

Scandinavian Pepsi

Star

Stars

Location

87, 70

Modifiers

Friend

Size

171, 26

TabIndex

3

Button1

(Name)

Button1

BackgroundImage

System.Drawing.Bitmap

Font

Georgia, 12pt, style=Bold

ForeColor

Navy

Location

64, 109

Modifiers

Friend

Size

137, 58

TabIndex

5

Text

Seleccionar

UseVisualStyleBackColor

True

jugador1Label

(Name)

jugador1Label

AutoSize

True

BackColor

Transparent

Font

Georgia, 12pt, style=Bold

ForeColor

Yellow

Location

881, 31

Modifiers

Friend

Size

89, 18

TabIndex

10

Text

Jugador 1

Visible

False

jugador2Label

(Name)

jugador2Label

AutoSize

True

BackColor

Transparent

Font

Georgia, 12pt, style=Bold

ForeColor

Yellow

Location

879, 683

Modifiers

Friend

Size

90, 18

TabIndex

11

Text

Jugador 2

Visible

False

Label2

(Name)

Label2

AutoSize

True

BackColor

Transparent

Font

Times New Roman, 14.25pt, style=Bold

ForeColor

Lime

Location

601, 683

Modifiers

Friends

Size

105, 22

TabIndex

0

Text

POSICIÓN

TextAlign

MiddleCenter

Visible

False

Panel3

(Name)

Panel3

BackColor

Teal

Location

347, 56

Modifiers

Friend

Size

620, 620

Visible

False

MENUToolStripMenuItem

(Name)

MENUToolStripMenuItem

DropDownItems

(Collection)

MOSTRARTABLEROToolStripMenuItem

COLORDELTABLEROToolStripMenuItem

MOSTRARFICHASToolStripMenuItem

ToolStripMenuItem1

SALIRToolStripMenuItem

Font

Microsoft Sans Serif, 9.75pt,
style=Bold

ForeColor

Black

Modifiers

Friend

Size

57, 20

Text

Menú

MenuStrip1

(Name)

MenuStrip1

Items

(Collection)

MENUToolStripMenuItem

Location

0, 0

Modifiers

Friend

Size

1009, 24

TabIndex

0

Text

MenuStrip1

ImageList1

(Name)

ImageList1

Images

(Collection)

0 System.Drawing.Bitmap

1 System.Drawing.Bitmap

2 System.Drawing.Bitmap

3 System.Drawing.Bitmap

4 System.Drawing.Bitmap

5 System.Drawing.Bitmap

6 System.Drawing.Bitmap

7 System.Drawing.Bitmap

8 System.Drawing.Bitmap

9 System.Drawing.Bitmap

10 System.Drawing.Bitmap

11 System.Drawing.Bitmap

12 System.Drawing.Bitmap

13 System.Drawing.Bitmap

14 System.Drawing.Bitmap

15 System.Drawing.Bitmap

16 System.Drawing.Bitmap

17 System.Drawing.Bitmap

18 System.Drawing.Bitmap

19 System.Drawing.Bitmap

20 System.Drawing.Bitmap

21 jugador1.jpg

22 jugador2.jpg

ImageSize

50, 50

Modifiers

Friend

TransparentColor

Transparent

Timer1

(Name)

Timer1

Interval

10

Modifiers

Friend

Timer2

(Name)

Timer2

Interval

500

Modifiers

Friend

OBJETO

PROPIEDAD

VALOR

AyudaForm

(Name)

AyudaForm

AutoScaleMode

Font

BackgroundImage

System.Drawing.Bitmap

FormBorderStyle

FixedSingle

MaximizeBox

False

Size

795, 609

StartPosition

CenterScreen

Text

AyudaForm

Label7

(Name)

Label7

AutoSize

True

BackColor

Transparent

Font

Lucida Calligraphy, 24pt, style=Bold,
Underline

ForeColor

Yellow

Location

316, 36

Modifiers

Friend

Size

140, 41

TabIndex

8

Text

Ayuda

Label1

(Name)

Label1

AutoSize

True

BackColor

Transparent

Font

Georgia, 12pt, style=Bold

ForeColor

Yellow

Location

21, 115

Modifiers

Friend

Size

778, 252

TabIndex

9

Text

Para comenzar un juego,
hacer clic en Menú, luego en Mostrar tablero,
posteriormente

seleccionar los colores
del tablero deseados. A continuación dentro del
Menú, hacer clic

en Mostrar fichas.
En Turno de Movimiento aparece el jugador al que le
corresponde mover.

Para realizar movimientos, arrastrar la ficha que
se quiere mover desde la posición en la
que

se encuentra hasta la posición de la
casilla hasta la que se quiere llevar. Si el movimiento
es

inválido, se regresará
automáticamente la ficha a su posición
inicial. Si hay oportunidad de

comer y se mueve otra ficha en vez de comer, se va
a "soplar" la ficha por no haber comido.

Gana el Jugador que haya comido todas las fichas
de su oponente o que deje al otro jugador

con fichas pero sin oportunidad de
mover.

Para seleccionar nuevas fichas o para iniciar un
nuevo juego, hacer clic en el botón

Seleccionar y luego clic en Sí. Eso
cancelará o terminará el juego actual que se
tenga.

Label2

(Name)

Label2

AutoSize

True

BackColor

Transparent

Font

Georgia, 15.75pt, style=Bold, Underline

ForeColor

Yellow

Location

428, 435

Modifiers

Friend

Size

359, 75

TabIndex

10

Text

Jaime Montoya

webmaster[arroba]jaimemontoya.com

www.jaimemontoya.com

CerrarButton

(Name)

CerrarButton

BackgroundImage

System.Drawing.Bitmap

Font

Georgia, 12pt, style=Bold

ForeColor

Navy

Location

143, 452

Modifiers

Friend

Size

137, 58

TabIndex

11

Text

Cerrar

EXPLORADOR DE
SOLUCIONES

CÓDIGO DEL
PROGRAMA

AyudaForm.vb

Public Class AyudaForm

Private Sub CerrarButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CerrarButton.Click

Me.Close()
'Cierra el Formulario AyudaForm.

End Sub

End Class

CASILLAS.vb

Public Class CASILLAS

Inherits Panel
'La clase CASILLAS
va a heredar todos los atributos, variables,
propiedades, procedimientos y
eventos de la
clase Panel. Si no se heredara la clase Panel, la clase CASILLAS
no podría usar eventos, propiedades ni procedimientos de
la clase Panel, como lo son los eventos MouseMove y MouseLeave;
ni tampoco se podrían usar las propiedades Location, Left,
Top, Size, y BackColor; así como tampoco sería
posible usar el proedimiento BringToFront.

Public ocupada
As Boolean 'Para determinar
si encima de una casilla hay una ficha o no, es decir si es una
casilla ocupada o no.

Public Shared color1, color2 As Color
'Se declaran dos variables de tipo Color,
donde Color no es una clase sino que una estructura. Se
le pone "Shared" porque si no se hiciera, al usar en el
formulario por ejemplo "CASILLAS.color1 = Color.Blue"
daría error diciendo que "La referencia a un miembro no
compartido requiere una referencia de objeto." Entonces declarar
una variable como "Shared" especifica que uno o varios elementos
de programación declarados están
asociados a una clase o estructura en general y no a una
instancia específica de la clase o estructura.

Public Shared ficha1, ficha2 As Image 'Se
declaran dos variables de tipo Image, donde Image es una
clase.

Public jugador
As Integer = 0

Private posicionx,
posiciony As Integer

Private Pf, Pc
As Integer

Private qf, qc
As Integer

Public equipo
As Integer = 0

Private x1, x2
As Panel

Private y1, y2
As Panel

Public Sub mouse_move(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

For f = 0
To 7

For c = 0
To 7

If CType(sender, Panel).Location = casilla(f,
c).Location Then

Form1.Label2.Visible = True

Form1.Label2.Text = "POSICION " & "(" & f & "," & c & ")"

End If

Next

Next

End Sub

Public Sub mouse_leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave

Form1.Label2.Visible = False

Form1.Label2.Text = ""

End Sub

Public Property Mcolor1() As Color

Get

Return color1

End Get

Set(ByVal x As Color)

color1 = x

End Set

End Property

Public Property Mcolor2() As Color

Get

Return color2

End Get

Set(ByVal x As Color)

color2 = x

End Set

End Property

Public Property Mequipo() As Integer

Get

Return equipo

End Get

Set(ByVal value As Integer)

equipo = value

End Set

End Property

End Class

CORONAS.vb

Public Class CORONAS

Inherits Panel

Private DX, DY
As Integer

Private mover
As Boolean

Private pos_x, pos_y
As Integer

Private fila,
columna As Integer 'fila almacena la
fila de la posición al darse el evento mouse_down. columna
almacena la columna de la posición al darse el evento
mouse_up.

Public fila1,
columna1 As Integer 'fila1 almacena la
fila de la posición al darse el evento mouse_up. columna1
almacena la columna de la posición al darse el evento
mouse_up. Aunque cuando se evalúen los procedimientos para
comer doble y comer triple, éstas variables son
actualizadas para determinar la posición actual de la
ficha que se quiere evaluar que pueda comer doble o
triple.

Private come
As Boolean

Private
clicfichajug1 As
Boolean 'Variable paradeterminar si se hizo clic sobre una
ficha del Jugador 1.

Private
clicfichajug2 As
Integer 'Variable para determinar si se hizo clic sobre una
ficha del Jugador 2.

Public Sub mouse_down(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

mover = True

'CType(sender, Panel).BorderStyle =
Windows.Forms.BorderStyle.Fixed3D

CType(sender,
Panel).BringToFront()

DX = e.X

DY = e.Y

pos_x = Me.Left

pos_y = Me.Top

'Se captura la fila y columna en que se
encuentra.

For f = 0
To 7

For c = 0
To 7

If Me.Location.X >= casilla(f,
c).Location.X And
Me.Location.X <= casilla(f,
c).Location.X + 75 And
Me.Location.Y >= casilla(f,
c).Location.Y And
Me.Location.Y <= casilla(f,
c).Location.Y + 75 Then

fila = f 'La variable
"fila" almacena la fila del tablero donde se hizo clic
(comenzando la cuenta de las filas desde 0 y de arriba hacia
abajo).

columna = c 'La variable
"columna" almacena la columna del tablero donde se hizo clic
(comenzando la cuenta de las columnas desde 0 y de izquierda a
derecha).

If casilla(f, c).jugador =
1 Then 'Si la casilla sobre la que se hizo clic tiene una
ficha del Jugador 1.

clicfichajug1 = True

End If

If casilla(f, c).jugador =
2 Then

clicfichajug2 = True
'Si la casilla sobre la que se hizo clic
tiene una ficha del Jugador 2.

End If

End If

Next

Next

End Sub

Public Sub mouse_up(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp

mover = False

CType(sender,
Panel).BorderStyle = Windows.Forms.BorderStyle.None

'Se verifica si se encuentra adentro del
tablero.

If Me.Location.X >= 357
And Me.Location.X <= 967
And Me.Location.Y >= 66 And Me.Location.Y <= 656
Then

Else

Me.Left = pos_x

Me.Top = pos_y

End If

'Se verifica si se encuentra en una
casilla válida.

For f = 0
To 7

For c = 0
To 7

If Me.Location.X >= casilla(f,
c).Location.X And
Me.Location.X <= casilla(f,
c).Location.X + 75 And
Me.Location.Y >= casilla(f,
c).Location.Y And
Me.Location.Y <= casilla(f,
c).Location.Y + 75 Then
'Gracias a los ciclos For anidados, se va a
ir evaluando casilla por casilla con este If, definiedo las
coordenadas para casa casilla, que son cuatro: izquierda,
derecha, arriba y abajo. Donde aparece "+ 75" es porque a la
coordenada de la izquierda se le agregan 75 pixeles y ya se tiene
la coordenada del límite derecho de una casilla, y lo
mismo para el caso del eje Y, que ya se tiene el límite
superior de la casilla y al sumarle 75 pixeles se obtiene el
límite inferior, pues en las coordenadas del formulario
las Y positivas van contando hacia abajo.

fila1 = f 'La variable
"fila1" almacena la fila del tablero donde se soltó el
clic o donde se desea posicionar una ficha (comenzando la cuenta
de las filas desde 0 y de arriba hacia abajo).

columna1 = c 'La variable
"columna1" almacena la columna del tablero donde se soltó
el clic o donde se desea posicionar una ficha (comenzando la
cuenta de las columnas desde 0 y de izquierda a
derecha).

End If

Next

Next

If (fila1 +
columna1) Mod 2 =
0 Then 'Porque la primer ficha está en la
posición (0, 0), (2,6), (3, 2), etc, es válido
porque la suma de los subíndices da par. Entonces si la
suma de los sunbíndices da impar, es porque en esas
casillas nunca podría haber una ficha.

'Se verifica que no esté ocupada
la casilla.

If casilla(fila1,
columna1).ocupada = True
Then 'Si la
casilla está ocupada, se regresa a las coordenadas de
donde venía cuando se dio el evento MouseDown.

Me.Left = pos_x

Me.Top = pos_y

Else 'Es
porque la casilla no está ocupada.

'Se establecen los
movimientos.

If turno = 1
Then 'Si el
turno de mover es para el Jugador 1.

If clicfichajug1 =
True Then 'Si con el evento
mouse_down se ha determinado que se hizo clic sobre una ficha del
Jugador 1.

mover1(CType(sender, Panel))

Else 'Si
turno = 2.

Me.Left = pos_x

Me.Top = pos_y

End If

Else 'Si
turno = 2, es decir, si el turno de mover es para el Jugador 2 y
si sobre la ficha que se hizo clic le pertenece al Jugador
2.

If clicfichajug2
Then 'fila1
almacena la fila donde se quiere ubicar la ficha. fila almacena
la fila donde se encontraba la ficha originalmente. Si
fila1<fila significa que la fila destino es menor que la fila
origen, es decir que se trata de un movimiento del Jugador 2
hacia adelante (hacia arriba en la pantalla). La segunda
condición que se pone es que sobre la ficha que se hizo
clic tiene que pertenecerle al Jugador 2. Esta línea
equivale a escribir "If clicfichajug2 = True Then".

mover2(CType(sender, Panel))

Else

Me.Left = pos_x

Me.Top = pos_y

End If

End If

End If

'End If

Else 'Si la
suma de los subíndices da impar, entonces la ficha se
regresa a la posición en la que estaba cuando se dio el
evento MouseDown, pues en estas casillas nunca podría
estar una pieza, ya que los movimientos son siempre diagonales,
entonces no hay manera de que queden piezas en casillas cuya suma
de subíndices son impares.

Me.Left = pos_x

Me.Top = pos_y

End If

Form1.TextBox1.Text = "Jugador" + Str(turno) 'Para que cuando se suelte el clic del mouse, que
aparezca en el TextBox1 a qué Jugador le corresponde el
turno del siguiente movimiento.

'Se les da valor False a
las siguientes 2 variables para que puedan volverse a poner en
True solamente si cumplen la condición señalada en
el evento mouse_down.

clicfichajug1 = False

clicfichajug2 = False

End Sub

Public Sub mouse_move(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove

If mover
Then

Me.Left = e.X +
Me.Left – DX

Me.Top = e.Y +
Me.Top – DY

End If

End Sub

Public Sub mover1(ByVal sender As Panel)

'Para ubicarse en los movimientos, se
hablará de Norte, Sur, Este y Oeste; donde uno se tiene
que imaginar el tablero como si hubiera una brújula
donde el Norte es arriba, el Sur es abajo, el Este es a la
derecha y el Oeste es a la izquierda.

Dim i, j
As Integer

If fila1 > fila
Then 'fila1
contiene la fila a la que se quiere ir a poner la corona. fila
contiene la fila donde estaba la corona. Debido a que esto
está dentro del procedimiento es
mover1(ByVal sender As Panel), ya se sabe que el movimiento es
para el Jugador 1, entonces esta línea condiciona que el
Jugador 1 mueve hacia adelante del Jugador 1 (hacia abajo en la
pantalla); hacia el Sur.

If columna1 >
columna Then 'columna1 contiene la columna a la que se quiere ir a
poner la corona. columna contiene la columna donde estaba la
corona. Debido a que esto está dentro del procedimiento
mover1(ByVal sender As Panel), ya se sabe que el movimiento es
para el Jugador 1, y a la vez por la línea anterior se
sabe que el movimiento ha sido hacia adelante del Jugador 1
(hacia abajo en la pantalla), entonces esta línea
condiciona que el Jugador 1 mueve hacia su izquierda (hacia la
derecha en la pantalla); hacia el Este.

'Se sabe entonces que el movimiento ha
sido diagonalmente hacia el Sureste.

'Declaración de variables que se
utilizarán en el próximo ciclo For que
aparece.

Dim numdefichas
As Integer = 0 'Número de fichas que hay entre la casilla donde
se va a poner la corona y la casilla donde estaba (al hacer el
movimiento diagonal).

Dim numdefichasjug1
As Integer = 0 'Número de fichas del Jugador 1 que hay entre la
casilla donde se va a poner la corona y la casilla donde estaba
(al hacer el movimiento diagonal).

Dim numdefichasjug2
As Integer = 0 'Número de fichas del Jugador 2 que hay entre la
casilla donde se va a poner la corona y la casilla donde estaba
(al hacer el movimiento diagonal).

Dim ieliminar
As Integer 'Valor de la fila
a eliminar o comer.

Dim jeliminar
As Integer 'Valor de la
columna a eliminar o comer.

j = columna + 1

For i = fila + 1
To fila1

If casilla(i, j).ocupada
= True Then 'Si la casilla
evaluada está ocupada por alguna ficha.

numdefichas += 1 'Equivale
a escribir "numdefichas = numdefichas + 1".

If casilla(i, j).jugador =
1 Then 'Si la casilla evaluada está ocupada por una
ficha del Jugador 1.

numdefichasjug1 += 1 'Equivale a escribir "numdefichasjug1 = numdefichasjug1
+ 1".

End If

If casilla(i, j).jugador =
2 Then 'Si la casilla evaluada está ocupada por una
ficha del Jugador 2.

numdefichasjug2 += 1 'Equivale a escribir "numdefichasjug2 = numdefichasjug2
+ 1".

'Se almacenan los valores de
fila y columna de la ficha que se tendría que eliminar en
caso de cumplirse condiciones que se evaluarán
posteriormente.

ieliminar = i

jeliminar = j

End If

End If

j += 1 'Equivale a escribir
"j = j + 1".

If j = 8
Then 'Esto es
para que no se evalúe una columna que no existe, evitando
que el programa se
trabe.

Exit For 'Salida inmediata del
ciclo For aunque no haya terminado el número de
iteraciones que se le habían programado.

End If

Next

If columna – fila <>
columna1 – fila1 Then
'Con esto se verifica si el movimiento no
ha sido diagonal. Para que el movimiento haya sido diagonal
(tomando en cuenta que ya se sabe que el movimiento es hacia el
Sureste) se debe cumplir la siguiente ecuación: "columna –
fila = columna1 – fila1". Por ejemplo, si la posición de
inicio fue (4,0), la resta 0 – 4 da -4, entonces la
posición destino (5,1) sería válida porque
columna1+fila1=1-5=-4. Igualmente otras posiciones válidas
para este ejemplo serían (6,2) y (7,3). Algunas posiciones
inválidas para este mismo ejemplo serían (5,3),
(6,6), (7,7), (7,5). Si no se cumple esta ecuación, el
movimiento hacia el Sureste no sería diagonal y por lo
tanto sería inválido. Por ello la corona se regresa
a la posición inicial en que estaba.

Me.Left = pos_x

Me.Top = pos_y

Else 'Si el
movimiento de la corona es válido (diagonalmente hacia el
Sureste).

If numdefichas <=
1 Then 'Si hay 0 o 1 fichas entre la posición inicial y
la posición final del movimiento diagonal que se quiere
hacer.

If numdefichasjug1 =
0 Then

'Se efectúa el
movimiento.

casilla(fila, columna).ocupada = False

casilla(fila1, columna1).ocupada = True

casilla(fila, columna).jugador = 0

casilla(fila1, columna1).jugador = 1

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

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

turno = 2 'Para que luego
de efectuar este movimiento, que el turno sea para el Jugador
2.

End If

If numdefichasjug2 =
1 Then 'Si hay 1 ficha del Jugador 2 entre la posición
inicial y la posición final del movimiento diagonal que se
quiere hacer.

'Se efectúa el
movimiento.

casilla(fila, columna).ocupada = False

casilla(fila1, columna1).ocupada = True

casilla(fila, columna).jugador = 0

casilla(fila1, columna1).jugador = 1

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

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

turno = 2 'Para que luego
de efectuar este movimiento, que el turno sea para el Jugador
2.

comer1(ieliminar, jeliminar) 'Para quitar la ficha del otro equipo que ha sido
comida por la corona.

End If

If numdefichasjug1 =
1 Then 'Si hay una ficha del Jugador 1 entre la
posición inicial y la posición final del movimiento
diagonal que se quiere hacer.

'Se devuelve la corona a la
posición inicial y el movimiento no se realiza. Esto
porque una corona no se puede saltar una ficha de su mismo
equipo.

Me.Left = pos_x

Me.Top = pos_y

End If

Else 'Si
hay más de una ficha entre la posición inicial y la
posición final del movimiento diagonal que se quiere
hacer.

'Se devuelve la corona a la
posición inicial y el movimiento no se realiza.

Me.Left = pos_x

Me.Top = pos_y

End If

End If

End If

If columna1 <
columna Then 'columna1 contiene la columna a la que se quiere ir a
poner la corona. columna contiene la columna donde estaba la
corona. Debido a que esto está dentro del procedimiento
mover1(ByVal sender As Panel), ya se sabe que el movimiento es
para el Jugador 1, y a la vez por la línea anterior se
sabe que el movimiento ha sido hacia adelante del Jugador 1
(hacia abajo en la pantalla), entonces esta línea
condiciona que el Jugador 1 mueve hacia su derecha (hacia la
izquierda en la pantalla); hacia el Oeste.

'Se sabe entonces que el movimiento ha
sido diagonalmente hacia el Suroeste.

'Declaración de variables que se
utilizarán en el próximo ciclo For que
aparece.

Dim numdefichas
As Integer = 0 'Número de fichas que hay entre la casilla donde
se va a poner la corona y la casilla donde estaba (al hacer el
movimiento diagonal).

Dim numdefichasjug1
As Integer = 0 'Número de fichas del Jugador 1 que hay entre la
casilla donde se va a poner la corona y la casilla donde estaba
(al hacer el movimiento diagonal).

Dim numdefichasjug2
As Integer = 0 'Número de fichas del Jugador 2 que hay entre la
casilla donde se va a poner la corona y la casilla donde estaba
(al hacer el movimiento diagonal).

Dim ieliminar
As Integer 'Valor de la fila
a eliminar o comer.

Dim jeliminar
As Integer 'Valor de la
columna a eliminar o comer.

j = columna – 1

'Con el ciclo For presentado a
continuación se van a evaluar las fichas que hay (si las
hubiera) entre la posición inicial y la posición
final del movimiento que se quiere hacer de la corona, para
determinar si es posible el movimiento y si es posible
también comer.

For i = fila + 1
To fila1

If casilla(i, j).ocupada
= True Then 'Si la casilla
evaluada está ocupada por alguna ficha.

numdefichas += 1 'Equivale
a escribir "numdefichas = numdefichas + 1".

If casilla(i, j).jugador =
1 Then 'Si la casilla evaluada está ocupada por una
ficha del Jugador 1.

numdefichasjug1 += 1 'Equivale a escribir "numdefichasjug1 = numdefichasjug1
+ 1".

End If

If casilla(i, j).jugador =
2 Then 'Si la casilla evaluada está ocupada por una
ficha del Jugador 2.

numdefichasjug2 += 1 'Equivale a escribir "numdefichasjug2 = numdefichasjug2
+ 1".

'Se almacenan los valores de
fila y columna de la ficha que se tendría que eliminar en
caso de cumplirse condiciones que se evaluarán
posteriormente.

ieliminar = i

jeliminar = j

End If

End If

j -= 1 'Equivale a escribir
"j = j – 1".

If j = -1
Then 'Esto es
para que no se evalúe una columna que no existe, evitando
que el programa se trabe.

Exit For 'Salida inmediata del
ciclo For aunque no haya terminado el número de
iteraciones que se le habían programado.

End If

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