コード例 #1
0
ファイル: GameView.java プロジェクト: zhoukenlai/shuiguocai
  // 可能有线程不安全,到时再考虑
  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--;
  }
コード例 #2
0
ファイル: GameView.java プロジェクト: zhoukenlai/shuiguocai
  // 游戏操作
  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;
  }