// reset every label in the current outline to the normal background color private void resetOutline() { foreach (Coords coords in placementOutline) { Control label = BoardTable.GetControlFromPosition(coords.x, coords.y); label.BackColor = Color.DodgerBlue; } placementOutline.Clear(); }
public ChessGame() { Board = new BoardTable(8, 8); Turn = 1; CurrentPlayer = Color.White; EndGame = false; GamePieces = new HashSet <Piece>(); CapturedPieces = new HashSet <Piece>(); StartPieces(); PlayerInCheck = false; VulnerableToEnPassant = null; }
public static void PrintBoard(BoardTable board) { for (int i = 0; i < board.Lines; i++) { Console.Write(8 - i + ") "); for (int j = 0; j < board.Lines; j++) { PrintPieceOnBoard(board.GetPiece(i, j)); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine(" ^ ^ ^ ^ ^ ^ ^ ^"); Console.WriteLine(" a b c d e f g h"); }
public static void PrintBoard(BoardTable board, bool[,] possibleMoves) { for (int i = 0; i < board.Lines; i++) { Console.Write(8 - i + ") "); for (int j = 0; j < board.Lines; j++) { if (possibleMoves[i, j]) { Console.BackgroundColor = ConsoleColor.Cyan; } PrintPieceOnBoard(board.GetPiece(i, j)); Console.ResetColor(); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine(" ^ ^ ^ ^ ^ ^ ^ ^"); Console.WriteLine(" a b c d e f g h"); }
void Start() { moveTo = MovementTYPE.LEFT; BoxCollider2D Button0Box; Buttons = new GameObject[16]; ButtonsCenter = new float[16]; ButtonsLeft = new float[16]; ButtonsRight = new float[16]; ButtonsUp = new float[16]; ButtonsDown = new float[16]; findButtonsGameobject (); for (int i = 0; i < 16; i++) { Button0Box = Buttons[i].GetComponent<BoxCollider2D>(); // Debug.Log(Button0Box.transform.position.x); // Debug.Log(Button0Box.size); // Debug.Log (Button0Box.bounds.extents.x); ButtonsCenter[i] = Button0Box.bounds.center.x; ButtonsLeft[i] = ButtonsCenter [i] - (Button0Box.bounds.extents.x / 2); ButtonsRight [i] = ButtonsCenter [i] + (Button0Box.bounds.extents.x / 2); ButtonsCenter[i] = Button0Box.bounds.center.y; ButtonsDown[i] = ButtonsCenter [i] - (Button0Box.bounds.extents.y / 2); ButtonsUp [i] = ButtonsCenter [i] + (Button0Box.bounds.extents.y / 2); // Debug.Log ("\n BUTTON " + i); // Debug.Log ("\n LEFT : " + ButtonsLeft [i]); // Debug.Log ("\n Right : " + ButtonsRight [i]); // Debug.Log ("\n Up : " + ButtonsUp [i]); // Debug.Log ("\n Down : " + ButtonsDown [i]); // Debug.Log ("\n Button Finished"); } table = new BoardTable (); table.LoadLevel (1); setSpritesOfLevel (); }
//Constructor public Bishop(Color color, BoardTable board) : base(color, board) { }
//Constructor public King(Color color, BoardTable board, ChessGame game) : base(color, board) { Game = game; }
//Constructor public Rook(Color color, BoardTable board) : base(color, board) { }
private void PositionClick(object sender, EventArgs e) { // consider adding a check for type in the future to made it more modular Label selected = (Label)sender; ShipInfo ship = shipsToPlace.Peek(); int size = ship.size; int startRow = BoardTable.GetRow(selected); int startColumn = BoardTable.GetColumn(selected); validPlacement = true; // display horizontal if this is the first click or if the label is the same one clicked if (placementOutline.Count == 0 || ((placementOutline[0].x != BoardTable.GetColumn(selected)) || (placementOutline[0].y != BoardTable.GetRow(selected)))) { // get rid of the old outline resetOutline(); if (size > (10 - startColumn)) { size = (10 - startColumn); validPlacement = false; } // make a new outline, checking if it's valid for (int i = 0; i < size; i++) { placementOutline.Add(new Coords((startColumn + i), startRow)); // if the space has a ship already in it mark as invalid if (BoardTable.GetControlFromPosition((startColumn + i), startRow).Text != "") { validPlacement = false; } } } // otherwise flip it to vertical else { // get rid of the old outline resetOutline(); if (size > (10 - startRow)) { size = (10 - startRow); validPlacement = false; } // make a new outline, checking if it's valid for (int i = 0; i < size; i++) { placementOutline.Add(new Coords(startColumn, (startRow + i))); // if the space has a ship already in it mark as invalid if (BoardTable.GetControlFromPosition(startColumn, (startRow + i)).Text != "") { validPlacement = false; } } } // display the placeholder on the board foreach (Coords coords in placementOutline) { Control label = BoardTable.GetControlFromPosition(coords.x, coords.y); if (validPlacement) { label.BackColor = Color.Lime; } else { label.BackColor = Color.Red; } } }
private void TakeShot(object sender, EventArgs e) { // consider adding a check for type in the future to made it more modular Label selected = (Label)sender; // create a Coords for the player shot and send it to the opponent if (selected.BackColor == Color.DodgerBlue) { Coords playerShot = new Coords(OpponentBoard.GetRow(selected), OpponentBoard.GetColumn(selected)); int result = AI.ResolveShot(playerShot); UpdateLabel(true, result); // if a miss, chance to miss color, otherwise turn hit color and check for sunk if (result == 0) { selected.BackColor = Color.AliceBlue; } else { selected.BackColor = Color.Red; // adjust the ship labels if a ship was sunk if (result > 1) { switch (result) { case 2: OpponentPTBoatLabel.Font = new Font(OpponentPTBoatLabel.Font, FontStyle.Strikeout); break; case 3: OpponentSubmarineLabel.Font = new Font(OpponentSubmarineLabel.Font, FontStyle.Strikeout); break; case 4: OpponentDestroyerLabel.Font = new Font(OpponentDestroyerLabel.Font, FontStyle.Strikeout); break; case 5: OpponentBattleshipLabel.Font = new Font(OpponentBattleshipLabel.Font, FontStyle.Strikeout); break; case 6: OpponentCarrierLabel.Font = new Font(OpponentCarrierLabel.Font, FontStyle.Strikeout); break; default: break; } } } } // if the have already selected that space it will not be the normal color and we can discout their click else { return; } if (AI.CheckLose()) { MessageBox.Show("You won!", "Victory!"); Close(); } // now the opponent shoots at us **temporary code *** Coords opponentShot = AI.TakeTurn(); int shotResult = ResolveShot(opponentShot); AI.Report(shotResult); UpdateLabel(false, shotResult); Control label = BoardTable.GetControlFromPosition(opponentShot.x, opponentShot.y); // if a miss, chance to miss color, otherwise turn hit color and check for sunk if (shotResult == 0) { label.BackColor = Color.AliceBlue; } else { label.BackColor = Color.Red; // adjust the ship labels if a ship was sunk if (shotResult > 1) { switch (shotResult) { case 2: PlayerPTBoatLabel.Font = new Font(PlayerPTBoatLabel.Font, FontStyle.Strikeout); break; case 3: PlayerSubmarineLabel.Font = new Font(PlayerSubmarineLabel.Font, FontStyle.Strikeout); break; case 4: PlayerDestroyerLabel.Font = new Font(PlayerDestroyerLabel.Font, FontStyle.Strikeout); break; case 5: PlayerBattleshipLabel.Font = new Font(PlayerBattleshipLabel.Font, FontStyle.Strikeout); break; case 6: PlayerCarrierLabel.Font = new Font(PlayerCarrierLabel.Font, FontStyle.Strikeout); break; default: break; } } } if (shipsSunk > 4) { MessageBox.Show("You lost, better luck next time", "Defeat"); Close(); } }
// place the ship if the placement is valid private void PlaceButton_Click(object sender, EventArgs e) { if (!validPlacement) { MessageBox.Show("That is an invalid placement for that ship.", "Warning"); } else { ShipInfo ship = shipsToPlace.Dequeue(); string symbol = ship.symbol; // for every coordinate reset the background color and set the symbol foreach (Coords coords in placementOutline) { Control label = BoardTable.GetControlFromPosition(coords.x, coords.y); label.BackColor = Color.DodgerBlue; label.Text = symbol; } // if the first two coords have the same y value it is horizontal, then add the ship based on the symbol // side note: I could probably find a more elegant way to do this but I was feeling tired and just needed it implemented bool horizontal = (placementOutline[0].y == placementOutline[1].y); if (symbol == "C") { playerShips.Add(new Carrier(placementOutline[0], horizontal)); } else if (symbol == "B") { playerShips.Add(new Battleship(placementOutline[0], horizontal)); } else if (symbol == "D") { playerShips.Add(new Destroyer(placementOutline[0], horizontal)); } else if (symbol == "S") { playerShips.Add(new Submarine(placementOutline[0], horizontal)); } else if (symbol == "P") { playerShips.Add(new PTBoat(placementOutline[0], horizontal)); } else { // *** implement the somethign has gone horribly wrong contingency *** } } // if all ships are placed, start the game if (shipsToPlace.Count == 0) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { BoardTable.GetControlFromPosition(i, j).Enabled = false; OpponentBoard.GetControlFromPosition(i, j).Enabled = true; } } PlaceButton.Enabled = false; shipsSunk = 0; } }
//Constructor public Queen(Color color, BoardTable board) : base(color, board) { }
//Constructor public Knight(Color color, BoardTable board) : base(color, board) { }