Example #1
0
        /// <summary>
        /// Choose a cell around the one that has been hit to completely destroy a ship
        /// </summary>
        /// <returns>Adjacent coordinates</returns>
        private Coordinates SearchingShot()
        {
            Random rand         = new Random(Guid.NewGuid().GetHashCode());
            var    hitNeighbors = FiringBoard.GetHitNeighbors();
            var    neighborID   = rand.Next(hitNeighbors.Count);

            return(hitNeighbors[neighborID]);
        }
Example #2
0
        public FiringBoard SetUp()
        {
            _firingBoard = new FiringBoard();

            PlaceShipsRandomly();

            return(_firingBoard);
        }
Example #3
0
        /// <summary>
        /// Choose a random cell according to semi-random strategy
        /// </summary>
        /// <returns>Semi-random cell coordinates</returns>
        private Coordinates RandomShot()
        {
            var    availableCells = FiringBoard.GetOpenRandomCells();
            Random rand           = new Random(Guid.NewGuid().GetHashCode());
            var    CellID         = rand.Next(availableCells.Count);

            return(availableCells[CellID]);
        }
Example #4
0
        public Coordinates FireShot()
        {
            //If there are hits on the board with neighbors which don't have shots, we should fire at those first.
            var hitNeighbors = FiringBoard.GetHitNeighbors();
            var coords       = hitNeighbors.Any() ? SearchingShot() : RandomShot();

            Console.WriteLine(Name + " says: \"Firing shot at " + coords.Row.ToString() + ", " + coords.Column.ToString() + "\"");
            return(coords);
        }
Example #5
0
        private Coordinates shoot()
        {
            var availablePanels = FiringBoard.getPanels();

            Console.WriteLine(Environment.NewLine);
            Console.WriteLine(Name + " enter firing coordinates");
            Console.WriteLine(Environment.NewLine);
            var s       = Console.ReadLine();
            int res     = Convert.ToInt32(s);
            var panelID = res;

            return(availablePanels[panelID]);
        }
Example #6
0
 public Player(string name)
 {
     Name  = name;
     Ships = new List <Ship>()
     {
         new Destroyer(),
         new Submarine(),
         new Cruiser(),
         new Battleship(),
         new Carrier()
     };
     GameBoard   = new GameBoard();
     FiringBoard = new FiringBoard();
 }
Example #7
0
        /// <summary>
        /// Choose a cell for firing a shot and return its coordinates
        /// </summary>
        public Coordinates FireShot()
        {
            //If there are hits on the board with neighbors which don't have shots, we should fire at those first.
            Random      r            = new Random();
            var         hitNeighbors = FiringBoard.GetHitNeighbors();
            Coordinates coords;

            if (hitNeighbors.Any())
            {
                coords = SearchingShot();
            }
            else
            {
                coords = RandomShot();
            }
            return(coords);
        }
Example #8
0
    public Player(string name)
    {
        Id    = Guid.NewGuid().ToString();
        Name  = name;
        Ships = new List <Ship> ()
        {
            new Destroyer(),
            new Submarine(),
            new Cruiser(),
            new Battleship(),
            new Carrier()
        };

        GameBoard   = new GameBoard();
        FiringBoard = new FiringBoard();
        if (!string.IsNullOrEmpty(name))
        {
            PlaceShips();
        }
    }
Example #9
0
        private static void DrawBoard(FiringBoard board)
        {
            Console.WriteLine("    A B C D E F G H I J ");
            Console.WriteLine("   _____________________");
            for (int row = 1; row <= 9; row++)
            {
                Console.Write(row + "  ¦");

                for (char column = 'A'; column <= 'J'; column++)
                {
                    Console.Write(board.Fields.Where(x => x.Coordinates.Row == row && x.Coordinates.Column == column).First().Status + " ");
                }

                Console.WriteLine(Environment.NewLine + "   ¦");
            }
            Console.Write("10 ¦");
            for (char column = 'A'; column <= 'J'; column++)
            {
                Console.Write(board.Fields.Where(x => x.Coordinates.Row == 10 && x.Coordinates.Column == column).First().Status + " ");
            }
            Console.WriteLine(Environment.NewLine);
        }
Example #10
0
        public Player(string name, string clientId = "")
        {
            Id       = Guid.NewGuid().ToString();
            Name     = name;
            ClientId = clientId;
            Ships    = new List <Ship>()
            {
                new Destroyer(),
                new Submarine(),
                new Cruiser(),
                new Battleship(),
                new Carrier()
            };

            GameBoard   = new GameBoard();
            FiringBoard = new FiringBoard();
            GameBoard.Setup();
            FiringBoard.Setup();
            if (!string.IsNullOrEmpty(name))
            {
                PlayerController.PlaceShips(this);
            }
        }
Example #11
0
        public Player CreateNewPlayer(string name, FiringBoard firingBoard)
        {
            Player newPlayer = new Player(name, firingBoard);

            return(newPlayer);
        }
Example #12
0
 public void Init()
 {
     _boardRepository  = new BoardRepository();
     board             = _boardRepository.SetUp();
     _playerRepository = new PlayerRepository(_boardRepository);
 }
Example #13
0
 public void SetMiss(int row, int col)
 {
     FiringBoard.SetStatus(row, col, OccupationType.Miss);
 }
Example #14
0
 public void SetHit(int row, int col)
 {
     FiringBoard.SetStatus(row, col, OccupationType.Hit);
 }