/// <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(); }
/// <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(); } } }