public Field(int size, int mines, Random random) { if (size < 1) { throw new ArgumentException(nameof(size)); } int count = Count(size); if (mines < 1 || mines * 2 >= count) { throw new ArgumentException(nameof(mines)); } HexaGrid grid = new HexaGrid(size); if (grid.Count != count) { throw new Exception(nameof(count)); } this.Grid = grid; this.mapping = new GridMapping(grid); this.random = random; this.MineGenerates = mines; Initialize(); }
void TaskOnClick() { HexaGrid hexaGrid = hexGrid.GetComponent <HexaGrid>(); hexaGrid.SetGap(float.Parse(input1.GetComponent <InputField>().text)); hexaGrid.SetGridWidth(float.Parse(input2.GetComponent <InputField>().text)); hexaGrid.SetGridHeight(float.Parse(input3.GetComponent <InputField>().text)); hexaGrid.MakeGrid(); }
public void HexaGridTest() { for (int size = 1; size <= 16; size++) { Console.WriteLine($"size = {size}"); HexaGrid grid = new HexaGrid(size); Console.WriteLine($"mapsize = {grid.MapWidth}, {grid.MapHeight}"); Console.WriteLine("map :"); Console.WriteLine(grid.ToString()); Console.WriteLine("link :"); foreach ((int index, var link) in grid.Link) { Console.WriteLine($"{index} : {string.Join(',', link)}"); } Assert.IsTrue(GridValidationUtil.IsValid(grid), $"{size}"); Assert.AreEqual(1 + size * (size - 1) / 2 * 6, grid.Count, $"{size}"); if (size >= 2) { Assert.AreEqual(3, grid[0].Links); Assert.AreEqual(3, grid[size - 1].Links); Assert.AreEqual(3, grid[grid.Count / 2 - size + 1].Links); Assert.AreEqual(3, grid[grid.Count / 2 + size - 1].Links); Assert.AreEqual(3, grid[grid.Count - size].Links); Assert.AreEqual(3, grid[grid.Count - 1].Links); Assert.AreEqual(0, grid.Cells.Where((cell) => cell.Links < 3 || cell.Links == 5).Count()); Assert.AreEqual(6, grid.Cells.Where((cell) => cell.Links == 3).Count()); Assert.AreEqual((size - 2) * 6, grid.Cells.Where((cell) => cell.Links == 4).Count()); } Console.WriteLine("---------------------------"); } }
static public void ClientInitialize(List <Forest> trees, Player plyr) { Tile tile = new Tile(); GameData.Player = plyr; GameData.LevelGrid = new HexaGrid(30, 40, tile.Width, tile.Height, true, "levelGrid"); for (int i = 0; i < LevelGrid.Columns; i++) { for (int j = 0; j < LevelGrid.Rows; j++) { if (i > (int)(LevelGrid.Columns * .25) && i < (int)(LevelGrid.Columns * .75)) { bool ftile = false; string id = ""; foreach (Forest f in trees) { if (f.forestPoint.X == i && f.forestPoint.Y == j) { id = f.ID; ftile = true; break; } } if (ftile) { Forest f = new Forest(new Point(i, j)); f.gridPosition = new Point(i, j); f.ID = id; GameData.LevelGrid.Add(f, i, j); GameData.Buildings.Add(f); forests.Add(f); } else { int type = 1 + (int)(GameWorld.Random.NextDouble() * 7); Tile t = new Tile("environment" + type); t.gridPosition = new Point(i, j); GameData.LevelGrid.Add(t, i, j); } } else { int type = 1 + (int)(GameWorld.Random.NextDouble() * 7); Tile t = new Tile("environment" + type); t.gridPosition = new Point(i, j); GameData.LevelGrid.Add(t, i, j); } } } Mine mine = new Mine(); mine.gridPosition = new Point(4, 8); GameData.LevelGrid.replaceTile((Tile)GameData.LevelGrid.Objects[4, 8], mine, false); HumanityBase hBase = new HumanityBase(); hBase.gridPosition = new Point(2, 11); hBase.Position = GameData.LevelGrid.Objects[2, 11].Position; GameData.LevelGrid.Objects[2, 11] = hBase; GameData.Buildings.Add(hBase); GameData.Buildings.Add(mine); mine.HasBeenBuiltAction(); SunlightTree sunlightTree = new SunlightTree(); NatureBase nBase = new NatureBase(); nBase.gridPosition = new Point(GameData.LevelGrid.Columns - 2, GameData.LevelGrid.Rows - 11); sunlightTree.gridPosition = new Point(GameData.LevelGrid.Columns - 4, GameData.LevelGrid.Rows - 8); GameData.LevelGrid.replaceTile((Tile)GameData.LevelGrid.Objects[GameData.LevelGrid.Columns - 4, GameData.LevelGrid.Rows - 8], sunlightTree, false); nBase.Position = GameData.LevelGrid.Objects[GameData.LevelGrid.Columns - 2, GameData.LevelGrid.Rows - 11].Position; GameData.LevelGrid.Objects[GameData.LevelGrid.Columns - 2, GameData.LevelGrid.Rows - 11] = nBase; GameData.Buildings.Add(nBase); GameData.Buildings.Add(sunlightTree); sunlightTree.HasBeenBuiltAction(); GameData.LevelObjects.Add(GameData.LevelGrid); if (GameData.Cursor != null) { GameData.LevelObjects.Remove(GameData.Cursor); } if (GameData.player.GetFaction == Player.Faction.humanity) { GameData.Cursor = new Cursor("humanityCursor"); GameWorld.AssetLoader.PlayMusic("hMusic"); } else { GameData.Cursor = new Cursor("natureCursor"); GameWorld.AssetLoader.PlayMusic("nMusic"); } GameData.LevelObjects.Add(GameData.Cursor); GameWorld.Camera.Bounds = new Rectangle(0 - (int)tile.Sprite.Center.X - (int)(0.5 * GameWorld.Screen.X), -(int)tile.Sprite.Center.Y - (int)(0.5 * GameWorld.Screen.Y), GameData.LevelGrid.GetWidth(), GameData.LevelGrid.GetHeight()); GameWorld.Camera.Bounds = new Rectangle(0 - (int)tile.Sprite.Center.X, -(int)tile.Sprite.Center.Y, GameData.LevelGrid.GetWidth(), (GameData.LevelGrid.GetHeight())); if (plyr.GetFaction == Player.Faction.humanity) { //GameWorld.Camera.Pos = new Vector2(0, 0); GameWorld.Camera.Pos = new Vector2(-(int)tile.Sprite.Center.X, -(int)tile.Sprite.Center.Y); } else { GameWorld.Camera.Pos = new Vector2(-(int)tile.Sprite.Center.X, -(int)tile.Sprite.Center.Y); int y = GameData.LevelGrid.GetHeight(); int x = GameData.LevelGrid.GetWidth(); GameWorld.Camera.Pos = new Vector2(3380, 85); } selectedTile = new SpriteGameObject("selectedTile", 0, "selectedTile", 1); selectedTile.Origin = selectedTile.Sprite.Center; selectedTile.Position = new Vector2(-3000, -3000); GameData.LevelObjects.Add(selectedTile); //naturePlayer = new Player(Player.Faction.nature); //GameData.LevelObjects.Add(naturePlayer); GameData.LevelObjects.Add(player); //ResourceController = new ResourceController(1, 10, 10); //GameData.LevelObjects.Add(ResourceController); foreach (Unit u in GameData.Units.Objects) { if (u.Faction == Player.Faction.humanity) { u.Sprite.Color = Color.Red; } else { u.Sprite.Color = Color.Green; } } }
public static void HostInitialize() { Tile tile = new Tile(); //GameData.player.GetFaction = Player.Faction.nature; int idIndex = 0; GameData.LevelGrid = new HexaGrid(30, 40, tile.Width, tile.Height, true, "levelGrid"); for (int i = 0; i < LevelGrid.Columns; i++) { for (int j = 0; j < LevelGrid.Rows; j++) { if (i > (int)(LevelGrid.Columns * .25) && i < (int)(LevelGrid.Columns * .75)) { switch (GameWorld.Random.Next(12)) { case 0: Forest f = new Forest(new Point(i, j)); f.gridPosition = new Point(i, j); f.ID = f.ID + idIndex.ToString(); idIndex++; GameData.LevelGrid.Add(f, i, j); forests.Add(f); GameData.Buildings.Add(f); break; default: int type = 1 + (int)(GameWorld.Random.NextDouble() * 7); Tile t = new Tile("environment" + type); t.gridPosition = new Point(i, j); GameData.LevelGrid.Add(t, i, j); break; } } else { int type = 1 + (int)(GameWorld.Random.NextDouble() * 7); Tile t = new Tile("environment" + type); t.gridPosition = new Point(i, j); GameData.LevelGrid.Add(t, i, j); } } } Mine mine = new Mine(); mine.gridPosition = new Point(4, 8); GameData.LevelGrid.replaceTile((Tile)GameData.LevelGrid.Objects[4, 8], mine, false); HumanityBase hBase = new HumanityBase(); hBase.gridPosition = new Point(2, 11); hBase.Position = GameData.LevelGrid.Objects[2, 11].Position; GameData.LevelGrid.Objects[2, 11] = hBase; hBase.AddQuadCoTiles(); GameData.Buildings.Add(hBase); GameData.Buildings.Add(mine); mine.HasBeenBuiltAction(); SunlightTree sunlightTree = new SunlightTree(); NatureBase nBase = new NatureBase(); nBase.gridPosition = new Point(GameData.LevelGrid.Columns - 2, GameData.LevelGrid.Rows - 11); sunlightTree.gridPosition = new Point(GameData.LevelGrid.Columns - 4, GameData.LevelGrid.Rows - 8); GameData.LevelGrid.replaceTile((Tile)GameData.LevelGrid.Objects[GameData.LevelGrid.Columns - 4, GameData.LevelGrid.Rows - 8], sunlightTree, false); nBase.Position = GameData.LevelGrid.Objects[GameData.LevelGrid.Columns - 2, GameData.LevelGrid.Rows - 11].Position; GameData.LevelGrid.Objects[GameData.LevelGrid.Columns - 2, GameData.LevelGrid.Rows - 11] = nBase; nBase.AddQuadCoTiles(); GameData.Buildings.Add(nBase); GameData.Buildings.Add(sunlightTree); sunlightTree.HasBeenBuiltAction(); GameData.LevelObjects.Add(GameData.LevelGrid); GameWorld.Camera.Bounds = new Rectangle(0 - (int)tile.Sprite.Center.X, -(int)tile.Sprite.Center.Y, GameData.LevelGrid.GetWidth(), GameData.LevelGrid.GetHeight()); GameWorld.Camera.Pos = new Vector2(-(int)tile.Sprite.Center.X, -(int)tile.Sprite.Center.Y); if (player.GetFaction == Player.Faction.humanity) { GameWorld.Camera.Pos = new Vector2(0, 0); } else { //GameWorld.Camera.Pos = new Vector2(-(int)tile.Sprite.Center.X, -(int)tile.Sprite.Center.Y); int y = GameData.LevelGrid.GetHeight(); int x = GameData.LevelGrid.GetWidth(); GameWorld.Camera.Pos = new Vector2(3380, 85); } selectedTile = new SpriteGameObject("selectedTile", 0, "selectedTile", 1); selectedTile.Origin = selectedTile.Sprite.Center; selectedTile.Position = new Vector2(-3000, -3000); GameData.LevelObjects.Add(selectedTile); if (GameData.Cursor != null) { GameData.LevelObjects.Remove(GameData.Cursor); } if (GameData.player.GetFaction == Player.Faction.humanity) { GameData.Cursor = new Cursor("humanityCursor"); GameWorld.AssetLoader.PlayMusic("hMusic"); } else { GameData.Cursor = new Cursor("natureCursor"); GameWorld.AssetLoader.PlayMusic("nMusic"); } GameData.LevelObjects.Add(GameData.Cursor); //naturePlayer = new Player(Player.Faction.nature); //GameData.LevelObjects.Add(naturePlayer); GameData.LevelObjects.Add(player); //ResourceController = new ResourceController(1, 10, 10) ; //GameData.LevelObjects.Add(ResourceController) }
public StationHexaGrid(IHexaGridItem rootPlatform) { _grid = new HexaGrid <IHexaGridItem>(Offset.Q * 2 + 1, Offset.R * 2 + 1) {