// 可能有线程不安全,到时再考虑 public void Ctrl() { if (iOver != 0) return; // 游戏是否结束 checkover(); if (iOver != 0 && model == 1 && iNowSucc > CCV.iMax) { CCV.iMax = iNowSucc; } if (iOver == 1 && model == 0) // 成功过关 { CCV.iSelectMax++; } if (iOver != 0) // 游戏结束,保存参数 CCV.SavePara(); long timenow = System.currentTimeMillis(); if (bBing && (timenow - iBing) >= 5000) { bBing = false; timemax += 5; } if (!bBing) { itimeleft = timemax - (timenow - timelast) / 1000; } // 此处更新一些控制效果的变量 if (iCnt > 0) iCnt--; if (iDian >= 1) iDian--; }
// 游戏操作 public int onTouch(MotionEvent event) { // 重玩 if (event.getX() > (int) (690.0 * fWidthRate) && event.getX() < (int) (790.0 * fWidthRate) && event.getY() > (int) (290.0 * fHigthRate) && event.getY() < (int) (350.0 * fHigthRate)) { reset(); return -1; } // 返回,到选择界面 if (event.getX() > (int) (690.0 * fWidthRate) && event.getX() < (int) (790.0 * fWidthRate) && event.getY() > (int) (360.0 * fHigthRate) && event.getY() < (int) (420.0 * fHigthRate)) { return 2; } // 音效控制 if (event.getX() > (int) (690.0 * fWidthRate) && event.getX() < (int) (790.0 * fWidthRate) && event.getY() > (int) (430.0 * fHigthRate) && event.getY() < (int) (490.0 * fHigthRate)) { CCV.bYinxiao = !CCV.bYinxiao; if (CCV.bjyx != null && CCV.bYinxiao) { try { CCV.bjyx.prepare(); } catch (IOException e) { e.printStackTrace(); } CCV.bjyx.start(); } if (CCV.bjyx != null && !CCV.bYinxiao) { CCV.bjyx.pause(); } return -1; } if (iOver != 0) { // 10-80 100 - 130 105-180 if (event.getX() > 310 * fWidthRate && event.getX() < 380 * fWidthRate && event.getY() > 265 * fHigthRate && event.getY() < 295 * fHigthRate) { if (iOver == 1) return 2; // 返回到选择关卡界面 else { reset(); return -1; } } if (event.getX() > 405 * fWidthRate && event.getX() < 480 * fWidthRate && event.getY() > 265 * fHigthRate && event.getY() < 295 * fHigthRate) { if (iOver == 1) // 过关 { if (CCV.iSelect < 21) CCV.iSelect++; else return 2; if (CCV.iDaojuB < 5 && Math.abs(rdm.nextInt()) % 10 == 1) CCV.iDaojuB++; if (CCV.iDaojuD < 5 && Math.abs(rdm.nextInt()) % 10 == 1) CCV.iDaojuD++; if (CCV.iDaojuF < 5 && Math.abs(rdm.nextInt()) % 10 == 1) CCV.iDaojuF++; CCV.SavePara(); reset(); return -1; } else { return 7; } } return -1; } for (int i = 1; i <= iRows * iCols; i++) { if (event.getX() > game[i].iLeft && event.getX() < game[i].iRight && event.getY() > game[i].iTop && event.getY() < game[i].iBottom) { if (game[i].istate == 2) { break; } if (iSelectCard1 == -1 || iSelectCard2 != -1) // 重新开始选择第一张牌 { if (model == 1) { int iRand = Math.abs(rdm.nextInt()) % iCardCnt + 1; if (iSelectCard1 != -1 && game[iSelectCard1].istate == 2) { game[iSelectCard1].card = iRand; game[iSelectCard1].istate = 0; } if (iSelectCard2 != -1 && game[iSelectCard2].istate == 2) { game[iSelectCard2].card = iRand; game[iSelectCard2].istate = 0; } } iSelectCard1 = i; iSelectCard2 = -1; iCnt = 0; break; } else if (iSelectCard1 != i) // 选中了一张,选择第二张不一样的时候 { // if ( game[i].card.iCardID == game[iSelectCard1].card.iCardID ) if (game[i].card == game[iSelectCard1].card) { if (CCV.yesyx != null && CCV.bYinxiao) CCV.yesyx.start(); game[i].istate = 2; game[iSelectCard1].istate = 2; CCV.iTotal++; // 累积一分 if (model != 1) iSelectCard1 = -1; else { iNowSucc++; iSelectCard2 = i; iCnt = 7; } // 游戏是否结束 checkover(); iSucc++; } else { if (CCV.noyx != null && CCV.bYinxiao) CCV.noyx.start(); iSelectCard2 = i; iCnt = 5; iClick++; } } break; } } // 道具显示区域 if (event.getX() > (int) (705.0 * fWidthRate) && event.getX() < (int) (775.0 * fWidthRate) && event.getY() > (int) (80.0 * fHigthRate) && event.getY() < (int) (140.0 * fHigthRate)) { if (CCV.iDaojuF > 0) { daojufeng(); CCV.iDaojuF--; } } if (event.getX() > (int) (705.0 * fWidthRate) && event.getX() < (int) (775.0 * fWidthRate) && event.getY() > (int) (150.0 * fHigthRate) && event.getY() < (int) (210.0 * fHigthRate)) { if (CCV.iDaojuB > 0) { bBing = true; iBing = System.currentTimeMillis(); CCV.iDaojuB--; } } if (event.getX() > (int) (705.0 * fWidthRate) && event.getX() < (int) (775.0 * fWidthRate) && event.getY() > (int) (220.0 * fHigthRate) && event.getY() < (int) (280.0 * fHigthRate)) { if (CCV.iDaojuD > 0) { iDian = 15; CCV.iDaojuD--; } } int i; for (i = 1; i <= iCols; i++) { if (game[i].istate != 2) break; } // Log.d("aaaaaaaaa", ""+i); if (i > iCols) { iHeihei = 1; } return -1; }