public int isChecked(Board brd2) { int c2, m; if (color == 1) { c2 = 2; } else { c2 = 1; } Board b = brd2; int i, j; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { b.setSquare(brd2.getInfo(i, j), i, j); } } Pawn pawn = new Pawn(c2, 0, 0); Castle castle = new Castle(c2, 0, 0); Knight knight = new Knight(c2, 0, 0); Queen queen = new Queen(c2, 0, 0); Bishop bishop = new Bishop(c2, 0, 0); Point p = brd2.searchKing(color); King king = new King(c2, 0, 0); int r = p.x; int s = p.y; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { m = b.getInfo(i, j); switch (m) { case 0: break; case 1: if (c2 == 1) { castle.x = i; castle.y = j; if (castle.move(b, r, s) == 1) { return(1); } } break; case 2: if (c2 == 1) { knight.x = i; knight.y = j; if (knight.move(b, r, s) == 1) { return(1); } } break; case 3: if (c2 == 1) { bishop.x = i; bishop.y = j; if (bishop.move(b, r, s) == 1) { return(1); } } break; case 4: if (c2 == 1) { queen.x = i; queen.y = j; if (queen.move(b, r, s) == 1) { return(1); } } break; case 5: if (c2 == 2) { king.x = i; king.y = j; if (queen.move(b, r, s) == 1) { return(1); } } break; case 6: if (c2 == 1) { pawn.x = i; pawn.y = j; if (pawn.move(b, r, s) == 1) { return(1); } } break; case 7: if (c2 == 2) { castle.x = i; castle.y = j; if (castle.move(b, r, s) == 1) { return(1); } } break; case 8: if (c2 == 2) { knight.x = i; knight.y = j; if (knight.move(b, r, s) == 1) { return(1); } } break; case 9: if (c2 == 2) { bishop.x = i; bishop.y = j; if (bishop.move(b, r, s) == 1) { return(1); } } break; case 10: if (c2 == 2) { queen.x = i; queen.y = j; if (queen.move(b, r, s) == 1) { return(1); } } break; case 11: if (c2 == 2) { king.x = i; king.y = j; if (king.move(b, r, s) == 1) { return(1); } } break; case 12: if (c2 == 2) { pawn.x = i; pawn.y = j; if (pawn.move(b, r, s) == 1) { return(1); } } break; } } } return(0); }
public bool ChecktestforRookBlack(GameBoard _Game, byte _X, byte _Y) { int i; for (i = 0; i < _Game.White.Count; i++) { Coordinate _Next = new Coordinate(_X, _Y); string typecheck = _Game.White[i].GetType().ToString(); switch (typecheck) { case "Chess.Pawn": Pawn Pawnmover = new Pawn("a"); Pawnmover = (Pawn)_Game.White[i]; if (Pawnmover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.Bishop": Bishop Bishopmover = new Bishop("a"); Bishopmover = (Bishop)_Game.White[i]; if (Bishopmover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.Queen": Queen Queenmover = new Queen("a"); Queenmover = (Queen)_Game.White[i]; if (Queenmover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.Knight": Knight Knightmover = new Knight("a"); Knightmover = (Knight)_Game.White[i]; if (Knightmover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.Castle": Castle Castlemover = new Castle("a"); Castlemover = (Castle)_Game.White[i]; if (Castlemover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.King": King Kingmover2 = new King("a"); Kingmover2 = (King)_Game.White[i]; if (Kingmover2.isMovable(_Game, _Next)) { return(true); } break; } } return(false); }
public bool ChecktestWhite(GameBoard _Game) { int i; King Kingmover1 = new King("White"); for (i = 0; i < _Game.White.Count; i++) { if (_Game.White[i].GetType().ToString().Contains("King")) { Kingmover1 = (King)_Game.White[i]; break; } } Coordinate _Next = Kingmover1.Current; string typecheck; for (i = 0; i < _Game.Black.Count; i++) { typecheck = _Game.Black[i].GetType().ToString(); if (_Game.Black[i].Current.X == 99) { continue; } switch (typecheck) { case "Chess.Pawn": Pawn Pawnmover = new Pawn("a"); Pawnmover = (Pawn)_Game.Black[i]; if (Pawnmover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.Bishop": Bishop Bishopmover = new Bishop("a"); Bishopmover = (Bishop)_Game.Black[i]; if (Bishopmover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.Queen": Queen Queenmover = new Queen("a"); Queenmover = (Queen)_Game.Black[i]; if (Queenmover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.Knight": Knight Knightmover = new Knight("a"); Knightmover = (Knight)_Game.Black[i]; if (Knightmover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.Castle": Castle Castlemover = new Castle("a"); Castlemover = (Castle)_Game.Black[i]; if (Castlemover.isMovable(_Game, _Next)) { return(true); } break; case "Chess.King": King Kingmover2 = new King("a"); Kingmover2 = (King)_Game.Black[i]; if (Kingmover2.isMovable(_Game, _Next)) { return(true); } break; } } return(false); }
public int canDefend(int color) { Board b = new Board(); Castle castle = new Castle(color, 0, 0); Pawn pawn = new Pawn(color, 0, 0); Knight knight = new Knight(color, 0, 0); Bishop bishop = new Bishop(color, 0, 0); Queen queen = new Queen(color, 0, 0); int i, j, m, n, f = 0; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { b.setSquare(this.getInfo(i, j), i, j); } } Point p = b.searchKing(color); King king = new King(color, p.x, p.y); for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { if (b.getInfo(i, j) == 0) { } else if (b.getInfo(i, j) == (color == 1 ? 1 : 7)) { castle.x = i; castle.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (castle.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 1 : 7), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 1 : 7), i, j); b.setSquare(f, m, n); } } } } else if (b.getInfo(i, j) == (color == 1 ? 2 : 8)) { knight.x = i; knight.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (knight.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 2 : 8), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 2 : 8), i, j); b.setSquare(f, m, n); } } } } else if (b.getInfo(i, j) == (color == 1 ? 3 : 9)) { bishop.x = i; bishop.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (bishop.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 3 : 9), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 3 : 9), i, j); b.setSquare(f, m, n); } } } } else if (b.getInfo(i, j) == (color == 1 ? 4 : 10)) { queen.x = i; queen.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (queen.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 4 : 10), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 4 : 10), i, j); b.setSquare(f, m, n); } } } } else if (b.getInfo(i, j) == (color == 1 ? 5 : 11)) { for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (king.move(b, m, n) == 1) { f = b.getInfo(m, n); king.x = m; king.y = n; b.setSquare(0, i, j); b.setSquare((color == 1 ? 5 : 11), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 5 : 11), i, j); b.setSquare(f, m, n); king.x = p.x; king.y = p.y; } } } } else if (b.getInfo(i, j) == (color == 1 ? 6 : 12)) { pawn.x = i; pawn.y = j; for (m = 0; m < 8; m++) { for (n = 0; n < 8; n++) { if (pawn.move(b, m, n) == 1) { f = b.getInfo(m, n); b.setSquare(0, i, j); b.setSquare((color == 1 ? 6 : 12), m, n); if (king.isChecked(b) == 0) { return(1); } b.setSquare((color == 1 ? 6 : 12), i, j); b.setSquare(f, m, n); } } } } } } return(0); }
public static void CheckEnemyKingBeAttaced(int startX, int startY, int finishX, int finishY, bool[,] chessmanPresenceSign, ControlCollection controls, object sender, Dictionary <string, int> moveOrder) { //Клонируем массив признака расположения шахмат, для фальсификации bool[,] fakeChessmanPresenceSign = new bool[8, 8]; for (var i = 0; i < 8; i++) { for (var j = 0; j < 8; j++) { fakeChessmanPresenceSign[i, j] = chessmanPresenceSign[i, j]; } } fakeChessmanPresenceSign[startY, startX] = false; fakeChessmanPresenceSign[finishY, finishX] = true; //Клонируем свойство расположения шахмат для возможности фальсификации foreach (var control in controls) { if (control is Chessman) { ((Chessman)control).FakeLocation = ((Chessman)control).Location; } } //Проверка возможности шаха foreach (var control in controls) { if (control is King) { if (((Chessman)control).ChessColor != ((Chessman)sender).ChessColor) { var kingfinishX = (((King)control).Location.X - 27) / 50; var kingFinishY = (((King)control).Location.Y - 27) / 50; ((Chessman)control).FakeCheck = true; ((Chessman)sender).ShahSigne = King.CheckKingBeAttacked(kingfinishX, kingFinishY, fakeChessmanPresenceSign, controls, control, false, sender); ((Chessman)control).FakeCheck = false; } } } //Проверка возможности мата if (((Chessman)sender).ShahSigne) { var flag = true; int chessStartX, chessStartY; bool result; //Клонируем свойство расположения шахмат для возможности фальсификации foreach (var control in controls) { if (control is Chessman) { ((Chessman)control).FakeLocation = ((Chessman)control).Location; } } foreach (var control in controls) { if (control is Chessman && flag) { ((Chessman)sender).MateSigne = true; if (((Chessman)control).ChessColor != ((Chessman)sender).ChessColor) { result = true; // Делаем фэйковые координаты chessStartX = (((Chessman)control).Location.X - 27) / 50; chessStartY = (((Chessman)control).Location.Y - 27) / 50; if (control is King) { for (var i = 0; i < 8 && flag; i++) { for (var j = 0; j < 8 && flag; j++) { var chessFinishX = i; var chessFinishY = j; if (chessFinishX != chessStartX || chessFinishY != chessStartY) { ((Chessman)control).FakeCheck = true; result = King.CheckKingMove(chessStartX, chessStartY, chessFinishX, chessFinishY, fakeChessmanPresenceSign, controls, control, sender); ((Chessman)control).FakeCheck = false; if (!result) { flag = false; break; } } } } } if (control is Queen) { for (var i = 0; i < 8 && flag; i++) { for (var j = 0; j < 8 && flag; j++) { //Задаем фэйковое положение var chessFinishX = i; var chessFinishY = j; ((Chessman)control).FakeLocation = new Point(chessFinishX * 50 + 27, chessFinishY * 50 + 27); if (chessFinishX != chessStartX || chessFinishY != chessStartY) { ((Chessman)control).FakeCheck = true; result = Queen.CheckQueenMove(chessStartX, chessStartY, chessFinishX, chessFinishY, fakeChessmanPresenceSign, controls, control, moveOrder); ((Chessman)control).FakeCheck = false; if (!result) { flag = false; break; } } } } } if (control is Castle) { for (var i = 0; i < 8 && flag; i++) { for (var j = 0; j < 8 && flag; j++) { var chessFinishX = i; var chessFinishY = j; ((Chessman)control).FakeLocation = new Point(chessFinishX * 50 + 27, chessFinishY * 50 + 27); if (chessFinishX != chessStartX || chessFinishY != chessStartY) { ((Chessman)control).FakeCheck = true; result = Castle.CheckCastleMove(chessStartX, chessStartY, chessFinishX, chessFinishY, fakeChessmanPresenceSign, controls, control, moveOrder); ((Chessman)control).FakeCheck = false; if (!result) { flag = false; break; } } } } } if (control is Elephant) { for (var i = 0; i < 8 && flag; i++) { for (var j = 0; j < 8 && flag; j++) { var chessFinishX = i; var chessFinishY = j; ((Chessman)control).FakeLocation = new Point(chessFinishX * 50 + 27, chessFinishY * 50 + 27); if (chessFinishX != chessStartX || chessFinishY != chessStartY) { ((Chessman)control).FakeCheck = true; result = Elephant.CheckElephantMove(chessStartX, chessStartY, chessFinishX, chessFinishY, fakeChessmanPresenceSign, controls, control, moveOrder); ((Chessman)control).FakeCheck = false; if (!result) { flag = false; break; } } } } } if (control is Horse) { for (var i = 0; i < 8 && flag; i++) { for (var j = 0; j < 8 && flag; j++) { var chessFinishX = i; var chessFinishY = j; ((Chessman)control).FakeLocation = new Point(chessFinishX * 50 + 27, chessFinishY * 50 + 27); if (chessFinishX != chessStartX || chessFinishY != chessStartY) { ((Chessman)control).FakeCheck = true; result = Horse.CheckHorseMove(chessStartX, chessStartY, chessFinishX, chessFinishY, fakeChessmanPresenceSign, controls, control, moveOrder); ((Chessman)control).FakeCheck = false; if (!result) { flag = false; break; } } } } } if (control is Pawn) { for (var i = 0; i < 8 && flag; i++) { for (var j = 0; j < 8 && flag; j++) { var chessFinishX = i; var chessFinishY = j; ((Chessman)control).FakeLocation = new Point(chessFinishX * 50 + 27, chessFinishY * 50 + 27); if (chessFinishX != chessStartX || chessFinishY != chessStartY) { ((Chessman)control).FakeCheck = true; result = Pawn.CheckPawnMove(chessStartX, chessStartY, chessFinishX, chessFinishY, fakeChessmanPresenceSign, controls, control, moveOrder); ((Chessman)control).FakeCheck = false; if (!result) { flag = false; break; } } } } } if (!result) { ((Chessman)sender).MateSigne = false; } } } } } }
private void CheckChessMove(object sender) { var startX = (initialChessmanLocation.X - 27) / 50; var startY = (initialChessmanLocation.Y - 27) / 50; var finishX = (CellsPositions[chessmansCellIndexRow, chessmansCellIndexColumn].X - 27) / 50; var finishY = (CellsPositions[chessmansCellIndexRow, chessmansCellIndexColumn].Y - 27) / 50; var impossibleMove = sender is Queen ? Queen.CheckQueenMove(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder) : sender is Castle ? Castle.CheckCastleMove(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder) : sender is Elephant ? Elephant.CheckElephantMove(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder) : sender is Horse ? Horse.CheckHorseMove(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder) : sender is King ? King.CheckKingMove(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, sender) : Pawn.CheckPawnMove(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder); if (impossibleMove) { MessageBox.Show(Resources.ImpossibleMoveMessage); chess = (Chessman)sender; chess.Location = initialChessmanLocation; } else { //Проверка возможности превращения if (sender is Pawn) { if (((Pawn)sender).CanTransform) { var dialogWindow = new PawnTransfomDialog(); dialogWindow.Owner = this; DialogResult dialogResult = dialogWindow.ShowDialog(); if (dialogResult == DialogResult.OK && !dialogWindow.RBPawn.Checked) { var color = ((Pawn)sender).ChessColor; var finishPoint = new Point(finishX * 50 + 27, finishY * 50 + 27); ((Pawn)sender).Dispose(); if (dialogWindow.RBCastle.Checked) { var index = Castles.Count + 1; Castles.Add(color + "Castel" + index, new Castle(color)); Controls.Add(Castles[color + "Castel" + index]); Castles[color + "Castel" + index].Location = finishPoint; Castles[color + "Castel" + index].MouseLeave += Chessman_MouseLeave; Castles[color + "Castel" + index].MouseDown += Chessman_MouseDown; Castles[color + "Castel" + index].MouseUp += Chessman_MouseUp; Castles[color + "Castel" + index].MouseMove += Chessman_MouseMove; sender = Castles[color + "Castel" + index]; Chessman.CheckEnemyKingBeAttaced(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder); } if (dialogWindow.RBElephant.Checked) { var index = Elephants.Count + 1; Elephants.Add(color + "Elephant" + index, new Elephant(color)); Controls.Add(Elephants[color + "Elephant" + index]); Elephants[color + "Elephant" + index].Location = finishPoint; Elephants[color + "Elephant" + index].MouseLeave += Chessman_MouseLeave; Elephants[color + "Elephant" + index].MouseDown += Chessman_MouseDown; Elephants[color + "Elephant" + index].MouseUp += Chessman_MouseUp; Elephants[color + "Elephant" + index].MouseMove += Chessman_MouseMove; sender = Elephants[color + "Elephant" + index]; Chessman.CheckEnemyKingBeAttaced(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder); } if (dialogWindow.RBHorse.Checked) { var index = Horses.Count + 1; Horses.Add(color + "Horse" + index, new Horse(color)); Controls.Add(Horses[color + "Horse" + index]); Horses[color + "Horse" + index].Location = finishPoint; Horses[color + "Horse" + index].MouseLeave += Chessman_MouseLeave; Horses[color + "Horse" + index].MouseDown += Chessman_MouseDown; Horses[color + "Horse" + index].MouseUp += Chessman_MouseUp; Horses[color + "Horse" + index].MouseMove += Chessman_MouseMove; sender = Horses[color + "Horse" + index]; Chessman.CheckEnemyKingBeAttaced(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder); } if (dialogWindow.RBQueen.Checked) { var index = Queens.Count + 1; Queens.Add(color + "Queen" + index, new Queen(color)); Controls.Add(Queens[color + "Queen" + index]); Queens[color + "Queen" + index].Location = finishPoint; Queens[color + "Queen" + index].MouseLeave += Chessman_MouseLeave; Queens[color + "Queen" + index].MouseDown += Chessman_MouseDown; Queens[color + "Queen" + index].MouseUp += Chessman_MouseUp; Queens[color + "Queen" + index].MouseMove += Chessman_MouseMove; sender = Queens[color + "Queen" + index]; Chessman.CheckEnemyKingBeAttaced(startX, startY, finishX, finishY, ChessmanPresenceSign, Controls, sender, moveOrder); } } } } //Проверка мата или шаха ChessmanPresenceSign[startY, startX] = false; ChessmanPresenceSign[finishY, finishX] = true; moveOrder[((Chessman)sender).ChessColor] += -2; if (((Chessman)sender).ShahSigne && !((Chessman)sender).MateSigne) { MessageBox.Show(Resources.ShahMessage); ((Chessman)sender).ShahSigne = false; } if (((Chessman)sender).MateSigne) { DialogResult result = MessageBox.Show(Resources.MateMessage + Environment.NewLine + Resources.restartQuestion, Resources.GameEndMessage, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { Application.Restart(); } else { Application.Exit(); } } } }
public bool MatetestforWhite(GameBoard Game, Empty Emptyspace, Check Checker) { Coordinate CurrentCoord = new Coordinate(); Coordinate NextCoord = new Coordinate(); for (int i = 0; i < Game.White.Count; i++) { string typecheck = Game.White[i].GetType().ToString(); CurrentCoord.X = Game.White[i].Current.X; CurrentCoord.Y = Game.White[i].Current.Y; for (byte j = 0; j < 8; j++) { NextCoord.X = j; for (byte k = 0; k < 8; k++) { NextCoord.Y = k; switch (typecheck) { case "Chess.Pawn": Pawn Pawnmover = new Pawn("WHITE"); Pawnmover = (Pawn)Game.Chessboard[CurrentCoord.X, CurrentCoord.Y]; if (Pawnmover.isMovable(Game, NextCoord)) { Game.Chessboard[CurrentCoord.X, CurrentCoord.Y].Move(Game, CurrentCoord, NextCoord, Emptyspace); if (!(Checker.Checktest(Game, NextCoord))) { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); } else { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); return(true); } } break; case "Chess.Bishop": Bishop Bishopmover = new Bishop("a"); Bishopmover = (Bishop)Game.Chessboard[CurrentCoord.X, CurrentCoord.Y]; if (Bishopmover.isMovable(Game, NextCoord)) { Game.Chessboard[CurrentCoord.X, CurrentCoord.Y].Move(Game, CurrentCoord, NextCoord, Emptyspace); if (!(Checker.Checktest(Game, NextCoord))) { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); } else { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); return(true); } } break; case "Chess.Queen": Queen Queenmover = new Queen("a"); Queenmover = (Queen)Game.Chessboard[CurrentCoord.X, CurrentCoord.Y]; if (Queenmover.isMovable(Game, NextCoord)) { Game.Chessboard[CurrentCoord.X, CurrentCoord.Y].Move(Game, CurrentCoord, NextCoord, Emptyspace); if (!(Checker.Checktest(Game, NextCoord))) { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); } else { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); return(true); } } break; case "Chess.Knight": Knight Knightmover = new Knight("a"); Knightmover = (Knight)Game.Chessboard[CurrentCoord.X, CurrentCoord.Y]; if (Knightmover.isMovable(Game, NextCoord)) { Game.Chessboard[CurrentCoord.X, CurrentCoord.Y].Move(Game, CurrentCoord, NextCoord, Emptyspace); if (!(Checker.Checktest(Game, NextCoord))) { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); } else { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); return(true); } } break; case "Chess.Castle": Castle Castlemover = new Castle("a"); Castlemover = (Castle)Game.Chessboard[CurrentCoord.X, CurrentCoord.Y]; if (Castlemover.isMovable(Game, NextCoord)) { Game.Chessboard[CurrentCoord.X, CurrentCoord.Y].Move(Game, CurrentCoord, NextCoord, Emptyspace); if (!(Checker.Checktest(Game, NextCoord))) { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); } else { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); return(true); } } break; case "Chess.King": King Kingmover = new King("a"); Kingmover = (King)Game.Chessboard[CurrentCoord.X, CurrentCoord.Y]; if (Kingmover.isMovable(Game, NextCoord)) { Game.Chessboard[CurrentCoord.X, CurrentCoord.Y].Move(Game, CurrentCoord, NextCoord, Emptyspace); if (!(Checker.Checktest(Game, NextCoord))) { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); } else { Game.LastmoveReverser(Game, CurrentCoord, NextCoord, Emptyspace); return(true); } } break; } } } } return(false); }
public void CreateDefaultPosition() { Figure blackCastle1 = new Castle(false, 0, 0); Figure blackCastle2 = new Castle(false, 7, 0); Figure blackKnight1 = new Knight(false, 1, 0); Figure blackKnight2 = new Knight(false, 6, 0); Figure blackBishop1 = new Bishop(false, 2, 0); Figure blackBishop2 = new Bishop(false, 5, 0); Figure blackKing = new King(false, 4, 0); Figure blackQueen = new Queen(false, 3, 0); Figure blackPawn1 = new Pawn(false, 0, 1); Figure blackPawn2 = new Pawn(false, 1, 1); Figure blackPawn3 = new Pawn(false, 2, 1); Figure blackPawn4 = new Pawn(false, 3, 1); Figure blackPawn5 = new Pawn(false, 4, 1); Figure blackPawn6 = new Pawn(false, 5, 1); Figure blackPawn7 = new Pawn(false, 6, 1); Figure blackPawn8 = new Pawn(false, 7, 1); Figure whiteCastle1 = new Castle(true, 0, 7); Figure whiteCastle2 = new Castle(true, 7, 7); Figure whiteKnight1 = new Knight(true, 1, 7); Figure whiteKnight2 = new Knight(true, 6, 7); Figure whiteBishop1 = new Bishop(true, 2, 7); Figure whiteBishop2 = new Bishop(true, 5, 7); Figure whiteKing = new King(true, 4, 7); Figure whiteQueen = new Queen(true, 3, 7); Figure whitePawn1 = new Pawn(true, 0, 6); Figure whitePawn2 = new Pawn(true, 1, 6); Figure whitePawn3 = new Pawn(true, 2, 6); Figure whitePawn4 = new Pawn(true, 3, 6); Figure whitePawn5 = new Pawn(true, 4, 6); Figure whitePawn6 = new Pawn(true, 5, 6); Figure whitePawn7 = new Pawn(true, 6, 6); Figure whitePawn8 = new Pawn(true, 7, 6); _table[0, 0].PutFigure(blackCastle1); _table[1, 0].PutFigure(blackKnight1); _table[2, 0].PutFigure(blackBishop1); _table[3, 0].PutFigure(blackQueen); _table[4, 0].PutFigure(blackKing); _table[5, 0].PutFigure(blackBishop2); _table[6, 0].PutFigure(blackKnight2); _table[7, 0].PutFigure(blackCastle2); _table[0, 1].PutFigure(blackPawn1); _table[1, 1].PutFigure(blackPawn2); _table[2, 1].PutFigure(blackPawn3); _table[3, 1].PutFigure(blackPawn4); _table[4, 1].PutFigure(blackPawn5); _table[5, 1].PutFigure(blackPawn6); _table[6, 1].PutFigure(blackPawn7); _table[7, 1].PutFigure(blackPawn8); _table[0, 7].PutFigure(whiteCastle1); _table[1, 7].PutFigure(whiteKnight1); _table[2, 7].PutFigure(whiteBishop1); _table[3, 7].PutFigure(whiteQueen); _table[4, 7].PutFigure(whiteKing); _table[5, 7].PutFigure(whiteBishop2); _table[6, 7].PutFigure(whiteKnight2); _table[7, 7].PutFigure(whiteCastle2); _table[0, 6].PutFigure(whitePawn1); _table[1, 6].PutFigure(whitePawn2); _table[2, 6].PutFigure(whitePawn3); _table[3, 6].PutFigure(whitePawn4); _table[4, 6].PutFigure(whitePawn5); _table[5, 6].PutFigure(whitePawn6); _table[6, 6].PutFigure(whitePawn7); _table[7, 6].PutFigure(whitePawn8); }
public GameBoard() { King BlackKing = new King("BLACK"); Queen BlackQueen = new Queen("BLACK", 1); Castle BlackCastle1 = new Castle("BLACK", 1); Castle BlackCastle2 = new Castle("BLACK", 2); Bishop BlackBishop1 = new Bishop("BLACK", 1); Bishop BlackBishop2 = new Bishop("BLACK", 2); Knight BlackKnight1 = new Knight("BLACK", 1); Knight BlackKnight2 = new Knight("BLACK", 2); Pawn BlackPawn1 = new Pawn("BLACK", 1); Pawn BlackPawn2 = new Pawn("BLACK", 2); Pawn BlackPawn3 = new Pawn("BLACK", 3); Pawn BlackPawn4 = new Pawn("BLACK", 4); Pawn BlackPawn5 = new Pawn("BLACK", 5); Pawn BlackPawn6 = new Pawn("BLACK", 6); Pawn BlackPawn7 = new Pawn("BLACK", 7); Pawn BlackPawn8 = new Pawn("BLACK", 8); Empty Emptyspace = new Empty(); for (byte i = 2; i < 6; i++) { for (byte j = 0; j < 8; j++) { Chessboard[i, j] = Emptyspace; } } Black.Add(BlackKing); Black.Add(BlackQueen); Black.Add(BlackCastle1); Black.Add(BlackCastle2); Black.Add(BlackBishop1); Black.Add(BlackBishop2); Black.Add(BlackKnight1); Black.Add(BlackKnight2); Black.Add(BlackPawn1); Black.Add(BlackPawn2); Black.Add(BlackPawn3); Black.Add(BlackPawn4); Black.Add(BlackPawn5); Black.Add(BlackPawn6); Black.Add(BlackPawn7); Black.Add(BlackPawn8); King WhiteKing = new King("WHITE"); Queen WhiteQueen = new Queen("WHITE", 1); Castle WhiteCastle1 = new Castle("WHITE", 1); Castle WhiteCastle2 = new Castle("WHITE", 2); Bishop WhiteBishop1 = new Bishop("WHITE", 1); Bishop WhiteBishop2 = new Bishop("WHITE", 2); Knight WhiteKnight1 = new Knight("WHITE", 1); Knight WhiteKnight2 = new Knight("WHITE", 2); Pawn WhitePawn1 = new Pawn("WHITE", 1); Pawn WhitePawn2 = new Pawn("WHITE", 2); Pawn WhitePawn3 = new Pawn("WHITE", 3); Pawn WhitePawn4 = new Pawn("WHITE", 4); Pawn WhitePawn5 = new Pawn("WHITE", 5); Pawn WhitePawn6 = new Pawn("WHITE", 6); Pawn WhitePawn7 = new Pawn("WHITE", 7); Pawn WhitePawn8 = new Pawn("WHITE", 8); White.Add(WhiteKing); White.Add(WhiteQueen); White.Add(WhiteCastle1); White.Add(WhiteCastle2); White.Add(WhiteBishop1); White.Add(WhiteBishop2); White.Add(WhiteKnight1); White.Add(WhiteKnight2); White.Add(WhitePawn1); White.Add(WhitePawn2); White.Add(WhitePawn3); White.Add(WhitePawn4); White.Add(WhitePawn5); White.Add(WhitePawn6); White.Add(WhitePawn7); White.Add(WhitePawn8); Chessboard[0, 0] = WhiteCastle1; Chessboard[0, 1] = WhiteKnight1; Chessboard[0, 2] = WhiteBishop1; Chessboard[0, 3] = WhiteQueen; Chessboard[0, 4] = WhiteKing; Chessboard[0, 5] = WhiteBishop2; Chessboard[0, 6] = WhiteKnight2; Chessboard[0, 7] = WhiteCastle2; Chessboard[1, 0] = WhitePawn1; Chessboard[1, 1] = WhitePawn2; Chessboard[1, 2] = WhitePawn3; Chessboard[1, 3] = WhitePawn4; Chessboard[1, 4] = WhitePawn5; Chessboard[1, 5] = WhitePawn6; Chessboard[1, 6] = WhitePawn7; Chessboard[1, 7] = WhitePawn8; Chessboard[7, 0] = BlackCastle1; Chessboard[7, 1] = BlackKnight1; Chessboard[7, 2] = BlackBishop1; Chessboard[7, 3] = BlackQueen; Chessboard[7, 4] = BlackKing; Chessboard[7, 5] = BlackBishop2; Chessboard[7, 6] = BlackKnight2; Chessboard[7, 7] = BlackCastle2; Chessboard[6, 0] = BlackPawn1; Chessboard[6, 1] = BlackPawn2; Chessboard[6, 2] = BlackPawn3; Chessboard[6, 3] = BlackPawn4; Chessboard[6, 4] = BlackPawn5; Chessboard[6, 5] = BlackPawn6; Chessboard[6, 6] = BlackPawn7; Chessboard[6, 7] = BlackPawn8; for (byte i = 0; i < 8; i++) { for (byte j = 0; j < 8; j++) { if (!(Chessboard[i, j].GetType().ToString().Contains("Empty"))) { Chessboard[i, j].Current.X = i; Chessboard[i, j].Current.Y = j; } } } }
public void Run(GameBoard Game, Coordinate Current, Coordinate Next, Check Checker, Empty Emptyspace) { string typecheck; typecheck = Game.Chessboard[Current.X, Current.Y].GetType().ToString(); switch (typecheck) { case "Chess.Pawn": Pawn Pawnmover = new Pawn("WHITE"); Pawnmover = (Pawn)Game.Chessboard[Current.X, Current.Y]; if (Pawnmover.isMovable(Game, Next)) { Game.Chessboard[Current.X, Current.Y].Move(Game, Current, Next, Emptyspace); if (!(Checker.Checktest(Game, Next))) { Game.LastmoveReverser(Game, Current, Next, Emptyspace); } else { anyChanges = true; } } break; case "Chess.Bishop": Bishop Bishopmover = new Bishop("a"); Bishopmover = (Bishop)Game.Chessboard[Current.X, Current.Y]; if (Bishopmover.isMovable(Game, Next)) { Game.Chessboard[Current.X, Current.Y].Move(Game, Current, Next, Emptyspace); if (!(Checker.Checktest(Game, Next))) { Game.LastmoveReverser(Game, Current, Next, Emptyspace); } else { anyChanges = true; } } break; case "Chess.Queen": Queen Queenmover = new Queen("a"); Queenmover = (Queen)Game.Chessboard[Current.X, Current.Y]; if (Queenmover.isMovable(Game, Next)) { Game.Chessboard[Current.X, Current.Y].Move(Game, Current, Next, Emptyspace); if (!(Checker.Checktest(Game, Next))) { Game.LastmoveReverser(Game, Current, Next, Emptyspace); } else { anyChanges = true; } } break; case "Chess.Knight": Knight Knightmover = new Knight("a"); Knightmover = (Knight)Game.Chessboard[Current.X, Current.Y]; if (Knightmover.isMovable(Game, Next)) { Game.Chessboard[Current.X, Current.Y].Move(Game, Current, Next, Emptyspace); if (!(Checker.Checktest(Game, Next))) { Game.LastmoveReverser(Game, Current, Next, Emptyspace); } else { anyChanges = true; } } break; case "Chess.Castle": Castle Castlemover = new Castle("a"); Castlemover = (Castle)Game.Chessboard[Current.X, Current.Y]; if (Castlemover.isMovable(Game, Next)) { Game.Chessboard[Current.X, Current.Y].Move(Game, Current, Next, Emptyspace); if (!(Checker.Checktest(Game, Next))) { Game.LastmoveReverser(Game, Current, Next, Emptyspace); } else { anyChanges = true; } } break; case "Chess.King": King Kingmover = new King("a"); Kingmover = (King)Game.Chessboard[Current.X, Current.Y]; if (Kingmover.isMovable(Game, Next)) { Game.Chessboard[Current.X, Current.Y].Move(Game, Current, Next, Emptyspace); if (!(Checker.Checktest(Game, Next))) { Game.LastmoveReverser(Game, Current, Next, Emptyspace); } else { anyChanges = true; } } else if (Kingmover.Rooktest1(Game, Current, Next, Emptyspace) && Checker.Checktest(Game, Current)) { Game.Chessboard[Current.X, Current.Y].Rookmover1(Game, Current, Next, Emptyspace); anyChanges = true; } else if (Kingmover.Rooktest2(Game, Current, Next, Emptyspace) && Checker.Checktest(Game, Current)) { Game.Chessboard[Current.X, Current.Y].Rookmover2(Game, Current, Next, Emptyspace); anyChanges = true; } break; } if (CommonProperties.enPassantfinder + 1 > Game.White.Count || CommonProperties.enPassantfinder + 1 > Game.Black.Count) { CommonProperties.enPassantfinder = 0; } if (Game.White[CommonProperties.enPassantfinder].enPassantchecker == 2) { Game.White[CommonProperties.enPassantfinder].enPassantchecker -= 1; } else if (Game.White[CommonProperties.enPassantfinder].enPassantchecker == 1) { Game.White[CommonProperties.enPassantfinder].enPassantchecker -= 1; } if (Game.Black[CommonProperties.enPassantfinder].enPassantchecker == 2) { Game.Black[CommonProperties.enPassantfinder].enPassantchecker -= 1; } else if (Game.Black[CommonProperties.enPassantfinder].enPassantchecker == 1) { Game.Black[CommonProperties.enPassantfinder].enPassantchecker -= 1; } }