示例#1
0
        private void ShowBlock(Label label, CellBlock cellBlock)
        {
            label.Image = null;
            label.Text  = cellBlock.NumMine == 0 ? "" : cellBlock.NumMine.ToString();
            string[] loc = label.Tag.ToString().Split('-');
            int      X   = int.Parse(loc[0]);
            int      Y   = int.Parse(loc[1]);

            cellBlock.BlockType = BlockType.Open;
            switch (cellBlock.NumMine)
            {
            case 0:
                ShowEmptyBlock(X, Y);
                break;

            case 1:
                label.ForeColor = Color.Blue;
                break;

            case 2:
                label.ForeColor = Color.DarkGreen;
                break;

            case 3:
                label.ForeColor = Color.Red;
                break;

            case 4:
                label.ForeColor = Color.DarkBlue;
                break;

            case 5:
                label.ForeColor = Color.DarkRed;
                break;

            case 6:
                label.ForeColor = Color.BlueViolet;
                break;

            case -1:
                label.Text  = "";
                label.Image = Resources.clanbomber;
                break;
            }
        }
示例#2
0
        private void CreatValueBoard()
        {
            for (int i = 0; i < NumCol; i++)
            {
                for (int j = 0; j < NumRow; j++)
                {
                    mainBoard[i, j] = new CellBlock {
                        NumMine = 0, BlockType = BlockType.None
                    };
                }
            }
            int numMine = 0;

            while (numMine < MineNumber)
            {
                int randX = rand.Next(0, NumCol - 1);
                int randY = rand.Next(0, NumRow - 1);
                if (mainBoard[randX, randY].NumMine != -1)
                {
                    mainBoard[randX, randY].NumMine = -1;
                    numMine++;
                }
            }
            for (int i = 0; i < NumCol; i++)
            {
                for (int j = 0; j < NumRow; j++)
                {
                    //Nếu ô đó có boom
                    if (mainBoard[i, j].NumMine == -1)
                    {
                        //Tất cả vị trí trừ vòng ngoài
                        if (i > 0 && j > 0 && i < NumCol - 1 && j < NumRow - 1)
                        {
                            SetNumberNear(i - 1, j - 1);
                            SetNumberNear(i, j - 1);
                            SetNumberNear(i + 1, j - 1);
                            SetNumberNear(i - 1, j);
                            SetNumberNear(i - 1, j + 1);
                            SetNumberNear(i, j + 1);
                            SetNumberNear(i + 1, j + 1);
                            SetNumberNear(i + 1, j);
                        }
                        //Tất cả vị trí sát mép trên
                        if (i == 0 && j > 0)
                        {
                            if (j < NumRow - 1)
                            {
                                SetNumberNear(i, j + 1);
                                SetNumberNear(i + 1, j + 1);
                            }
                            //Bao gồm góc trên bên phải
                            SetNumberNear(i, j - 1);
                            SetNumberNear(i + 1, j - 1);
                            SetNumberNear(i + 1, j);
                        }
                        //Tất cả vị trí sát mép dưới
                        if (i == NumCol - 1 && j > 0)
                        {
                            if (j < NumRow - 1)
                            {
                                SetNumberNear(i - 1, j + 1);
                                SetNumberNear(i, j + 1);
                            }
                            //Bao gồm góc dưới bên phải
                            SetNumberNear(i - 1, j - 1);
                            SetNumberNear(i - 1, j);
                            if (j != NumRow - 1)
                            {
                                SetNumberNear(i, j - 1);
                            }
                        }
                        //Tất cả vị trí sát mép bên trái
                        if (i > 0 && j == 0)
                        {
                            if (i < NumCol - 1)
                            {
                                SetNumberNear(i + 1, j + 1);
                                SetNumberNear(i + 1, j);
                            }
                            //Bao gồm góc dưới bên trái
                            SetNumberNear(i - 1, j);
                            SetNumberNear(i - 1, j + 1);
                            SetNumberNear(i, j + 1);
                        }
                        //Tất cả vị trí sát mép bên phải trừ góc
                        if (i > 0 && j == NumRow - 1)
                        {
                            if (i < NumCol - 1)
                            {
                                SetNumberNear(i + 1, j - 1);
                                SetNumberNear(i + 1, j);
                            }
                            if (i != NumCol - 1)
                            {
                                SetNumberNear(i - 1, j - 1);
                                SetNumberNear(i - 1, j);
                            }
                            SetNumberNear(i, j - 1);
                        }
                        //Góc trên cùng bên trái
                        if (i == 0 && j == 0)
                        {
                            SetNumberNear(i, j + 1);
                            SetNumberNear(i + 1, j + 1);
                            SetNumberNear(i + 1, j);
                        }
                    }
                }
            }
        }