コード例 #1
0
ファイル: Map.cs プロジェクト: AciesNN/cyc
		public static List<IslandCM> GetEnemyNeibourIslands(MapCM map, int playerID, bool hasBridge)
		{
			List<IslandCM> res = new List<IslandCM>();
			List<IslandCM> playerIslands = map.GetIslandsByOwner(playerID);
			for (int i = 0; i < playerIslands.Count; ++i)
			{
				IslandCM island = playerIslands[i];
				List<IslandCM> bridgedEnemy = GetBridgedNeibourIslands(map, island.ID, playerID, true);
				if (hasBridge)
				{
					res.AddRange(bridgedEnemy);
				}
				else
				{
					List<IslandCM> neibourEnemy = GetNeibourEnemyIslands(map, island.ID, playerID);
					res.AddRange(neibourEnemy.Where(e => !bridgedEnemy.Contains(e)));
				}
			}
			return res.Distinct().ToList();
		}
コード例 #2
0
ファイル: Map.cs プロジェクト: AciesNN/cyc
		public static List<IslandCM> GetEnemyNeibourIslandsWithTheirBridge(MapCM map, int playerID)
		{
			List<IslandCM> res = new List<IslandCM>();
			List<IslandCM> playerIslands = map.GetIslandsByOwner(playerID);
			for (int i = 0; i < playerIslands.Count; ++i)
			{
				IslandCM island = playerIslands[i];
				List<IslandCM> neibourEnemy = GetNeibourEnemyIslands(map, island.ID, playerID);
				res.AddRange(neibourEnemy.Where(e => map.HasIslandsShipBrige(e.ID, island.ID, e.OwnerID)));
			}
			return res.Distinct().ToList();
		}
コード例 #3
0
ファイル: Map.cs プロジェクト: AciesNN/cyc
		public static bool IsNeedBuild(MapCM map, int playerID, Build build)
		{
			return (map.GetBuildCountAtIslands(map.GetIslandsByOwner(playerID), build, false) == 0);
		}
コード例 #4
0
ファイル: Map.cs プロジェクト: AciesNN/cyc
		public static bool HasPlayerPlaceForBuilding(MapCM map, int playerID)
		{
			List<IslandCM> islands = map.GetIslandsByOwner(playerID);
			for (int i = 0; i < islands.Count; ++i)
			{
				IslandCM island = islands[i];
				if (island.Slots.Skip(island.HasMetro ? IslandCM.IslandMetroSizeByIslandSize(island.Slots.Count) : 0).Any(e => e == Build.None))
					return true;
			}
			return false;
		}			 
コード例 #5
0
ファイル: Map.cs プロジェクト: AciesNN/cyc
		public static IslandCM GetTheBestIslandForBuild(MapCM map, int playerID, bool metro = false, bool build = false, bool horn = false)
		{
			List<IslandCM> playerIslands = map.GetIslandsByOwner(playerID);

			if (build)
				playerIslands = playerIslands.Where(e => GetTheLastEmptySlot(map, e.ID) >= 0).ToList();
			if (metro)
				playerIslands = playerIslands.Where(e => !e.HasMetro).ToList();

			if (playerIslands.Count == 0)
				return map.GetIslandsByOwner(playerID).First();
			if (playerIslands.Count == 1)
				return playerIslands[0];

			IslandCM theMostProtectedIsland = GetTheMostProtectedIsland(map, playerIslands);
			return theMostProtectedIsland;
		}