public int GetWinnerScore(e_PlayerColor i_PlayerColor) { int playerScore = getPlayerScore(i_PlayerColor); int opponentScore = getPlayerScore(Player.GetMyOpponentColor(i_PlayerColor)); return(playerScore - opponentScore); }
private void handleGameOverAndRematch() { e_PlayerColor winnerColor = e_PlayerColor.Tie; if (m_Board.IsGameOver(ref winnerColor, m_Board.CurrentPlayerTurn)) { syncButtonsBoardWithLogicalBoard(); Player winner = m_Board.GetPlayerByColor(winnerColor); winner.Score += m_Board.GetWinnerScore(winnerColor); StringBuilder messege = new StringBuilder(); messege.AppendFormat("{0} Won!", winner.PlayerName); messege.AppendLine(); messege.AppendFormat("Another Round?"); DialogResult result = MessageBox.Show(messege.ToString(), "Damka", MessageBoxButtons.YesNo); if (result == DialogResult.No) { this.Close(); } else { m_Board.SetBoardForNewGame(); labelPlayerA.Text = string.Format("{0}: {1}", m_Board.PlayerA.PlayerName, m_Board.PlayerA.Score); labelPlayerB.Text = string.Format("{0}: {1}", m_Board.PlayerB.PlayerName, m_Board.PlayerB.Score); } } }
private void updateBoard(e_PlayerColor i_PlayerColor, Move i_Move) { updateBoardForPlainMove(i_PlayerColor, i_Move); updateBoardForJumpMove(i_PlayerColor, i_Move); GameBoard[i_Move.FromRow, i_Move.FromColumn].CellContent = e_CellContent.Empty; }
private int getPlayerScore(e_PlayerColor i_PlayerColor) { if (i_PlayerColor == e_PlayerColor.Black) { return(BlackCurrentScore); } else { return(RedCurrentScore); } }
public static e_PlayerColor GetMyOpponentColor(e_PlayerColor i_playerColor) { e_PlayerColor opponentColor; if (i_playerColor == e_PlayerColor.Black) { opponentColor = e_PlayerColor.Red; } else { opponentColor = e_PlayerColor.Black; } return(opponentColor); }
private bool isValidMove(e_PlayerColor i_PlayerColor, Move i_move) { List <Move> validMoves = getAllValidMoves(i_PlayerColor); bool validMove = false; foreach (Move move in validMoves) { if (i_move.Equals(move)) { validMove = true; } } return(validMove); }
public Player GetPlayerByColor(e_PlayerColor i_Color) { Player player; if (i_Color == e_PlayerColor.Black) { player = PlayerA; } else { player = PlayerB; } return(player); }
private bool MovePlayerPiece(e_PlayerColor i_CurPlayerColor, Move i_Move) { bool validMove = isValidMove(i_CurPlayerColor, i_Move); if (validMove == true) { updateBoard(i_CurPlayerColor, i_Move); setNextTurnPlayer(i_CurPlayerColor, i_Move); } else { validMove = false; } return(validMove); }
private void updateBoardForPlainMove(e_PlayerColor i_PlayerColor, Move i_Move) { if (i_PlayerColor == e_PlayerColor.Red && i_Move.ToRow == Dimension - 1) { GameBoard[i_Move.ToRow, i_Move.ToColumn].CellContent = e_CellContent.RedKing; RedCurrentScore += 3; } else if (i_PlayerColor == e_PlayerColor.Black && i_Move.ToRow == 0) { GameBoard[i_Move.ToRow, i_Move.ToColumn].CellContent = e_CellContent.BlackKing; BlackCurrentScore += 3; } else { GameBoard[i_Move.ToRow, i_Move.ToColumn].CellContent = GameBoard[i_Move.FromRow, i_Move.FromColumn].CellContent; } }
private List <Move> GetAllCurEatingMoves(e_PlayerColor i_PlayerColor, int i_CurCol, int i_CurRow) { List <Move> curPlayerValidMoves = getAllValidMoves(i_PlayerColor); List <Move> curEatingMoves = new List <Move>(); for (int i = 0; i < curPlayerValidMoves.Count; i++) { if (curPlayerValidMoves[i].FromColumn == i_CurCol && curPlayerValidMoves[i].FromRow == i_CurRow && curPlayerValidMoves[i].IsEatingMove()) { curEatingMoves.Add(curPlayerValidMoves[i]); } } return(curEatingMoves); }
private void setNextTurnPlayer(e_PlayerColor i_CurPlayerColor, Move i_Move) { if ((i_Move.IsEatingMove() == true) && (GetAllCurEatingMoves(i_CurPlayerColor, i_Move.ToColumn, i_Move.ToRow).Count > 0)) { CurrentPlayerTurn = i_CurPlayerColor; } else { if (i_CurPlayerColor == e_PlayerColor.Black) { CurrentPlayerTurn = e_PlayerColor.Red; } else { CurrentPlayerTurn = e_PlayerColor.Black; } } }
private void updateBoardForJumpMove(e_PlayerColor i_PlayerColor, Move i_Move) { int fromRow = i_Move.FromRow; int formColumn = i_Move.FromColumn; int toRow = i_Move.ToRow; int toColumn = i_Move.ToColumn; if (Math.Abs(fromRow - i_Move.ToRow) == 2) { if (fromRow > i_Move.ToRow) { if (formColumn > toColumn) { updatePlayerScoreAfterJump(GameBoard[fromRow - 1, formColumn - 1].CellContent); GameBoard[fromRow - 1, formColumn - 1].CellContent = e_CellContent.Empty; } else { updatePlayerScoreAfterJump(GameBoard[fromRow - 1, formColumn + 1].CellContent); GameBoard[fromRow - 1, formColumn + 1].CellContent = e_CellContent.Empty; } } else { if (formColumn > toColumn) { updatePlayerScoreAfterJump(GameBoard[fromRow + 1, formColumn - 1].CellContent); GameBoard[fromRow + 1, formColumn - 1].CellContent = e_CellContent.Empty; } else { updatePlayerScoreAfterJump(GameBoard[fromRow + 1, formColumn + 1].CellContent); GameBoard[fromRow + 1, formColumn + 1].CellContent = e_CellContent.Empty; } } } }
public bool IsGameOver(ref e_PlayerColor o_winnerColor, e_PlayerColor i_CurPlayerColor) { bool isGameOver = false; e_PlayerColor opponentColor = Player.GetMyOpponentColor(i_CurPlayerColor); o_winnerColor = GetCurrWinner(); if (getPlayerScore(i_CurPlayerColor) == 0) { o_winnerColor = opponentColor; isGameOver = true; } else { List <Move> curPlayerValidMoves = getAllValidMoves(i_CurPlayerColor); List <Move> opponentPlayerValidMoves = getAllValidMoves(opponentColor); if (curPlayerValidMoves.Count == 0) { if (opponentPlayerValidMoves.Count == 0) { o_winnerColor = e_PlayerColor.Tie; isGameOver = true; } else { o_winnerColor = opponentColor; isGameOver = true; } } else { isGameOver = false; } } return(isGameOver); }
private List <Move> getAllValidMoves(e_PlayerColor i_PlayerColor) { List <Move> validMoves = new List <Move>(); List <Move> validJumpMoves = new List <Move>(); for (int x = 0; x < Dimension; x++) { for (int y = 0; y < Dimension; y++) { if (i_PlayerColor == e_PlayerColor.Black) { if (GameBoard[x, y].IsBlackPiece()) { Piece piece = new Piece(GameBoard[x, y].CellContent, x, y); checkIfPieceCanMove(piece, ref validMoves, ref validJumpMoves); } } if (i_PlayerColor == e_PlayerColor.Red) { if (GameBoard[x, y].IsRedPiece()) { Piece piece = new Piece(GameBoard[x, y].CellContent, x, y); checkIfPieceCanMove(piece, ref validMoves, ref validJumpMoves); } } } } if (validJumpMoves.Count > 0) { validMoves = validJumpMoves; } return(validMoves); }
public Player(e_PlayerColor i_PlayerColor, string i_PlayerName) { PlayerColor = i_PlayerColor; PlayerName = i_PlayerName; }