public ShipPlacement PlaceCarrier(Board board) { ShipPlacement response = default(ShipPlacement); ConsoleOutput.ShipPlacementMessage(ShipType.Carrier); Console.WriteLine(); do { var request = new PlaceShipRequest(); request.ShipType = ShipType.Carrier; request.Coordinate = input.GetCoordinates(); request.Direction = input.GetShipDirection(ShipType.Carrier); response = board.PlaceShip(request); if (response == ShipPlacement.NotEnoughSpace) { ConsoleOutput.NotEnoughSpaceMessage(); } else if (response == ShipPlacement.Overlap) { ConsoleOutput.OverlappingMessage(); } } while (response == ShipPlacement.NotEnoughSpace || response == ShipPlacement.Overlap); return(response); }
public Board GameSetUp() { //create board instance for current player //create placementRequest Board playerBoard = new Board(); PlaceShipRequest placementRequest = new PlaceShipRequest(); int shipsPlaced = 0; while (shipsPlaced < 5) { //populate ships on board for current player based on their input //get ship type ShipType ship = ConsoleInput.GetShipType(); placementRequest.ShipType = ship; //get coordinates Coordinate shipCoordinates = GetShipCoordinates(); placementRequest.Coordinate = shipCoordinates; //get ship direction ShipDirection direction = ConsoleInput.GetShipDirection(); placementRequest.Direction = direction; ShipPlacement response = playerBoard.PlaceShip(placementRequest); ConsoleOutput.DisplayShipPlacementResult(response); if (response == ShipPlacement.Ok) { shipsPlaced++; } } Console.Clear(); return(playerBoard); }
public Board BuildBoard(Board boardname) { boardname = new Board(); PlaceShipRequest request = new PlaceShipRequest(); ConsoleOutput.DrawBlankBoard(); for (ShipType s = ShipType.Destroyer; s <= ShipType.Carrier; s++) { request.ShipType = s; while (true) { Console.WriteLine($"Place your {s}, by indicating the starting coordinate.\n Press 'm' at any time to redraw the board"); request.Coordinate = ConsoleInput.GetCoordinateFromUser(); request.Direction = ConsoleInput.GetShipDirection(); var result = boardname.PlaceShip(request); if (result == ShipPlacement.Overlap) { ConsoleOutput.OverlappingShip(); } if (result == ShipPlacement.NotEnoughSpace) { ConsoleOutput.NotEnoughSpace(); } if (result == ShipPlacement.Ok) { ConsoleOutput.ShipSuccessPlaced(); break; } } } return(boardname); }
public PlaceShipRequest GetPlaceShipRequest(ShipType vessel) { return(new PlaceShipRequest() { Coordinate = ConsoleInput.GetCoordinate(), Direction = ConsoleInput.GetShipDirection(), ShipType = vessel }); }
//get user input to place their ship on the board private void SetupBoard(Player player) { PlaceShipRequest placeShip = new PlaceShipRequest(); ShipPlacement result = new ShipPlacement(); ShipType shipType = new ShipType(); int nextShip = 0; //clear screen and show the board layout Console.Clear(); cOutput.DrawUserBoard(null); Console.WriteLine(); Console.Write("Place your ships, "); Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine(player.Name.ToUpper()); Console.ResetColor(); for (int i = 0; i < 5; i++)//loop through the five ships needed to be placed { do { //start placing ship Console.WriteLine(); placeShip.Coordinate = cInput.GetUserCoord($"{player.Name}, Where do you want to place the {shipType + nextShip}: "); placeShip.Direction = cInput.GetShipDirection(); placeShip.ShipType = shipType + nextShip; result = player.GetBoard.PlaceShip(placeShip); Console.ForegroundColor = ConsoleColor.Red; if (result == ShipPlacement.NotEnoughSpace) { Console.WriteLine("Invalid placement. Not enough space."); } else if (result == ShipPlacement.Overlap) { Console.WriteLine("Invalid placement. There's already a ship there."); } Console.ResetColor(); } while (result != ShipPlacement.Ok); nextShip++;//used to move to the next ship type to be placed on the board Console.Clear(); cOutput.DrawShipOnBoard(player); } Console.Clear(); cOutput.DrawShipOnBoard(player); Console.WriteLine("\nPress any key to continue..."); Console.ReadKey(); }
public static void SetUpBoard(User player) { ShipPlacement response; var ships = new Dictionary <ShipType, int>() { { ShipType.Destroyer, 2 }, { ShipType.Cruiser, 3 }, { ShipType.Submarine, 3 }, { ShipType.Battleship, 4 }, { ShipType.Carrier, 5 } }; foreach (KeyValuePair <ShipType, int> vessel in ships) { do { Console.Clear(); ConsoleOutput.DisplayBoard(player, false); ConsoleOutput.DisplayPlacementMessage(player, vessel.Key, vessel.Value); var request = new PlaceShipRequest() { Coordinate = ConsoleInput.GetCoordinate(), Direction = ConsoleInput.GetShipDirection(), ShipType = vessel.Key }; response = player.Board.PlaceShip(request); Console.Clear(); ConsoleOutput.DisplayBoard(player, false); ConsoleOutput.DisplayShipResponse(request, response); ConsoleInput.Continue(); } while (response != ShipPlacement.Ok); } Console.Clear(); ConsoleOutput.DisplayBoard(player, false); ClearScreenPrompt(); }
public static void Startup() { bool playAgain = true; while (playAgain) { ConsoleOutput.MainMenu(); Console.Clear(); Player player1 = new Player(); Player player2 = new Player(); Player currentPlayer = new Player(); player1.Name = ConsoleInput.GetPlayerNames("Player 1 - Please enter your name:"); Console.Clear(); player2.Name = ConsoleInput.GetPlayerNames("Player 2 - Please enter your name:"); Console.Clear(); Random random = new Random(); int[] playerList = { 0, 1 }; int playerSelection = random.Next(0, playerList.Length); if (playerSelection == 0) { currentPlayer.Name = player1.Name; currentPlayer.Board = player1.Board; } currentPlayer.Name = player2.Name; currentPlayer.Board = player2.Board; Console.Clear(); Console.WriteLine(currentPlayer.Name + " - You will be first to shoot!"); Console.WriteLine(); Console.WriteLine(player1.Name + " - Get ready to place your board"); Console.WriteLine("Press any key to continue..."); Console.WriteLine(); Console.ReadKey(); Console.Clear(); foreach (ShipType ship in Enum.GetValues(typeof(ShipType))) { bool shipPlaced = false; do { Coordinate coordinate = ConsoleInput.GetShipCoordinate(player1.Name + " - Please Enter Your " + ship + " Coordinates. Example B2"); ShipDirection direction = ConsoleInput.GetShipDirection(player1.Name + " - Please Enter Your " + ship + "'s Direction - U - Up, D - Down, L - Left, R - Right"); PlaceShipRequest placeShipRequest = new PlaceShipRequest() { Coordinate = coordinate, Direction = direction, ShipType = ship }; var response = player1.Board.PlaceShip(placeShipRequest); switch (response) { case BLL.Responses.ShipPlacement.NotEnoughSpace: Console.WriteLine("Not enough space"); break; case BLL.Responses.ShipPlacement.Overlap: Console.WriteLine("Ship Overlaps"); break; default: shipPlaced = true; break; } }while (!shipPlaced); } Console.Clear(); foreach (ShipType ship in Enum.GetValues(typeof(ShipType))) { bool shipPlaced = false; do { Coordinate coordinate = ConsoleInput.GetShipCoordinate(player2.Name + " - Please Enter Your " + ship + " Coordinates. Example B2"); ShipDirection direction = ConsoleInput.GetShipDirection(player2.Name + " - Please Enter Your " + ship + "'s Direction - U - Up, D - Down, L - Left, R - Right"); PlaceShipRequest placeShipRequest = new PlaceShipRequest() { Coordinate = coordinate, Direction = direction, ShipType = ship }; var response = player2.Board.PlaceShip(placeShipRequest); switch (response) { case BLL.Responses.ShipPlacement.NotEnoughSpace: Console.WriteLine("Not Enough Space"); break; case BLL.Responses.ShipPlacement.Overlap: Console.WriteLine("Ship Overlaps"); break; default: shipPlaced = true; break; } }while (!shipPlaced); } Console.Clear(); Console.WriteLine(); Console.WriteLine(currentPlayer.Name + " - Get ready to shoot!"); bool GameOver = false; while (!GameOver) { if (currentPlayer.Name == player1.Name) { Coordinate fireShotCoordinate = ConsoleInput.FireShotCoordinates(player1.Name + " - Please select coordinates to fire your shot:"); FireShotResponse fireShotResponse = new FireShotResponse(); fireShotResponse = player2.Board.FireShot(fireShotCoordinate); switch (fireShotResponse.ShotStatus) { case ShotStatus.Duplicate: break; case ShotStatus.Invalid: break; case ShotStatus.Hit: Console.WriteLine("Nice hit!"); break; case ShotStatus.Miss: Console.WriteLine("You missed!"); break; case ShotStatus.HitAndSunk: Console.WriteLine("Hit and Sink"); break; case ShotStatus.Victory: default: Console.WriteLine("Congrats! You Win!"); GameOver = true; break; } DisplayBoard.DisplayScoreBoard(player2.Board); Console.WriteLine(); } while (!GameOver) { Coordinate fireShotCoordinate2 = ConsoleInput.FireShotCoordinates(player2.Name + " - Please select coordinates to fire your shot:"); FireShotResponse fireShotResponse2 = new FireShotResponse(); fireShotResponse2 = player1.Board.FireShot(fireShotCoordinate2); switch (fireShotResponse2.ShotStatus) { case ShotStatus.Duplicate: break; case ShotStatus.Invalid: break; case ShotStatus.Hit: Console.WriteLine("Nice hit!"); break; case ShotStatus.Miss: Console.WriteLine("You missed!"); break; case ShotStatus.HitAndSunk: Console.WriteLine("Hit and Sink"); break; case ShotStatus.Victory: default: Console.WriteLine("Congrats! You Win!"); GameOver = true; break; } DisplayBoard.DisplayScoreBoard(player1.Board); Console.WriteLine(); } } while (!GameOver) { if (currentPlayer.Name == player2.Name) { Coordinate fireShotCoordinate3 = ConsoleInput.FireShotCoordinates(player2.Name + " - Please select coordinates to fire your shot:"); FireShotResponse fireShotResponse3 = new FireShotResponse(); fireShotResponse3 = player1.Board.FireShot(fireShotCoordinate3); switch (fireShotResponse3.ShotStatus) { case ShotStatus.Duplicate: Console.WriteLine("Duplicate Shot!"); break; case ShotStatus.Invalid: Console.WriteLine("Invalid Shot!"); break; case ShotStatus.Hit: Console.WriteLine("Nice hit!"); break; case ShotStatus.Miss: Console.WriteLine("You missed!"); break; case ShotStatus.HitAndSunk: Console.WriteLine("Hit and Sink"); break; case ShotStatus.Victory: default: Console.WriteLine("Congrats! You Win!"); GameOver = true; break; } DisplayBoard.DisplayScoreBoard(player1.Board); Console.WriteLine(); } while (!GameOver) { Coordinate fireShotCoordinate4 = ConsoleInput.FireShotCoordinates(player1.Name + " - Please select coordinates to fire your shot:"); FireShotResponse fireShotResponse4 = new FireShotResponse(); fireShotResponse4 = player2.Board.FireShot(fireShotCoordinate4); switch (fireShotResponse4.ShotStatus) { case ShotStatus.Duplicate: Console.WriteLine("Duplicate Shot!"); break; case ShotStatus.Invalid: Console.WriteLine("Invalid Shot!"); break; case ShotStatus.Hit: Console.WriteLine("Nice hit!"); break; case ShotStatus.Miss: Console.WriteLine("You missed!"); break; case ShotStatus.HitAndSunk: Console.WriteLine("Hit and Sink"); break; case ShotStatus.Victory: default: Console.WriteLine("Congrats! You Win!"); GameOver = true; break; } DisplayBoard.DisplayScoreBoard(player2.Board); Console.WriteLine(); } } Console.WriteLine("Do you want to play again? Y or N"); string startOver = Console.ReadLine().ToUpper(); if (startOver == "Y" || startOver == "YES") { playAgain = true; } if (startOver == "N" || startOver == "NO") { Console.WriteLine("Thanks for playing!"); playAgain = false; } } }