public MainWindow()
 {
     InitializeComponent();
     currentMove = null;
     winner = null;
     turn = "Black";
     this.Title = "Checkers: Blacks turn";
     MakeBoard();
 }
        public bool AllowMove(Button button1, Button button2, string colorCheckingMoveFor, string oppositeColor)
        {
            GameBoard currentBoard = GetCurrentBoard();
            List<GamePieceMovement> jumpMoves = currentBoard.CheckJumps(colorCheckingMoveFor);

            if (jumpMoves.Count > 0)
            {
                bool invalid = true;
                foreach (GamePieceMovement move in jumpMoves)
                {
                    if (currentMove.Equals(move))
                        invalid = false;
                }
                if (invalid)
                {
                    DisplayError("Jump must be taken");
                    currentMove.piece1 = null;
                    currentMove.piece2 = null;
                    return false;
                }
            }
            if (button1.Name.Contains(colorCheckingMoveFor))
            {
                if (button1.Name.Contains("King"))
                {
                    if ((currentMove.IsAdjacent("King")) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
                        return true;
                    GamePiece middlePiece = currentMove.CheckJump("King");
                    if ((middlePiece != null) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
                    {
                        StackPanel middleStackPanel = (StackPanel)GetGridElement(CheckersGrid, middlePiece.Row, middlePiece.Column);
                        Button middleButton = (Button)middleStackPanel.Children[0];
                        if (middleButton.Name.Contains(oppositeColor))
                        {
                            CheckersGrid.Children.Remove(middleStackPanel);
                            RemoveJumpedPiece(middlePiece);
                            return true;
                        }
                    }
                }
                else
                {
                    if ((currentMove.IsAdjacent(colorCheckingMoveFor)) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
                        return true;
                    GamePiece middlePiece = currentMove.CheckJump(colorCheckingMoveFor);
                    if ((middlePiece != null) && (!button2.Name.Contains("Black")) && (!button2.Name.Contains("Red")))
                    {
                        StackPanel middleStackPanel = (StackPanel)GetGridElement(CheckersGrid, middlePiece.Row, middlePiece.Column);
                        Button middleButton = (Button)middleStackPanel.Children[0];
                        if (middleButton.Name.Contains(oppositeColor))
                        {
                            CheckersGrid.Children.Remove(middleStackPanel);
                            RemoveJumpedPiece(middlePiece);
                            return true;
                        }
                    }
                }
            }
            currentMove = null;
            DisplayError("Invalid Move. Try Again.");
            return false;
        }
 public void NewGame()
 {
     currentMove = null;
     winner = null;
     turn = "Black";
     this.Title = "Checkers: Blacks turn";
     ClearBoard();
     MakeBoard();
 }
 public void MakeMove()
 {
     if ((currentMove.piece1 != null) && (currentMove.piece2 != null))
     {
         StackPanel stackPanel1 = (StackPanel)GetGridElement(CheckersGrid, currentMove.piece1.Row, currentMove.piece1.Column);
         StackPanel stackPanel2 = (StackPanel)GetGridElement(CheckersGrid, currentMove.piece2.Row, currentMove.piece2.Column);
         CheckersGrid.Children.Remove(stackPanel1);
         CheckersGrid.Children.Remove(stackPanel2);
         Grid.SetRow(stackPanel1, currentMove.piece2.Row);
         Grid.SetColumn(stackPanel1, currentMove.piece2.Column);
         CheckersGrid.Children.Add(stackPanel1);
         Grid.SetRow(stackPanel2, currentMove.piece1.Row);
         Grid.SetColumn(stackPanel2, currentMove.piece1.Column);
         CheckersGrid.Children.Add(stackPanel2);
         MakePieceKing(currentMove.piece2);
         currentMove = null;
         if (turn == "Black")
         {
             this.Title = "Checkers: Reds turn";
             turn = "Red";
         }
         else if (turn == "Red")
         {
             this.Title = "Checkers: Blacks turn";
             turn = "Black";
         }
         CheckWin();
     }
 }
 public void button_Click(Object sender, RoutedEventArgs e)
 {
     Button button = (Button)sender;
     StackPanel stackPanel = (StackPanel)button.Parent;
     int row = Grid.GetRow(stackPanel);
     int col = Grid.GetColumn(stackPanel);
     if (currentMove == null)
         currentMove = new GamePieceMovement();
     if (currentMove.piece1 == null)
     {
         currentMove.piece1 = new GamePiece(row, col);
         stackPanel.Background = Brushes.Green;
     }
     else
     {
         currentMove.piece2 = new GamePiece(row, col);
         stackPanel.Background = Brushes.Green;
     }
     if ((currentMove.piece1 != null) && (currentMove.piece2 != null))
     {
         if (CheckMove())
         {
             MakeMove();
         }
     }
 }