예제 #1
0
        public void AutoPlay()
        {
            PlayerBattleArea previousWinner = null;

            while (player1.AttackSequence.Any() || player2.AttackSequence.Any())
            {
                PlayerBattleArea attacker;
                PlayerBattleArea defender;
                SelectPlayers(out attacker, out defender, previousWinner);
                if (attacker.AttackSequence.Count > 0)
                {
                    var attack = attacker.AttackSequence.Dequeue();
                    defender.HandleAttack(attack);
                    previousWinner = attack.Result == AttackResult.Hit ? attacker : defender;

                    Console.WriteLine("{0} fires a missle with target {1},{2} which got {3}", attacker.Id, attack.Row, attack.Column, attack.Result.ToString().ToLower());
                }
                else
                {
                    previousWinner = defender;
                    Console.WriteLine("{0} has no more missiles left to launch", attacker.Id);
                }
                if (defender.ShipsAlive < 1)
                {
                    Console.WriteLine("{0} won the battle", attacker.Id);
                    break;
                }
            }
        }
예제 #2
0
 private void SelectPlayers(out PlayerBattleArea attacker, out PlayerBattleArea defender, PlayerBattleArea previousWinner = null)
 {
     if (previousWinner == null)
     {
         attacker = player1;
         defender = player2;
     }
     else
     {
         attacker = previousWinner;
         defender = attacker == player1 ? player2 : player1;
     }
 }
예제 #3
0
        static void Main(string[] args)
        {
            var player1 = new PlayerBattleArea("Player1", 5, 5);

            player1.AddShip(new BattleShip(UnitType.Q, 1, 1), new BattleBoard.Position(1, 1));
            player1.AddShip(new BattleShip(UnitType.P, 2, 1), new BattleBoard.Position(4, 4));

            player1.AddAttackSequence(new List <Attack> {
                new Attack(1, 2),
                new Attack(2, 2),
                new Attack(2, 2),
                new Attack(2, 3)
            });

            var player2 = new PlayerBattleArea("Player2", 5, 5);

            player2.AddShip(new BattleShip(UnitType.Q, 1, 1), new BattleBoard.Position(2, 2));
            player2.AddShip(new BattleShip(UnitType.P, 2, 1), new BattleBoard.Position(3, 3));

            player2.AddAttackSequence(new List <Attack> {
                new Attack(1, 1),
                new Attack(2, 2),
                new Attack(2, 3),
                new Attack(1, 1),
                new Attack(4, 1),
                new Attack(5, 1),
                new Attack(4, 4),
                new Attack(4, 4),
                new Attack(4, 5),
                new Attack(4, 5)
            });

            var game = new Game(player1, player2);

            game.AutoPlay();
            Console.ReadLine();
        }
예제 #4
0
 public Game(PlayerBattleArea player1, PlayerBattleArea player2)
 {
     this.player1 = player1;
     this.player2 = player2;
 }