示例#1
0
 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();
             }
         }
     }
 }
示例#2
0
        /// <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++;
            }
        }