コード例 #1
0
        public void StarNewGame()
        {
            Player1.PrepareForNewGame();
            Player2.PrepareForNewGame();

            Winner = null;

            RandomizeWhoShouldStart();
        }
コード例 #2
0
        public Coordinates Shoot()
        {
            var shot  = Attacker.Shooter.Shoot();
            var field = Defender.BattleField[shot.Y][shot.X];

            switch (field.State)
            {
            case FieldState.Empty:
            case FieldState.Miss:
                field.State = FieldState.Miss;
                Attacker.Shooter.ReportLastShotResult(shot, ShotResult.Missed);
                Defender.Shooter.ReportOponentsLastShotResult(shot, ShotResult.Missed);
                SwitchPlayer();
                break;

            case FieldState.Hit:
                Attacker.Shooter.ReportLastShotResult(shot, ShotResult.Hit);
                Defender.Shooter.ReportOponentsLastShotResult(shot, ShotResult.Hit);
                SwitchPlayer();
                break;

            case FieldState.Ship:
                field.State = FieldState.Hit;
                var shotResult = field.RelatedFields.Any(f => f.State == FieldState.Ship)
                        ? ShotResult.Hit
                        : ShotResult.Destroyed;
                Attacker.Shooter.ReportLastShotResult(shot, shotResult);
                Defender.Shooter.ReportOponentsLastShotResult(shot, shotResult);
                break;
            }

            if (AreAllShipsDestroyed())
            {
                Winner = Attacker;
            }

            return(shot);
        }
コード例 #3
0
 public BattleShipGame(IBattleShipShooter shooter1, IBattleShipShooter shooter2)
 {
     Player1 = new BattleShipPlayer(shooter1);
     Player2 = new BattleShipPlayer(shooter2);
 }