Example #1
0
        public static ShotStatus FireShotAtEnemey(Player player)
        {
            Coordinate coordToShoot = ConsoleInput.GetCoordinateFromUser();
            ShotStatus returnvValue = player.board.FireShot(coordToShoot).ShotStatus;

            //use return returnValue istead of if else
            if (returnvValue == ShotStatus.Hit)
            {
                Console.WriteLine(ShotStatus.Hit);
                return(ShotStatus.Hit);
            }
            else if (returnvValue == ShotStatus.HitAndSunk)
            {
                Console.WriteLine(ShotStatus.HitAndSunk);
                return(ShotStatus.HitAndSunk);
            }
            else if (returnvValue == ShotStatus.Duplicate)
            {
                Console.WriteLine(ShotStatus.Duplicate);
                return(ShotStatus.Duplicate);
            }
            else if (returnvValue == ShotStatus.Miss)
            {
                Console.WriteLine(ShotStatus.Miss);
                return(ShotStatus.Miss);
            }
            else
            {
                return(ShotStatus.Victory);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        public GameFlow(Player Attacker, Player Receiver)
        {
            FireShotResponse ShotResponse;

            while (true)
            {
                ConsoleOutput.PromptPlayerTurn(Attacker);
                var shot = ConsoleInput.GetCoordinateFromUser();
                ShotResponse = Receiver.PlayerBoard.FireShot(shot);
                ShotStatus result  = ShotResponse.ShotStatus;
                string     ShipHit = ShotResponse.ShipImpacted;

                if (result == ShotStatus.Miss)
                {
                    ConsoleOutput.Miss(Attacker.Name);
                    break;
                }
                else if (result == ShotStatus.Hit)
                {
                    ConsoleOutput.Hit(Attacker.Name);
                    break;
                }
                else if (result == ShotStatus.HitAndSunk)
                {
                    ConsoleOutput.HitAndSunk(Attacker.Name, Receiver.Name, ShipHit);
                    break;
                }
                else if (result == ShotStatus.Victory)
                {
                    ConsoleOutput.DeclareVictory(Attacker.Name, Receiver.Name);
                    GameOver = true;
                    break;
                }
                else if (result == ShotStatus.Duplicate)
                {
                    ConsoleOutput.Duplicate(Attacker.Name);
                }
                else
                {
                    ConsoleOutput.InvalidShot(Attacker.Name);
                }
            }
        }
Example #4
0
        public static void PlaceShips(Player player)
        {
            for (ShipType s = ShipType.Destroyer; s <= ShipType.Carrier; s++)
            {
                PlaceShipRequest request = new PlaceShipRequest();
                request.ShipType = s;
                Console.WriteLine("Placing " + s);
                request.Coordinate = ConsoleInput.GetCoordinateFromUser();
                request.Direction  = ConsoleInput.GetDirectionFromUser();

                ShipPlacement result = player.board.PlaceShip(request);
                if (result != ShipPlacement.Ok)
                {
                    Console.WriteLine("Could not place " + s + " there because of a(n) " + result);
                    s--;
                }
            }
            Console.Clear();
        }