Example #1
0
        public PlanetHolder(Planet planet, Fleets fleetList)
        {
            thisPlanet = planet;
            thisPlanetFleets = fleetList;

            TurnsCount = PlanetWars.GetFarestFleetDistance(thisPlanetFleets);
            ownerSwitches = new List<PlanetOwnerSwitch>();
        }
Example #2
0
		// Constructs a PlanetWars object instance, given a string containing a
		// description of a game state.
		public PlanetWars(string gameStatestring)
		{
			planets = new List<Planet>();
			fleets = new Fleets();
			ParseGameState(gameStatestring);
			//planets.Sort(new Comparer(this).Coordinates);

			Planets allPlanets = Planets();
			Router.Init(allPlanets);
			planetHolders = new PlanetHolders(allPlanets.Count);
			foreach (Planet planet in allPlanets)
			{
				PlanetHolder planetHolder = new PlanetHolder(planet, FleetsGoingToPlanet(Fleets(), planet));
				planetHolders.Add(planetHolder);
			}
			//FillMyPlanetsFrontLevel();
		}
Example #3
0
        private static void CalcFleetsOnPlanet(Planet planetInFuture, Fleets thisTurnFleets)
        {
            // First is ownerID, second is number of ships
            List<Pair<int, int>> ships = new List<Pair<int, int>>();

            if (thisTurnFleets.Count <= 0) return;
            const int owners = 2;

            for (int id = 1; id <= owners; ++id)
            {
                Fleets ownerFleets = PlanetWars.FleetsWithGivenOwner(thisTurnFleets, id);
                Pair<int, int> ownerShips = new Pair<int, int>(id, 0);

                // Add up fleets with the same owner
                foreach (Fleet ownerFleet in ownerFleets)
                {
                    ownerShips.Second += ownerFleet.NumShips();
                }

                // Add the ships from the planet to the corresponding fleet
                if (planetInFuture.Owner() == id)
                {
                    ownerShips.Second += planetInFuture.NumShips();
                }

                ships.Add(ownerShips);
            }

            // If the planet was neutral, it has it's own fleet
            if (planetInFuture.Owner() == 0)
            {
                ships.Add(new Pair<int, int>(0, planetInFuture.NumShips()));
            }

            BattleForPlanet(planetInFuture, ships);
        }
Example #4
0
		internal static int GetFarestFleetDistance(Fleets fleetList)
		{
			return GetLimitFleetDistance(fleetList, 1);
		}
Example #5
0
		internal static int GetClosestFleetDistance(Fleets fleetList)
		{
			return GetLimitFleetDistance(fleetList, -1);
		}
Example #6
0
		public int GetFleetsShipNumFarerThan(Fleets fleetList, int treshold)
		{
			return GetFleetsShipNumWithCondition(fleetList, treshold, 1);
		}
Example #7
0
		public int GetFleetsShipNum(Fleets fleetList)
		{
			return GetFleetsShipNumCloserThan(fleetList, 0);
		}
Example #8
0
		public Fleets FleetsGoingToPlanet(Fleets fleetList, Planet planet)
		{
			Fleets attackingFleets = new Fleets();
			foreach (Fleet fleet in fleetList)
			{
				if (fleet.DestinationPlanet() == planet.PlanetID())
				{
					attackingFleets.Add(fleet);
				}
			}
			return attackingFleets;
		}
Example #9
0
		public static Fleets FleetsWithGivenOwner(Fleets fleetList, int ownerID)
		{
			if (ownerID == -1)
			{
				return fleetList;
			}
			Fleets selectedFleets = new Fleets();

			foreach (Fleet fleet in fleetList)
			{
				if (fleet.Owner() == ownerID)
				{
					selectedFleets.Add(fleet);
				}
			}
			return selectedFleets;
		}
Example #10
0
		public Fleets GetThisTurnFleets(int turn, IEnumerable<Fleet> thisPlanetFleets)
		{
			Fleets thisTurnFleets = new Fleets();
			foreach (Fleet fleet in thisPlanetFleets)
			{
				if (fleet.TurnsRemaining() == turn)
				{
					thisTurnFleets.Add(fleet);
				}
			}
			return thisTurnFleets;
		}
Example #11
0
		// Return a list of all the fleets owned by enemy players.
		public Fleets EnemyFleets()
		{
			Fleets r = new Fleets();
			foreach (Fleet f in fleets)
			{
				if (f.Owner() != 1)
					r.Add(f);
			}
			return r;
		}
Example #12
0
		// Return a list of all the fleets.
		public Fleets Fleets()
		{
			Fleets r = new Fleets();
			foreach (Fleet f in fleets)
				r.Add(f);
			return r;
		}
Example #13
0
		public Fleets GetFleetsCloserThan(Fleets fleetList, int treshold)
		{
			Fleets closerFleets = new Fleets();
			foreach (Fleet fleet in fleetList)
			{
				if (fleet.TurnsRemaining() <= treshold) closerFleets.Add(fleet);
			}
			return closerFleets;
		}