/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { resolution = new Vector2(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight); gameGrid = new GameGrid(gridSize); gameGridDisplacing = new Vector2((resolution.X - spriteSize.X * gridSize.X) / 2, (resolution.Y - spriteSize.Y * gridSize.Y) / 2); gameGrid.Initialize(gridSize); for (int y = 4; y < 14; y++) { for (int x = 4; x < 36; x++) { clickBox.Add(new Rectangle(x * (int)spriteSize.X + (int)gameGridDisplacing.X, y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y)); } } // TODO: Add your initialization logic here base.Initialize(); }
public void RemoveLine(ref GameGrid gameGrid, ref List<Unit> orbUnit, ref List<Unit> cubeUnit, ref List<CombinedUnit> orbCombo, ref List<CombinedUnit> cubeCombo) { int count = 0; int column = 0; for (int x = 4; x <= 36; x++) { count = 0; for (int y = 4; y <= 14; y++) { if (gameGrid.isOccupied[x, y] == true) { count++; if (count == 10) { if (x == 4) cubeWin = true; if (x == 35) orbWin = true; column = x; int counter = 0; int tempY = 0; int tempX = 0; int unitCount = orbCombo.Count; for (int i = 0; counter < unitCount; i++) { counter++; if (orbCombo.ElementAt(i).position1.X == column || orbCombo.ElementAt(i).position2.X == column || orbCombo.ElementAt(i).position3.X == column || orbCombo.ElementAt(i).position4.X == column) { orbUnit.Add(new Unit(orbCombo.ElementAt(i).position1)); orbUnit.Add(new Unit(orbCombo.ElementAt(i).position2)); orbUnit.Add(new Unit(orbCombo.ElementAt(i).position3)); orbUnit.Add(new Unit(orbCombo.ElementAt(i).position4)); orbCombo.RemoveAt(i); i--; } } unitCount = cubeCombo.Count; counter = 0; for (int i = 0; counter < unitCount; i++) { counter++; if (cubeCombo.ElementAt(i).position1.X == column || cubeCombo.ElementAt(i).position2.X == column || cubeCombo.ElementAt(i).position3.X == column || cubeCombo.ElementAt(i).position4.X == column) { cubeUnit.Add(new Unit(cubeCombo.ElementAt(i).position1)); cubeUnit.Add(new Unit(cubeCombo.ElementAt(i).position2)); cubeUnit.Add(new Unit(cubeCombo.ElementAt(i).position3)); cubeUnit.Add(new Unit(cubeCombo.ElementAt(i).position4)); cubeCombo.RemoveAt(i); i--; } } unitCount = orbUnit.Count; counter = 0; for (int i = 0; counter < unitCount; i++) { counter++; if (orbUnit.ElementAt(i).position.X == column) { tempY = (int)orbUnit.ElementAt(i).position.Y; tempX = (int)orbUnit.ElementAt(i).position.X; if (gameGrid.isOccupied[tempX, tempY] == true) { gameGrid.isOccupied[tempX, tempY] = false; } orbUnit.RemoveAt(i); i--; } } counter = 0; unitCount = cubeUnit.Count; for (int i = 0; counter < unitCount; i++) { counter++; if (cubeUnit.ElementAt(i).position.X == column) { tempY = (int)cubeUnit.ElementAt(i).position.Y; tempX = (int)cubeUnit.ElementAt(i).position.X; if (gameGrid.isOccupied[tempX, tempY] == true) { gameGrid.isOccupied[tempX, tempY] = false; } cubeUnit.RemoveAt(i); i--; } } } } } } }
public void Draw(SpriteBatch spriteBatch, GameGrid gameGrid, List<Unit> orbs, List<Unit> cubes, Vector2 spriteSize, Vector2 gameGridDisplacing, Vector2 gridSize, List<CombinedUnit> orbCombo, List<CombinedUnit> cubeCombo) { for (int y = 4; y < gridSize.Y-4; y++) { for (int x = 4; x < gridSize.X - 4; x++) { spriteBatch.Draw(gameGridTexture, new Rectangle(x * (int)spriteSize.X + (int)gameGridDisplacing.X, y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), new Rectangle (frame*(int)spriteSize.X,0,(int)spriteSize.X,(int)spriteSize.Y), Color.White); } } foreach (Unit u in orbs) { spriteBatch.Draw(orbUnitTexture, new Rectangle((int)u.position.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); } foreach (CombinedUnit u in orbCombo) { spriteBatch.Draw(orbUnitTexture, new Rectangle((int)u.position1.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position1.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); spriteBatch.Draw(orbUnitTexture, new Rectangle((int)u.position2.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position2.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); spriteBatch.Draw(orbUnitTexture, new Rectangle((int)u.position3.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position3.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); spriteBatch.Draw(orbUnitTexture, new Rectangle((int)u.position4.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position4.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); } foreach (Unit u in cubes) { spriteBatch.Draw(cubeUnitTexture, new Rectangle((int)u.position.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); } foreach (CombinedUnit u in cubeCombo) { spriteBatch.Draw(cubeUnitTexture, new Rectangle((int)u.position1.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position1.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); spriteBatch.Draw(cubeUnitTexture, new Rectangle((int)u.position2.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position2.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); spriteBatch.Draw(cubeUnitTexture, new Rectangle((int)u.position3.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position3.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); spriteBatch.Draw(cubeUnitTexture, new Rectangle((int)u.position4.X * (int)spriteSize.X + (int)gameGridDisplacing.X, (int)u.position4.Y * (int)spriteSize.Y + (int)gameGridDisplacing.Y, (int)spriteSize.X, (int)spriteSize.Y), Color.White); } }
public void Combine(ref GameGrid gameGrid, ref List<Unit> orbUnit, ref List<Unit> cubeUnit, ref List<CombinedUnit> orbCombo, ref List<CombinedUnit> cubeCombo) { for (int i = 0; i < orbUnit.Count; i++) { int temp1 = 0, temp2 = 0, temp3 = 0, temp4 = 0; Vector2 position1 = new Vector2(0, 0), position2 = new Vector2(0, 0), position3 = new Vector2(0, 0), position4 = new Vector2(0, 0); position1 = orbUnit.ElementAt(i).position; int counter = 0; for (int a = 0; a < orbUnit.Count; a++) { bool add = false; if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y) { add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X + 1 && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y) { position2 = orbUnit.ElementAt(a).position; add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y + 1) { position3 = orbUnit.ElementAt(a).position; add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X + 1 && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y + 1) { position4 = orbUnit.ElementAt(a).position; add = true; } if (add == true) if (counter == 0) { temp1 = a; counter++; } else if (counter == 1) { temp2 = a; counter++; } else if (counter == 2) { temp3 = a; counter++; } else { temp4 = a; counter++; } } if (counter == 4) { orbCombo.Add(new CombinedUnit(position1, position2, position3, position4, "bomb")); orbUnit.RemoveAt(temp4); orbUnit.RemoveAt(temp3); orbUnit.RemoveAt(temp2); orbUnit.RemoveAt(temp1); } counter = 0; for (int a = 0; a < orbUnit.Count; a++) { bool add = false; if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y) { add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y + 1) { position2 = orbUnit.ElementAt(a).position; add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y + 2) { position3 = orbUnit.ElementAt(a).position; add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y + 3) { position4 = orbUnit.ElementAt(a).position; add = true; } if (add == true) if (counter == 0) { temp1 = a; counter++; } else if (counter == 1) { temp2 = a; counter++; } else if (counter == 2) { temp3 = a; counter++; } else { temp4 = a; counter++; } } if (counter == 4) { orbCombo.Add(new CombinedUnit(position1, position2, position3, position4, "wall")); orbUnit.RemoveAt(temp4); orbUnit.RemoveAt(temp3); orbUnit.RemoveAt(temp2); orbUnit.RemoveAt(temp1); break; } counter = 0; for (int a = 0; a < orbUnit.Count; a++) { bool add = false; if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y) { add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X + 1 && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y) { position2 = orbUnit.ElementAt(a).position; add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X + 2 && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y) { position3 = orbUnit.ElementAt(a).position; add = true; } else if (orbUnit.ElementAt(a).position.X == orbUnit.ElementAt(i).position.X + 3 && orbUnit.ElementAt(a).position.Y == orbUnit.ElementAt(i).position.Y) { position4 = orbUnit.ElementAt(a).position; add = true; } if (add == true) if (counter == 0) { temp1 = a; counter++; } else if (counter == 1) { temp2 = a; counter++; } else if (counter == 2) { temp3 = a; counter++; } else { temp4 = a; counter++; } } if (counter == 4) { orbCombo.Add(new CombinedUnit(position1, position2, position3, position4, "missile")); orbUnit.RemoveAt(temp4); orbUnit.RemoveAt(temp3); orbUnit.RemoveAt(temp2); orbUnit.RemoveAt(temp1); break; } counter = 0; } for (int i = 0; i < cubeUnit.Count; i++) { int temp1 = 0, temp2 = 0, temp3 = 0, temp4 = 0; Vector2 position1 = new Vector2(0, 0), position2 = new Vector2(0, 0), position3 = new Vector2(0, 0), position4 = new Vector2(0, 0); position1 = cubeUnit.ElementAt(i).position; int counter = 0; for (int a = 0; a < cubeUnit.Count; a++) { bool add = false; if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y) { add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X + 1 && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y) { position2 = cubeUnit.ElementAt(a).position; add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y + 1) { position3 = cubeUnit.ElementAt(a).position; add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X + 1 && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y + 1) { position4 = cubeUnit.ElementAt(a).position; add = true; } if (add == true) if (counter == 0) { temp1 = a; counter++; } else if (counter == 1) { temp2 = a; counter++; } else if (counter == 2) { temp3 = a; counter++; } else { temp4 = a; counter++; } } if (counter == 4) { cubeCombo.Add(new CombinedUnit(position1, position2, position3, position4, "bomb")); cubeUnit.RemoveAt(temp4); cubeUnit.RemoveAt(temp3); cubeUnit.RemoveAt(temp2); cubeUnit.RemoveAt(temp1); break; } counter = 0; for (int a = 0; a < cubeUnit.Count; a++) { bool add = false; if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y) { add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y + 1) { position2 = cubeUnit.ElementAt(a).position; add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y + 2) { position3 = cubeUnit.ElementAt(a).position; add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y + 3) { position4 = cubeUnit.ElementAt(a).position; add = true; } if (add == true) if (counter == 0) { temp1 = a; counter++; } else if (counter == 1) { temp2 = a; counter++; } else if (counter == 2) { temp3 = a; counter++; } else { temp4 = a; counter++; } } if (counter == 4) { cubeCombo.Add(new CombinedUnit(position1, position2, position3, position4, "wall")); cubeUnit.RemoveAt(temp4); cubeUnit.RemoveAt(temp3); cubeUnit.RemoveAt(temp2); cubeUnit.RemoveAt(temp1); break; } counter = 0; for (int a = 0; a < cubeUnit.Count; a++) { bool add = false; if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y) { add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X + 1 && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y) { position2 = cubeUnit.ElementAt(a).position; add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X + 2 && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y) { position3 = cubeUnit.ElementAt(a).position; add = true; } else if (cubeUnit.ElementAt(a).position.X == cubeUnit.ElementAt(i).position.X + 3 && cubeUnit.ElementAt(a).position.Y == cubeUnit.ElementAt(i).position.Y) { position4 = cubeUnit.ElementAt(a).position; add = true; } if (add == true) if (counter == 0) { temp1 = a; counter++; } else if (counter == 1) { temp2 = a; counter++; } else if (counter == 2) { temp3 = a; counter++; } else { temp4 = a; counter++; } } if (counter == 4) { cubeCombo.Add(new CombinedUnit(position1, position2, position3, position4, "missile")); cubeUnit.RemoveAt(temp4); cubeUnit.RemoveAt(temp3); cubeUnit.RemoveAt(temp2); cubeUnit.RemoveAt(temp1); break; } counter = 0; } }
public void CreateOrbs(List<Unit> orbs, ref GameGrid gameGrid) { if (!gameGrid.isOccupied[5, 5]) { orbs.Add(new Unit(new Vector2(5, 5))); gameGrid.isOccupied[5, 5] = true; } if (!gameGrid.isOccupied[5, 7]) { orbs.Add(new Unit(new Vector2(5, 7))); gameGrid.isOccupied[5, 7] = true; } if (!gameGrid.isOccupied[5, 10]) { orbs.Add(new Unit(new Vector2(5, 10))); gameGrid.isOccupied[5, 10] = true; } if (!gameGrid.isOccupied[5, 12]) { orbs.Add(new Unit(new Vector2(5, 12))); gameGrid.isOccupied[5, 12] = true; } }
public void CreateCubes(List<Unit> cubes, ref GameGrid gameGrid) { if (!gameGrid.isOccupied[34, 5]) { cubes.Add(new Unit(new Vector2(34, 5))); gameGrid.isOccupied[34, 5] = true; } if (!gameGrid.isOccupied[34, 7]) { cubes.Add(new Unit(new Vector2(34, 7))); gameGrid.isOccupied[34, 7] = true; } if (!gameGrid.isOccupied[34, 10]) { cubes.Add(new Unit(new Vector2(34, 10))); gameGrid.isOccupied[34, 10] = true; } if (!gameGrid.isOccupied[34, 12]) { cubes.Add(new Unit(new Vector2(34, 12))); gameGrid.isOccupied[34, 12] = true; } }