public Form1() { InitializeComponent(); this.fichaNPrueba = new FichaNegra(0, 0); this.ReinaNPrueba = new ReinaNegra(0, 0); this.fichaBPrueba = new FichaBlanca(0, 0); this.ReinaBPrueba = new ReinaBlanca(0, 0); this.fichaCPrueba = new Ficha(0, 0); this.segundoClick = false; this.tablero = new Tablero(); tablero.Inicio(); this.jugador1 = new Jugador("Jugador 1", "negro"); this.jugador2 = new Jugador("Jugador 2", "blanco"); this.juego = new Juego(jugador1, jugador2); this.juego.Jugador1.Turno = true; this.juego.Jugador2.Turno = false; this.Labels = new Label[8, 8]; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { Labels[i, j] = new Label(); Labels[i, j].Size = new Size(70, 70); Labels[i, j].Click += Movimiento; Labels[i, j].Location = new Point(50 + (j * 70), 50 + (i * 70)); if (i % 2 == 0 && j % 2 == 0) { Labels[i, j].BackColor = Color.White; } else if (i % 2 != 0 && j % 2 != 0) { Labels[i, j].BackColor = Color.White; } else { Labels[i, j].BackColor = Color.Black; } } } //Actualizar tablero Actualizar(); CambioTurno(); foreach (Label label in Labels) { this.Controls.Add(label); } }
public void Inicio() { //Poner las fichas negras en su posicion inicial for (int i = 0; i < 3; i++) { for (int j = 0; j < 8; j++) { if ((i == 0 || i == 2) && (j == 1 || j == 3 || j == 5 || j == 7)) { celdas[i, j] = new FichaNegra(i, j); } else if ((i == 1) && (j == 0 || j == 2 || j == 4 || j == 6)) { celdas[i, j] = new FichaNegra(i, j); } else { celdas[i, j] = new Ficha(i, j); } } } //Poner las fichas blancas en su posición inicial for (int i = 5; i < 8; i++) { for (int j = 0; j < 8; j++) { if ((i == 5 || i == 7) && (j == 0 || j == 2 || j == 4 || j == 6)) { celdas[i, j] = new FichaBlanca(i, j); } else if ((i == 6) && (j == 1 || j == 3 || j == 5 || j == 7)) { celdas[i, j] = new FichaBlanca(i, j); } else { celdas[i, j] = new Ficha(i, j); } } } for (int i = 3; i < 5; i++) { for (int j = 0; j < 8; j++) { celdas[i, j] = new Ficha(i, j); } } }
public void Movimiento(object sender, EventArgs e) { if (PrimeraSeleccion != null) { //MessageBox.Show("PrimeraSelec x: " + PrimeraSeleccion.Fila + " y: " + PrimeraSeleccion.Columna); } //Si no se tiene primera seleccion if (this.PrimeraSeleccion == null) { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (this.Labels[i, j] == sender) { //MessageBox.Show("x: " + i + " y: " + j); if (this.tablero.Celdas[i, j].GetType() == this.fichaNPrueba.GetType() || this.tablero.Celdas[i, j].GetType() == this.fichaBPrueba.GetType() || this.tablero.Celdas[i, j].GetType() == this.ReinaBPrueba.GetType() || this.tablero.Celdas[i, j].GetType() == this.ReinaNPrueba.GetType()) { //MessageBox.Show("x: " + i + " y: " + j + "tipo" + Convert.ToString(this.tablero.Celdas[i,j].GetType())); foreach (Ficha posibleMov in this.tablero.Celdas[i, j].PosiblesMov()) { if (posibleMov != null) { PrimeraSeleccion = this.tablero.Celdas[i, j]; } else { PrimeraSeleccion = null; } } } } } } } //Si no tiene segunda seleccion else if (SegundaSeleccion == null) { this.segundoClick = true; for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { if (this.Labels[i, j] == sender) { //MessageBox.Show("x: " + i + " y: " + j); //Movimiento normal if (this.tablero.Celdas[i, j].GetType() == this.fichaCPrueba.GetType()) { //MessageBox.Show("x: " + i + " y: " + j + "tipo" + Convert.ToString(this.tablero.Celdas[i,j].GetType())); this.SegundaSeleccion = this.tablero.Celdas[i, j]; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; } } } } } //Si intenta moverse a una distancia de un espacio en diagonal if (PrimeraSeleccion != null && SegundaSeleccion != null) { //foreach (Ficha posibleMov in PrimeraSeleccion.PosiblesMov()) foreach (Ficha posibleMov in this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna].PosiblesMov()) { if (SegundaSeleccion.Fila == posibleMov.Fila && SegundaSeleccion.Columna == posibleMov.Columna) { //MessageBox.Show("x: " + i + " y: " + j); if (PrimeraSeleccion.GetType() == fichaNPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new FichaNegra(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); this.PrimeraSeleccion = null; this.SegundaSeleccion = null; Actualizar(); CambioTurno(); break; } else if (PrimeraSeleccion.GetType() == fichaBPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new FichaBlanca(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); this.PrimeraSeleccion = null; this.SegundaSeleccion = null; Actualizar(); CambioTurno(); break; } else if (PrimeraSeleccion.GetType() == ReinaNPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new ReinaNegra(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); this.PrimeraSeleccion = null; this.SegundaSeleccion = null; Actualizar(); CambioTurno(); break; } else if (PrimeraSeleccion.GetType() == ReinaBPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new ReinaBlanca(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); this.PrimeraSeleccion = null; this.SegundaSeleccion = null; Actualizar(); CambioTurno(); break; } } } } //Si se intenta COMER if (PrimeraSeleccion != null && SegundaSeleccion != null) { foreach (Ficha posibleComer in this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna].PosiblesComer()) { if (posibleComer != null) { if (SegundaSeleccion.Fila == posibleComer.Fila && SegundaSeleccion.Columna == posibleComer.Columna) { //MessageBox.Show("x: " + this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].Fila + "y: " + this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].Columna); if (PrimeraSeleccion.GetType() == fichaNPrueba.GetType() || PrimeraSeleccion.GetType() == fichaBPrueba.GetType()) { //MessageBox.Show("x: " + i + " y: " + j); if (PrimeraSeleccion.GetType() == fichaNPrueba.GetType()) { if (this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].GetType() == this.fichaBPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new FichaNegra(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)] = new Ficha(PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); if (PuedeComer() == true) { this.PrimeraSeleccion = this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna]; this.SegundaSeleccion = null; this.juego.Jugador2.Fichas--; Actualizar(); break; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; this.juego.Jugador2.Fichas--; Actualizar(); CambioTurno(); break; } } } else if (PrimeraSeleccion.GetType() == fichaBPrueba.GetType()) { if (this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].GetType() == this.fichaNPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new FichaBlanca(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)] = new Ficha(PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); if (PuedeComer() == true) { this.PrimeraSeleccion = this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna]; this.SegundaSeleccion = null; this.juego.Jugador1.Fichas--; Actualizar(); break; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; this.juego.Jugador1.Fichas--; Actualizar(); CambioTurno(); break; } } } if (PrimeraSeleccion.GetType() == this.fichaNPrueba.GetType()) { if (this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].GetType() == this.ReinaBPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new FichaNegra(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)] = new Ficha(PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); if (PuedeComer() == true) { this.PrimeraSeleccion = this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna]; this.SegundaSeleccion = null; this.juego.Jugador2.Fichas--; Actualizar(); break; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; this.juego.Jugador2.Fichas--; Actualizar(); CambioTurno(); break; } } } else if (PrimeraSeleccion.GetType() == fichaBPrueba.GetType()) { if (this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].GetType() == this.ReinaNPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new FichaBlanca(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)] = new Ficha(PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); if (PuedeComer() == true) { this.PrimeraSeleccion = this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna]; this.SegundaSeleccion = null; this.juego.Jugador1.Fichas--; Actualizar(); break; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; this.juego.Jugador1.Fichas--; Actualizar(); CambioTurno(); break; } } } } else if (PrimeraSeleccion.GetType() == ReinaNPrueba.GetType() || PrimeraSeleccion.GetType() == ReinaBPrueba.GetType()) { if (PrimeraSeleccion.GetType() == ReinaNPrueba.GetType()) { if (this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].GetType() == this.fichaBPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new ReinaNegra(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)] = new Ficha(PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); if (PuedeComer() == true) { this.PrimeraSeleccion = this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna]; this.SegundaSeleccion = null; this.juego.Jugador2.Fichas--; Actualizar(); break; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; this.juego.Jugador2.Fichas--; Actualizar(); CambioTurno(); break; } } } else if (PrimeraSeleccion.GetType() == ReinaBPrueba.GetType()) { if (this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].GetType() == this.fichaNPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new ReinaBlanca(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)] = new Ficha(PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); if (PuedeComer() == true) { this.PrimeraSeleccion = this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna]; this.SegundaSeleccion = null; this.juego.Jugador1.Fichas--; Actualizar(); break; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; this.juego.Jugador1.Fichas--; Actualizar(); CambioTurno(); break; } } } if (PrimeraSeleccion.GetType() == ReinaNPrueba.GetType()) { if (this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].GetType() == this.ReinaBPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new ReinaNegra(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)] = new Ficha(PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); if (PuedeComer() == true) { this.PrimeraSeleccion = this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna]; this.SegundaSeleccion = null; this.juego.Jugador2.Fichas--; Actualizar(); break; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; this.juego.Jugador2.Fichas--; Actualizar(); CambioTurno(); break; } } } else if (PrimeraSeleccion.GetType() == ReinaBPrueba.GetType()) { if (this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)].GetType() == this.ReinaNPrueba.GetType()) { this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna] = new ReinaBlanca(SegundaSeleccion.Fila, SegundaSeleccion.Columna); this.tablero.Celdas[PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)] = new Ficha(PrimeraSeleccion.Fila + ((SegundaSeleccion.Fila - PrimeraSeleccion.Fila) / 2), PrimeraSeleccion.Columna + ((SegundaSeleccion.Columna - PrimeraSeleccion.Columna) / 2)); this.tablero.Celdas[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna] = new Ficha(PrimeraSeleccion.Fila, PrimeraSeleccion.Columna); if (PuedeComer() == true) { this.PrimeraSeleccion = this.tablero.Celdas[SegundaSeleccion.Fila, SegundaSeleccion.Columna]; this.SegundaSeleccion = null; this.juego.Jugador1.Fichas--; Actualizar(); break; } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; this.juego.Jugador1.Fichas--; Actualizar(); CambioTurno(); break; } } } } } } else { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; Actualizar(); } } } if (segundoClick == true) { this.PrimeraSeleccion = null; this.SegundaSeleccion = null; Actualizar(); this.segundoClick = false; } //MessageBox.Show("x: " + PrimeraSeleccion.Fila + " y:" + PrimeraSeleccion.Columna); if (this.juego.Jugador1.Fichas == 0 || this.juego.Jugador2.Fichas == 0) { FinDelJuego(); } if (this.PrimeraSeleccion != null) { //RESALTAR FICHA QUE FUE SELECCIONADA COMO LA PRIMERA SELECCIÓN. this.Labels[PrimeraSeleccion.Fila, PrimeraSeleccion.Columna].BackColor = Color.Yellow; } }