示例#1
0
        private void MineMouseUp(object sender, EventArgs e)
        {
            MineControl btn = (MineControl)sender;

            switch (btn.MouseStatus)
            {
            case 1:     //left
                btn.Unseal();
                if (btn.Value == 0)
                {
                    FloodFill(btn.LocationX, btn.LocationY);
                }
                break;

            case 2:     //right
                //do nothing
                break;

            case 3:     //both
                bool doUnseal = false;
                //检查是否符合翻开的条件
                if (CheckCondition(btn.LocationX, btn.LocationY))
                {
                    doUnseal = true;
                }
                for (int i = -1; i <= 1; i++)
                {
                    if (i + btn.LocationX < 0 || i + btn.LocationX >= X)
                    {
                        continue;
                    }
                    for (int j = -1; j <= 1; j++)
                    {
                        if (j + btn.LocationY < 0 || j + btn.LocationY >= Y)
                        {
                            continue;
                        }
                        MineControl curbtn = matrix[(i + btn.LocationX) * Y + j + btn.LocationY];
                        if (doUnseal)
                        {
                            curbtn.Unseal();
                            if (curbtn.Value == 0)
                            {
                                FloodFill(curbtn.LocationX, curbtn.LocationY);
                            }
                        }
                        else
                        {
                            curbtn.UnPress();
                        }
                    }
                }
                break;
            }
        }