Example #1
0
        /// <summary>
        /// В методе игрок создает флот и размещает его на крате
        /// </summary>
        /// <param name="Player">Игрок</param>
        private void PlayerCreateFleet(IActor Player)
        {
            //очистка игровой консоли
            _gameConsole.Clean();

            Player.EnemyMap.IsCellsVisible = false;
            Player.Map.IsCellsVisible      = true;

            //создание меток с текстом-подсказкой
            Lable firstLine  = new Lable($"Создание и размещение подлодок - #");
            Lable secondLine = new Lable($"Примен: a1 v, где а1 - позиция, v - верикально, если это параметр не указан, то корабль");
            Lable thirdLine  = new Lable($"создастся горизонтально");

            //размешение меток в консоле
            firstLine.Location  = new Core.Vector2D(0, _firstPlayer.Map.Height + 2);
            secondLine.Location = new Core.Vector2D(0, _firstPlayer.Map.Height + 3);
            thirdLine.Location  = new Core.Vector2D(0, _firstPlayer.Map.Height + 4);

            //добавление их на консоль
            Controls.Add(firstLine);
            Controls.Add(secondLine);
            Controls.Add(thirdLine);

            try
            {
                CreateShips(Player, 4, "s");

                firstLine.Text = "Создание и размещение крейсера - ##";
                CreateShips(Player, 3, "c");

                firstLine.Text = "Создание и размещение эсминца - ###";
                CreateShips(Player, 2, "cr");

                DrawControls();
                firstLine.Text = "Создание и размещение линкора - ####";
                ShipBase ship = CreateShip(Player.Map, "b " + _gameConsole.Input());
                Player.Map.AddShipToMap(ship);
                Player.Fleet.AddShipeToFleet(ship);

                Player.Map.Draw();
            }
            catch (Exception ex)
            {
                _gameConsole.AddString(ex.Message);
            }

            //удаление меток с консоли
            Controls.Remove(firstLine);
            Controls.Remove(secondLine);
            Controls.Remove(thirdLine);
        }
Example #2
0
        /// <summary>
        /// Метод реализующий ход игрока
        /// </summary>
        /// <param name="Player">Игрок</param>
        private void PlayerTurn(IActor Player)
        {
            if (!Player.IsWin)
            {
                _currentPlayerLable.Text = $"{Player.Name} ваш ход";
                ShowPlayerStatistic(Player);

                //отрисовка контролов
                DrawControls();

                Player.EnemyMap.IsCellsVisible = false;
                Player.Map.IsCellsVisible      = true;

                Controls.First(c => c == Player.EnemyMap).Draw();
                Controls.First(c => c == Player.Map).Draw();

                string pos = _gameConsole.Input();

                _logConsole.AddString(Player.EnemyMap.ShotAt(pos));
                Player.Lost      = Player.Map.Shipes.Count(s => s.IsDestroied);
                Player.Destroyed = Player.EnemyMap.Shipes.Count(s => s.IsDestroied);
                Player.IsWin     = (Player.EnemyMap.Shipes.Count - Player.EnemyMap.Shipes.Count(s => s.IsDestroied) == 0) ? true : false;
            }
        }