Пример #1
0
 /// <summary>
 /// 设置雷点位置
 /// </summary>
 void CreatMine()
 {
     for (int j = 0; j < 10; j++)
     {
         //雷个数每次加1;
         MineNumber.Num++;
         //随机从0到Point列表长度的数字间任意选中一个数;
         int a = Random.Range(0, point.Count);
         //让panl数组中与该点相同位置的点重新标记为1;
         panl[point[a].PointX, point[a].PointY] = 1;
         //从列表中删除该店,保证不会随机到相同点;
         point.RemoveAt(a);
     }
     //调用MineNumber脚本中的PrintNum函数显示雷的个数;
     MineNumber.PrintNum();
 }
Пример #2
0
    /// <summary>
    /// 当点击按下时间触发
    /// </summary>
    /// <param name="eventData"></param>
    public void OnPointerDown(PointerEventData eventData)
    {
        //如果按下的是鼠标左键
        if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            //该点被玩家标记为雷或者已经排除,那么retrun
            if (IsSign == true || uiRoot.panl[Sizex, Sizey] == 4)
            {
                return;
            }
            //若这点在二维数值中标记是雷
            if (uiRoot.panl[Sizex, Sizey] == 1)
            {
                //替换Mask组件的图片精灵
                Mask.sprite = mineSprite;
                //将显示图片隐藏,将边框隐藏;
                ShowImage.gameObject.SetActive(false);
                Frame.gameObject.SetActive(false);
                //调用游戏结束;
                uiRoot.GameOver();
            }
            //如果该点是周围一个雷也没有的空白点
            else if (uiRoot.panl[Sizex, Sizey] == 3)
            {
                //执行清除空白点函数;
                ClearNnmTextZero();
                //播放背景动画,和所有Item动画
                bgAnimator.GetComponent <GameAnimator>().PlayBgAnimator();
                uiRoot.PlayAnimator();
            }
            //如果该点是周围有雷的
            else if (uiRoot.panl[Sizex, Sizey] == 2)
            {
                //胜利数组加1
                uiRoot.WinNum++;
                //将Mask的图片显示透明度设置为0,完全透明
                Mask.color = new Color(255, 255, 255, 0);
                //将该点在维尔数组中标记为4.表明它是已经排除过的雷区
                uiRoot.panl[Sizex, Sizey] = 4;

                bgAnimator.GetComponent <GameAnimator>().PlayBgAnimator();
                uiRoot.PlayAnimator();
            }
            //如果胜利数字为71就胜利(将所有的没有雷的地方)
            if (uiRoot.WinNum == 71)
            {
                uiRoot.GameWin();
            }
        }
        //如果按下都是右键
        if (Input.GetKeyDown(KeyCode.Mouse1))
        {
            if (uiRoot.panl[Sizex, Sizey] == 4)
            {
                return;
            }
            //没有被玩家标记为有雷
            if (IsSign == false && mineNum.Num > 0)
            {
                //将该点panl数组的标记数赋值给temp数组的该点;
                temp[Sizex, Sizey] = uiRoot.panl[Sizex, Sizey];
                //显示标记图片
                Sign.SetActive(true);
                IsSign = true;
                //将该点排除
                uiRoot.panl[Sizex, Sizey] = 5;
                //雷数减一
                mineNum.Num--;
                //调用显示雷数的函数
                mineNum.PrintNum();
            }
            else if (IsSign == true && uiRoot.panl[Sizex, Sizey] == 5)
            {
                Sign.SetActive(false);
                IsSign = false;
                //将该点temp数组的标记数赋值给数组panl的该点;
                uiRoot.panl[Sizex, Sizey] = temp[Sizex, Sizey];
                mineNum.Num++;
                mineNum.PrintNum();
            }
        }
    }