public bool isMoveSafe(int colorSel, ChessPiece[] pcs, int pNum, int[] moveLoc) //returns whether a move is safe or not //if this list is empty it is checkmate { Board b; ChessPiece[] p = new ChessPiece[32]; for (int i = 0; i < pcs.Length; i++) //create a set of new pieces to be passed to the new board for checking { if (pcs[i].getType() == 1) { p[i] = new Pawn(i, pcs[i].getPColor()); p[i].setLocation(pcs[i].getLocation()[0], pcs[i].getLocation()[1]); } if (pcs[i].getType() == 2) { p[i] = new Knight(i, pcs[i].getPColor()); p[i].setLocation(pcs[i].getLocation()[0], pcs[i].getLocation()[1]); } if (pcs[i].getType() == 3) { p[i] = new Bishop(i, pcs[i].getPColor()); p[i].setLocation(pcs[i].getLocation()[0], pcs[i].getLocation()[1]); } if (pcs[i].getType() == 4) { p[i] = new Rook(i, pcs[i].getPColor()); p[i].setLocation(pcs[i].getLocation()[0], pcs[i].getLocation()[1]); } if (pcs[i].getType() == 5) { p[i] = new Queen(i, pcs[i].getPColor()); p[i].setLocation(pcs[i].getLocation()[0], pcs[i].getLocation()[1]); } if (pcs[i].getType() == 6) { p[i] = new King(i, pcs[i].getPColor()); p[i].setLocation(pcs[i].getLocation()[0], pcs[i].getLocation()[1]); } if (p[i].getLocation()[0] == moveLoc[0] && p[i].getLocation()[1] == moveLoc[1] && p[i].getType() != 6) //no piece can hold the same location { p[i].setLocation(-1, -1); } } p[pNum].setLocation(moveLoc[0], moveLoc[1]); b = new Board(colorSel, p); //create a new board with the new move location to check if it puts the king in check int[] kingLoc = b.findKing(pcs[pNum].getPColor()); //the kings location in the new board if (((King)b.getBoard()[kingLoc[0], kingLoc[1]]).isCheck(kingLoc, b.getBoard(), colorSel)) //if the move is check return false { return(false); } else //if the move is safe return true { return(true); } }
private void initializeGame() //call to set up the gameboard { ChessPiece[,] gameBoard = game.getBoard(); for (int i = 0; i < 8; i++) //maps the gameboard to buttons for the ui { for (int j = 0; j < 8; j++) { boardButtons[i, j] = new Button(); boardButtons[i, j].Location = new Point(i * 50, j * 50); boardButtons[i, j].Size = new Size(50, 50); boardButtons[i, j].Paint += button_Paint; boardButtons[i, j].Enabled = false; if (gameBoard[i, j] != null) { if (gameBoard[i, j].getPColor() == 0) { if (gameBoard[i, j].getType() == 1) { boardButtons[i, j].Text = "Pa"; boardButtons[i, j].ForeColor = Color.White; if (turn == 0) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 2) { boardButtons[i, j].Text = "Kn"; boardButtons[i, j].ForeColor = Color.White; if (turn == 0) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 3) { boardButtons[i, j].Text = "Bi"; boardButtons[i, j].ForeColor = Color.White; if (turn == 0) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 4) { boardButtons[i, j].Text = "Ro"; boardButtons[i, j].ForeColor = Color.White; if (turn == 0) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 5) { boardButtons[i, j].Text = "Qu"; boardButtons[i, j].ForeColor = Color.White; if (turn == 0) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 6) { boardButtons[i, j].Text = "Ki"; boardButtons[i, j].ForeColor = Color.White; if (turn == 0) { boardButtons[i, j].Enabled = true; } } } else { if (gameBoard[i, j].getType() == 1) { boardButtons[i, j].Text = "Pa"; if (turn == 1) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 2) { boardButtons[i, j].Text = "Kn"; if (turn == 1) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 3) { boardButtons[i, j].Text = "Bi"; if (turn == 1) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 4) { boardButtons[i, j].Text = "Ro"; if (turn == 1) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 5) { boardButtons[i, j].Text = "Qu"; if (turn == 1) { boardButtons[i, j].Enabled = true; } } if (gameBoard[i, j].getType() == 6) { boardButtons[i, j].Text = "Ki"; if (turn == 1) { boardButtons[i, j].Enabled = true; } } } } if ((i + j) % 2 == 0) { boardButtons[i, j].BackColor = Color.Gray; } else { boardButtons[i, j].BackColor = Color.DarkGray; } boardButtons[i, j].Click += button_Click; Controls.Add(boardButtons[i, j]); } } Button saveBtn = new Button(); saveBtn.Click += saveButton_Click; saveBtn.Text = "Save Game"; saveBtn.Location = new Point(350, 420); Controls.Add(saveBtn); checkGameState(); }