void CreateWinTile() { System.Random rnd = new System.Random(); winTile = tilesUnmined[rnd.Next(tilesUnmined.Count - 20, tilesUnmined.Count)]; winTile.GetComponent <MeshRenderer>().material = winTileMaterial; winTile.winTile = true; }
void AssignMines() { tilesUnmined.AddRange(tilesAll); for (int i = numTiles - 1; i >= 0; i--) { var tile = tilesUnmined[i]; if (tile.coord.x < 3 && tile.coord.y < 3) { Debug.Log(tile.coord.x); tilesUnmined.Remove(tile); } } int nTotalUnmined = tilesUnmined.Count; // krithik doesn't like this System.Random rnd = new System.Random(); for (int minesAssigned = 0; minesAssigned < nTotalUnmined * percentMines; minesAssigned += 1) { Tile_Script currentTile = tilesUnmined[rnd.Next(0, tilesUnmined.Count)]; tilesMined.Add(currentTile); tilesUnmined.Remove(currentTile); Tile_Script currentTileComponent = currentTile.GetComponent(typeof(Tile_Script)) as Tile_Script; currentTileComponent.isMined = true; } }
public void OnTileClick(Tile_Script t) { Debug.Log("CLICK @ " + t.coord); // take the coordinate and decide if the player should move if (IsValidMove(player.coord, t.coord) && (!aboutToDie) && (!aboutToWin)) { // the move is valid, so make it happen player.MoveToTile(t); activeTile = t; // refrencing the tile that is the location of the player if (t.isMined) { aboutToDie = true; // detects if the tile the player is moving to is a bomb Invoke("LoadGameEnd", 4); } else if (t.winTile) { aboutToWin = true; Invoke("LoadGameWin", 1); } else { t.UncoverTile(); } } }
void CreateTiles() { float xOffset = 0.0f; float yOffset = 0.0f; tilesAll = new List <Tile_Script>(); tilesMined = new List <Tile_Script>(); tilesUnmined = new List <Tile_Script>(); for (int tilesCreated = 0; tilesCreated < numTiles; tilesCreated += 1) { if (tilesCreated % tilesPerRow == 0 && tilesCreated > 0) { yOffset += distBetweenTiles; xOffset = 0; } Vector3 tileScreenPosition = new Vector3(transform.position.x + xOffset, transform.position.y + yOffset, transform.position.z); // creates the location of the tile Tile_Script newTile = Instantiate(tilePrefab, tileScreenPosition, tilePrefab.transform.rotation); // creates the tile object newTile.ID = tilesCreated; newTile.tilesPerRow = tilesPerRow; newTile.coord = new Vector2Int(tilesCreated % tilesPerRow, (int)(tilesCreated / tilesPerRow)); // assign tile coordinates in integer grid newTile.tileClickedEvent += gameController.OnTileClick; // add GameControl as listener to Tile click event tilesAll.Add(newTile); // adds tile to list of tiles xOffset += distBetweenTiles; } AssignMines(); CreateWinTile(); }
private void SwapPos(RaycastHit2D pos1, RaycastHit2D pos2) { //Tile_Script BeganHitTile = m_TouchBeganHit.transform.GetComponent<Tile_Script>(); //Tile_Script MovedHitTile = m_TouchMovedHit.transform.GetComponent<Tile_Script>(); Tile_Script BeganHitTile = pos1.transform.GetComponent <Tile_Script>(); Tile_Script MovedHitTile = pos2.transform.GetComponent <Tile_Script>(); m_board.ChangeTilePos(BeganHitTile.m_x, BeganHitTile.m_y, MovedHitTile.m_x, MovedHitTile.m_y); }
private void CreateTiles() { foreach (var s in m_BoardList) { Tile_Script tile = Instantiate <Tile_Script>(s.type_.transform.GetComponent <Tile_Script>()); tile.transform.SetParent(this.transform); tile.transform.position = new Vector3(Param_Script.ZERO_X + (s.x_ * Param_Script.SIZE_X), Param_Script.ZERO_Y + (s.y_ * Param_Script.SIZE_Y), 0f); tile.SetTilePos(s.x_, s.y_); s.SetTileScript(tile); } }
private void SwapPos(Board.toys pos1, Board.toys pos2) { if (pos1 == null && pos2 == null) { return; } Tile_Script BeganHitTile = pos1.type_.transform.GetComponent <Tile_Script>(); Tile_Script MovedHitTile = pos2.type_.transform.GetComponent <Tile_Script>(); m_board.ChangeTilePos(BeganHitTile.m_x, BeganHitTile.m_y, MovedHitTile.m_x, MovedHitTile.m_y); }
private void initiateTiles() { /* Gets all of the neighboring tiles and stores them */ if (InBounds(Grid_Script.tilesAll, ID + tilesPerRow)) { tileUpper = Grid_Script.tilesAll[ID + tilesPerRow]; //sets tileUpper } if (InBounds(Grid_Script.tilesAll, ID - tilesPerRow)) { tileLower = Grid_Script.tilesAll[ID - tilesPerRow]; //sets tileLower ... other lines do the same } if (InBounds(Grid_Script.tilesAll, ID - 1) && ID % tilesPerRow != 0) { tileLeft = Grid_Script.tilesAll[ID - 1]; } if (InBounds(Grid_Script.tilesAll, ID + 1) && (ID + 1) % tilesPerRow != 0) { tileRight = Grid_Script.tilesAll[ID + 1]; } if (InBounds(Grid_Script.tilesAll, ID + tilesPerRow + 1) && (ID + 1) % tilesPerRow != 0) { tileUpperRight = Grid_Script.tilesAll[ID + tilesPerRow + 1]; } if (InBounds(Grid_Script.tilesAll, ID + tilesPerRow - 1) && ID % tilesPerRow != 0) { tileUpperLeft = Grid_Script.tilesAll[ID + tilesPerRow - 1]; } if (InBounds(Grid_Script.tilesAll, ID - tilesPerRow + 1) && (ID + 1) % tilesPerRow != 0) { tileLowerRight = Grid_Script.tilesAll[ID - tilesPerRow + 1]; } if (InBounds(Grid_Script.tilesAll, ID - tilesPerRow - 1) && ID % tilesPerRow != 0) { tileLowerLeft = Grid_Script.tilesAll[ID - tilesPerRow - 1]; } /* InBounds function is the reason this doesn't vomit errors */ // Add all of the other tiles into a list of adjacent tiles (if they exist) if (tileUpper) { adjacentTiles.Add(tileUpper); } if (tileLower) { adjacentTiles.Add(tileLower); } if (tileRight) { adjacentTiles.Add(tileRight); } if (tileLeft) { adjacentTiles.Add(tileLeft); } if (tileUpperRight) { adjacentTiles.Add(tileUpperRight); } if (tileUpperLeft) { adjacentTiles.Add(tileUpperLeft); } if (tileLowerRight) { adjacentTiles.Add(tileLowerRight); } if (tileLowerLeft) { adjacentTiles.Add(tileLowerLeft); } }
public void MoveToTile(Tile_Script t) { coord = t.coord; finalCoord = t.transform.position; }
public void SetTileScript(Tile_Script t) { tile_ = t; }
private void CheckAnwser() { Tile_Script BeganHitTile = m_TouchBeganHit.transform.GetComponent <Tile_Script>(); Tile_Script MovedHitTile = m_TouchMovedHit.transform.GetComponent <Tile_Script>(); int Began_id = BeganHitTile.GetTileID(); int moved_id = MovedHitTile.GetTileID(); int Began_left_up = CheckCaseLeftUp(BeganHitTile.m_x, BeganHitTile.m_y, BeganHitTile.m_x - 1, BeganHitTile.m_y - 1, 0) + CheckCaseRightDown(BeganHitTile.m_x, BeganHitTile.m_y, BeganHitTile.m_x + 1, BeganHitTile.m_y + 1, 0); int Began_right_up = CheckCaseRightUp(BeganHitTile.m_x, BeganHitTile.m_y, BeganHitTile.m_x + 1, BeganHitTile.m_y - 1, 0) + CheckCaseLeftDown(BeganHitTile.m_x, BeganHitTile.m_y, BeganHitTile.m_x - 1, BeganHitTile.m_y + 1, 0); int Began_center_up = CheckCaseCenterUp(BeganHitTile.m_x, BeganHitTile.m_y, BeganHitTile.m_x, BeganHitTile.m_y - 2, 0) + CheckCaseCenterDown(BeganHitTile.m_x, BeganHitTile.m_y, BeganHitTile.m_x, BeganHitTile.m_y + 2, 0); int Moved_left_up = CheckCaseLeftUp(MovedHitTile.m_x, MovedHitTile.m_y, MovedHitTile.m_x - 1, MovedHitTile.m_y - 1, 0) + CheckCaseRightDown(MovedHitTile.m_x, MovedHitTile.m_y, MovedHitTile.m_x + 1, MovedHitTile.m_y + 1, 0); int Moved_right_up = CheckCaseRightUp(MovedHitTile.m_x, MovedHitTile.m_y, MovedHitTile.m_x + 1, MovedHitTile.m_y - 1, 0) + CheckCaseLeftDown(MovedHitTile.m_x, MovedHitTile.m_y, MovedHitTile.m_x - 1, MovedHitTile.m_y + 1, 0); int Moved_center_up = CheckCaseCenterUp(MovedHitTile.m_x, MovedHitTile.m_y, MovedHitTile.m_x, MovedHitTile.m_y - 2, 0) + CheckCaseCenterDown(MovedHitTile.m_x, MovedHitTile.m_y, MovedHitTile.m_x, MovedHitTile.m_y + 2, 0); //모든 경우가 맞지 않으면 되돌린다. if (isAllWrong(Began_left_up, Began_right_up, Began_center_up, Moved_left_up, Moved_right_up, Moved_center_up)) { Debug.Log("All Wrong"); EventSwap(m_TouchBeganHit, m_TouchMovedHit); return; } if (Began_left_up >= 2) { RemoveLeftUp(Began_id, BeganHitTile.m_x, BeganHitTile.m_y); RemoveRightDown(Began_id, BeganHitTile.m_x + 1, BeganHitTile.m_y + 1); } if (Began_right_up >= 2) { RemoveRightUp(Began_id, BeganHitTile.m_x, BeganHitTile.m_y); RemoveLeftDown(Began_id, BeganHitTile.m_x - 1, BeganHitTile.m_y + 1); } if (Began_center_up >= 2) { RemoveCenterUp(Began_id, BeganHitTile.m_x, BeganHitTile.m_y); RemoveCenterDown(Began_id, BeganHitTile.m_x, BeganHitTile.m_y + 2); } if (Moved_left_up >= 2) { RemoveLeftUp(moved_id, MovedHitTile.m_x, MovedHitTile.m_y); RemoveRightDown(moved_id, MovedHitTile.m_x + 1, MovedHitTile.m_y + 1); } if (Moved_right_up >= 2) { RemoveRightUp(moved_id, MovedHitTile.m_x, MovedHitTile.m_y); RemoveLeftDown(moved_id, MovedHitTile.m_x - 1, MovedHitTile.m_y + 1); } if (Moved_center_up >= 2) { RemoveCenterUp(moved_id, MovedHitTile.m_x, MovedHitTile.m_y); RemoveCenterDown(moved_id, MovedHitTile.m_x, MovedHitTile.m_y + 2); } StartDrop(); }