protected void Emptybutton_Click(object sender, EventArgs e) { Button button = sender as Button; if (playerMove.GetSize() >= 1) { CKPoint point = (CKPoint)button.Tag; playerMove.BuildMove(point); System.Diagnostics.Debug.WriteLine("Point: " + point.GetRow() + "," + point.GetColumn()); // Color boarder Button piece = (Button)sender; piece.FlatAppearance.BorderSize = 1; piece.FlatAppearance.BorderColor = Color.White; } // identify which button was clicked and perform necessary actions }
private Button CreatePiece(Point pos, CKPoint point, CheckerPieces Ptype) { Button piece = new Button(); piece.TabStop = false; piece.FlatStyle = FlatStyle.Flat; piece.FlatAppearance.BorderSize = 0; piece.Width = 64; piece.Height = 64; piece.Location = pos; piece.Tag = point; switch (Ptype) { case CheckerPieces.Red: piece.Image = Properties.Resources.Red_Piece; piece.Click += new EventHandler(Redbutton_Click); break; case CheckerPieces.RedKing: piece.Image = Properties.Resources.Red_Piece_King; piece.Click += new EventHandler(RedKingbutton_Click); break; case CheckerPieces.Black: piece.Image = Properties.Resources.Black_Piece; piece.Click += new EventHandler(Blackbutton_Click); break; case CheckerPieces.BlackKing: piece.Image = Properties.Resources.Black_Piece_King; piece.Click += new EventHandler(BlackKingbutton_Click); break; case CheckerPieces.Empty: //piece.Image = Properties.Resources.Red_Piece; piece.Click += new EventHandler(Emptybutton_Click); break; default: break; } this.BeginInvoke((Action) delegate() { this.Controls.Add(piece); piece.BringToFront(); piece.Parent = Board; piece.BackColor = Color.Transparent; Board.Refresh(); }); return(piece); }
CheckerPieces SetPieceFromPoint(CheckerPieces piece, CKPoint point) { return(gameBoard[point.GetRow(), point.GetColumn()]); }
public void BuildMove(CKPoint point) { //RestartMove(); move.Add(point); }
public bool ApplyMove(PlayerMove move) { List <CKPoint> listPoints = move.GetPlayerMove(); if (listPoints.Count < 2) { return(false); } CKPoint startingPoint = listPoints[0]; // A move will always be at least 2 long, with index 0 being the starting point CKPoint endingPoint = listPoints[listPoints.Count - 1]; CheckerPieces piece = gameBoard[startingPoint.GetRow(), startingPoint.GetColumn()]; // Column is x, Row is y Console.WriteLine(startingPoint.GetRow() + " " + startingPoint.GetColumn()); Console.WriteLine(endingPoint.GetRow() + " " + endingPoint.GetColumn()); Console.WriteLine(piece); if (piece == CheckerPieces.Empty) { return(false); } Console.WriteLine("test"); CheckerPieces[] opponentPieces = new CheckerPieces[2]; if (piece == CheckerPieces.Red || piece == CheckerPieces.RedKing && currentPlayer == 1) { opponentPieces[0] = CheckerPieces.Black; opponentPieces[1] = CheckerPieces.BlackKing; } else if (piece == CheckerPieces.Black || piece == CheckerPieces.BlackKing && currentPlayer == 2) { opponentPieces[0] = CheckerPieces.Red; opponentPieces[1] = CheckerPieces.RedKing; } else { return(false); // you moved the wrong peice } CKPoint fromPoint = startingPoint; foreach (CKPoint point in listPoints) { if (point == startingPoint) // Starting Point, skip { continue; } else if (Math.Abs(fromPoint.GetRow() - point.GetRow()) == 0) // Invalid move // Throw error { throw new InvalidOperationException("Move not changing rows (y direction)"); //return false; } else if (Math.Abs(fromPoint.GetColumn() - point.GetColumn()) == 0) // Invalid move // Throw error { throw new InvalidOperationException("Move not changing columns (x direction)"); //return false; } else if (Math.Abs(fromPoint.GetRow() - point.GetRow()) == 1 && listPoints.Count == 2) // Not jumping, just move to new point if empty { if (piece == CheckerPieces.Red) { if (fromPoint.GetRow() - point.GetRow() != -1 || gameBoard[point.GetRow(), point.GetColumn()] != CheckerPieces.Empty) { // Throw error throw new InvalidOperationException("Red piece single move invalid"); //return false; } } else if (piece == CheckerPieces.Black) { if (fromPoint.GetRow() - point.GetRow() != 1 || gameBoard[point.GetRow(), point.GetColumn()] != CheckerPieces.Empty) { // Throw error throw new InvalidOperationException("Black piece single move invalid"); //return false; } } else if (piece == CheckerPieces.RedKing || piece == CheckerPieces.BlackKing) { if (Math.Abs(fromPoint.GetRow() - point.GetRow()) != 1 || gameBoard[point.GetRow(), point.GetColumn()] != CheckerPieces.Empty) { // Throw error throw new InvalidOperationException("King piece single move invalid"); //return false; } } gameBoard[fromPoint.GetRow(), fromPoint.GetColumn()] = CheckerPieces.Empty; gameBoard[point.GetRow(), point.GetColumn()] = piece; } else if (Math.Abs(fromPoint.GetRow() - point.GetRow()) == 2) // Jumping to take pieces { int middleColumn = Math.Abs(fromPoint.GetColumn() + point.GetColumn()) / 2; int middleRow = Math.Abs(fromPoint.GetRow() + point.GetRow()) / 2; if (piece == CheckerPieces.Red) { if (fromPoint.GetRow() - point.GetRow() != -2 || gameBoard[point.GetRow(), point.GetColumn()] != CheckerPieces.Empty || (gameBoard[middleRow, middleColumn] != CheckerPieces.Black && gameBoard[middleRow, middleColumn] != CheckerPieces.BlackKing)) { // Throw error throw new InvalidOperationException("Red piece single jump invalid"); //return false; } } else if (piece == CheckerPieces.Black) { if (fromPoint.GetRow() - point.GetRow() != 2 || gameBoard[point.GetRow(), point.GetColumn()] != CheckerPieces.Empty || (gameBoard[middleRow, middleColumn] != opponentPieces[0] && gameBoard[middleRow, middleColumn] != opponentPieces[1])) { // Throw error Console.WriteLine(fromPoint.GetRow() + " " + point.GetRow()); Console.WriteLine(gameBoard[point.GetRow(), point.GetColumn()]); Console.WriteLine(gameBoard[middleRow, middleColumn]); Console.WriteLine(middleRow); Console.WriteLine(middleColumn); throw new InvalidOperationException("Black piece single jump invalid"); //return false; } } else if (piece == CheckerPieces.RedKing || piece == CheckerPieces.BlackKing) { if (Math.Abs(fromPoint.GetRow() - point.GetRow()) != 2 || gameBoard[point.GetRow(), point.GetColumn()] != CheckerPieces.Empty || (gameBoard[middleRow, middleColumn] != opponentPieces[0] && gameBoard[middleRow, middleColumn] != opponentPieces[1])) { // Throw error throw new InvalidOperationException("King piece single jump invalid"); //return false; } } gameBoard[fromPoint.GetRow(), fromPoint.GetColumn()] = CheckerPieces.Empty; gameBoard[middleRow, middleColumn] = CheckerPieces.Empty; gameBoard[point.GetRow(), point.GetColumn()] = piece; } else { return(false); } fromPoint = point; // Make the point we just moved to the new fromPoint for the next move } // Check if piece should turn into King if (endingPoint.GetRow() == 0 || endingPoint.GetRow() == 7 && (piece != CheckerPieces.RedKing || piece != CheckerPieces.BlackKing)) { if (piece == CheckerPieces.Red) { gameBoard[endingPoint.GetRow(), endingPoint.GetColumn()] = CheckerPieces.RedKing; } else if (piece == CheckerPieces.Black) { gameBoard[endingPoint.GetRow(), endingPoint.GetColumn()] = CheckerPieces.BlackKing; } } return(true); }