예제 #1
0
        /// <summary>
        /// Init batle game between two tanks set on a 2d map
        /// </summary>
        /// <param name="map">Map is stored as int map; value 0 means empty, other value (1) means not empty</param>
        /// <param name="blueTankModel">First tank in battlefield</param>
        /// <param name="posBlue">2 length array represents postion of blue tank on map</param>
        /// <param name="redTankModel">second tank in battlefield</param>
        /// <param name="posRed">2 length array represents postion of red tank on map</param>
        /// <param name="maxTurns">Maximum number of game's turns</param>
        public TankBattleGame(int[][] map, TankModel blueTankModel, int[] posBlue, TankModel redTankModel, int[] posRed, int maxTurns = 100)
        {
            MaxTurns = maxTurns;
            GameMap  = map;
            var validator = new TankModelValidator();

            var resultBlueTankModel = validator.Validate(blueTankModel);

            if (!resultBlueTankModel.IsValid)
            {
                throw new Exception($"Tank model failed, Exception message{resultBlueTankModel.Errors[0].ErrorMessage}");
            }

            var resultRedTankModel = validator.Validate(redTankModel);

            if (!resultRedTankModel.IsValid)
            {
                throw new Exception($"Tank model failed, Exception message{resultRedTankModel.Errors[0].ErrorMessage}");
            }

            BlueTank = new CombatTank(posBlue[0], posBlue[1], blueTankModel);
            RedTank  = new CombatTank(posRed[0], posRed[1], redTankModel);
            PathAlgo = new AStar();
        }
예제 #2
0
 public CombatTank(int x, int y, TankModel m) : base(m.ModelName, m.Speed, m.GunRange, m.GunPower, m.ShieldLife)
 {
     PosX = x;
     PosY = y;
 }