Пример #1
0
    // Update is called once per frame
    void Update()
    {
        if (_State == GameState.End)
        {
            return;
        }

        if (Input.GetMouseButtonDown(0))
        {
            Vector3Int vp = getClickPos();
            if (_FrontMap.isPosValid(vp))
            {
                if (_State == GameState.Wait)
                {
                    _BackMap.makeMineField(_MineNumber, Camera.main.ScreenToWorldPoint(Input.mousePosition));
                    _State = GameState.Run;
                }
                if (_FrontMap.flipTile(vp, true))
                {
                    // 普通点了一下
                    _SE.playSE("click");
                    checkWinState();
                }
                else
                {
                    // 点死了
                    _State = GameState.End;
                    _SE.playSE("explode");
                }
            }
        }
        else if (Input.GetMouseButtonDown(1))
        {
            Vector3Int vp = getClickPos();
            if (_FrontMap.isPosValid(vp))
            {
                TileBase tb = _FrontMap.GetTile(vp);
                if (tb != null)
                {
                    _SE.playSE("mark");
                    if (tb == _FrontMap._MarkTypes[0])
                    {
                        _FrontMap.SetTile(vp, _FrontMap._MarkTypes[1]);
                    }
                    else if (tb == _FrontMap._MarkTypes[1])
                    {
                        _FrontMap.SetTile(vp, _FrontMap._MarkTypes[2]);
                    }
                    else
                    {
                        _FrontMap.SetTile(vp, _FrontMap._MarkTypes[0]);
                    }
                }
            }
        }
    }
Пример #2
0
    private void Update()
    {
        Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        if (_State == GameState.WAIT)
        {
            // 如果在等候状态,需要吃掉改变难度后的一次抬起
            if (!_CoolDown)
            {
                _CoolDown = true;
                return;
            }
            if (Input.GetMouseButtonUp(0))
            {
                // 左键踩地块 第一次点击生成地雷(如果在格子中才生成地雷)
                if (_MM.isPosInCells(pos))
                {
                    _MM.makeMines(pos, _XCount, _YCount, _MineCount);
                    clickTile(pos);
                    _Timer.startTimer();       //定时器开始工作
                }
                else
                {
                    _SE.playSE("click");
                }
            }
            else if (Input.GetMouseButtonUp(1))
            {
                // 右键标记
                changeMark(pos);
            }
        }
        else if (_State == GameState.RUNNING)
        {
            if (Input.GetMouseButtonUp(0))
            {
                clickTile(pos);
            }
            else if (Input.GetMouseButtonUp(1))
            {
                changeMark(pos);
            }

            if (Input.GetKeyUp(KeyCode.R))
            {
                resetGame();
            }
        }
        // 改变难度时
        else if (_State == GameState.CHANGE)
        {
            // 单击右键 取消改变难度
            if (Input.GetMouseButtonUp(1))
            {
                _DifficultyGO.SetActive(false);
                _State = _StateCache;
            }
        }
        else if (_State == GameState.END)
        {
            if (Input.GetKeyUp(KeyCode.R))
            {
                resetGame();
            }
        }
    }