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; } } }
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; } }
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(); }
public Game(PlayerBattleArea player1, PlayerBattleArea player2) { this.player1 = player1; this.player2 = player2; }