コード例 #1
0
        public Tuple <int, int> Attack(Challenger target)
        {
            var step = DoAttack(target);

            Logger.Write(this, $"Shoot <{step}>");

            return(ParseStep(step));
        }
コード例 #2
0
ファイル: Game.cs プロジェクト: my-repositories/Battleship
        private void Shoot(Challenger initiator, Challenger target)
        {
            bool hitting;

            do
            {
                Display();
                var step = initiator.Attack(target);
                hitting = target.HandleStep(step.Item1, step.Item2);
                Logger.Write(target, $"HandleStep <{step.Item1}, {step.Item2}>");
            } while (hitting && GetGameState() == State.NextStep);
        }
コード例 #3
0
ファイル: Player.cs プロジェクト: my-repositories/Battleship
        protected override string DoAttack(Challenger target)
        {
            System.Console.Write("Enter your step: ");
            var step = System.Console.ReadLine()?.ToUpper() ?? "-";

            while (!ValidateStep(step, target))
            {
                System.Console.WriteLine("Incorrect input!");
                System.Console.Write("Enter your step: ");
                step = System.Console.ReadLine()?.ToUpper() ?? "-";
            }

            return(step);
        }
コード例 #4
0
ファイル: Player.cs プロジェクト: my-repositories/Battleship
        private bool ValidateStep(string step, Challenger target)
        {
            if (!_stepPattern.IsMatch(step))
            {
                Logger.Write(this, $"ValidateStep({step}): isn't match regex!");
                return(false);
            }

            var pair = ParseStep(step);

            if (target.Map[pair.Item1, pair.Item2] == Map.Ceil.Empty ||
                target.Map[pair.Item1, pair.Item2] == Map.Ceil.Ship)
            {
                return(true);
            }

            Logger.Write(
                this,
                $"ValidateStep({step}): isn't valid"
                + $", cuz target.Map[{pair.Item1}, {pair.Item2}] == {target.Map[pair.Item1, pair.Item2]}"
                );
            return(false);
        }
コード例 #5
0
ファイル: Game.cs プロジェクト: my-repositories/Battleship
 public Game()
 {
     _enemy  = new Enemy();
     _player = new Player();
 }
コード例 #6
0
 public static void Write(Challenger challenger, string message)
 {
     Write(challenger.GetType().Name + "." + message);
 }
コード例 #7
0
 protected abstract string DoAttack(Challenger target);