private static void FillGridWithEmptyTiles(List <List <Tile> > tiles) { for (int x = 0; x < tiles.Count; x += 1) { for (int y = 0; y < tiles[0].Count; y += 1) { if (tiles[x][y] == null) { tiles[x][y] = new EmptyTile(); } } } }
/// <summary> /// Checks if adjacent tiles from the clicked tile are empty(not a bomb tile or next to one) /// </summary> /// <param name="checkTile">tile to be checked</param> private void checkAdjacent(Tile checkTile) { int[] rowIds = new int[3]; int[] columnIds = new int[3]; rowIds[0] = checkTile.RowId - 1; rowIds[1] = checkTile.RowId; rowIds[2] = checkTile.RowId + 1; columnIds[0] = checkTile.ColumnId - 1; columnIds[1] = checkTile.ColumnId; columnIds[2] = checkTile.ColumnId + 1; int bombcount = 0; //Tämän pitäisi tarkistaa lattaa ympäröivät laatat ja muuttaa ne tyhjiksi laatoiksi jos niissä ei ole miinaa //mutta muutaa laatat pelkästään klikatun laatan oikealta puolelta. Joskus debuggerilla katsoessa muuttaa myös vasemman ylälaatan. //HUOM BUGI LÖYDETTY, SYY SELVITETTÄVÄ VIELÄ!!! //Vaikuttaa vain joka toiseen laattaan. Mikäli jokin (joka toisesta) laatasta on laatta mitä klikattiin tai pommilaatta, vaikuttaa siitä seuraavaan laattaan oikealle päin. //EI JOHDU TIMERISTA foreach (Control x in gamePanel.Controls) { if (x is Tile) { //MessageBox.Show("ID: " + ((Tile)x).ColumnId + "_" + ((Tile)x).RowId + "location: " + x.Location); //Käy kaikki laatat läpi, mikäli tämä pätkä ei ole käytössä for (int i = 0; i < 3; i++) { if (((Tile)x).ColumnId == columnIds[i] && ((Tile)x).RowId == rowIds[0]) { //MessageBox.Show("x CID: " + ((Tile)x).ColumnId + " x RID: " + ((Tile)x).RowId + "\nCheck CID: " + columnIds[i] + " Check RID: " + rowIds[0]); if (x is BombTile) { bombcount++; } else if (x is UncoveredTile) { checkAdjacent(x as Tile); } } else if (((Tile)x).ColumnId == columnIds[i] && ((Tile)x).RowId == rowIds[1]) { if (x is BombTile) { bombcount++; } else if (x is UncoveredTile) { checkAdjacent(x as Tile); } } else if (((Tile)x).ColumnId == columnIds[i] && ((Tile)x).RowId == rowIds[2]) { if (x is BombTile) { bombcount++; } else if (x is UncoveredTile) { checkAdjacent(x as Tile); //TÄMÄ MUUALLE } } } } } if (bombcount == 1) { Tile1 replaceTile = new Tile1(); replaceTile.Location = checkTile.Location; gamePanel.Controls.Remove(checkTile); gamePanel.Controls.Add(replaceTile); tilesClicked++; } else if (bombcount == 2) { Tile2 replaceTile = new Tile2(); replaceTile.Location = checkTile.Location; gamePanel.Controls.Remove(checkTile); gamePanel.Controls.Add(replaceTile); tilesClicked++; } else if (bombcount == 3) { Tile3 replaceTile = new Tile3(); replaceTile.Location = checkTile.Location; gamePanel.Controls.Remove(checkTile); gamePanel.Controls.Add(replaceTile); tilesClicked++; } else if (bombcount == 4) { Tile4 replaceTile = new Tile4(); replaceTile.Location = checkTile.Location; gamePanel.Controls.Remove(checkTile); gamePanel.Controls.Add(replaceTile); tilesClicked++; } else if (bombcount == 5) { Tile5 replaceTile = new Tile5(); replaceTile.Location = checkTile.Location; gamePanel.Controls.Remove(checkTile); gamePanel.Controls.Add(replaceTile); tilesClicked++; } else { EmptyTile replaceTile = new EmptyTile(); replaceTile.Location = checkTile.Location; gamePanel.Controls.Remove(checkTile); gamePanel.Controls.Add(replaceTile); tilesClicked++; } }