示例#1
0
        public void SetUpBoard()
        {
            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)
            {
                ShipPlacement response;
                do
                {
                    Console.Clear();
                    ConsoleOutput.DisplayBoard(this, false);
                    ConsoleOutput.DisplayPlacementMessage(this, vessel.Key, vessel.Value);
                    PlaceShipRequest request = GetPlaceShipRequest(vessel.Key);

                    response = Board.PlaceShip(request);

                    Console.Clear();
                    ConsoleOutput.DisplayBoard(this, false);
                    ConsoleOutput.DisplayShipResponse(request, response);
                    ConsoleInput.Continue();
                } while (response != ShipPlacement.Ok);
            }
            Console.Clear();
            ConsoleOutput.DisplayBoard(this, false);
            ConsoleOutput.ClearScreenPrompt();
        }
 public static bool IsValidShot(FireShotResponse response)
 {
     if (response.ShotStatus == ShotStatus.Invalid)
     {
         Console.WriteLine("\nYou cannot shoot beyond the board boundaries.");
         Console.WriteLine("Calibrate your Aegis targeting system and try again.");
         ConsoleInput.Continue();
         return(false);
     }
     if (response.ShotStatus == ShotStatus.Duplicate)
     {
         Console.WriteLine("\nYou already shot at that target, chief.");
         Console.WriteLine("The admiral won't let you waste ammunition.");
         ConsoleInput.Continue();
         return(false);
     }
     return(true);
 }
示例#3
0
        public static void Retaliate(bool player1Turn, User player1, User player2)
        {
            bool gameOver = false;
            User player   = (player1Turn) ? player1 : player2;
            User opponent = (player == player1) ? player2 : player1;

            Console.WriteLine($"{player.Name}, your superior targeting system has given you");
            Console.WriteLine($"first strike advantage. Hit {opponent.Name} before he/she realizes!");
            ConsoleInput.Continue();

            while (!gameOver)
            {
                gameOver = (player1Turn)
                    ? ConsoleInput.Attack(player1, player2)
                    : ConsoleInput.Attack(player2, player1);

                player1Turn = !player1Turn;
            }
        }
示例#4
0
        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();
        }