void GAMEDATA::init(){ setCurLevel(0); setCurScore(0); setHistoryScore(UserDefault::getInstance()->getIntegerForKey("highestScore",0)); }
void PopStar::onReduce() { if (!gameLayer) { return; } int num = selectStars.size(); int score = getPopStarDataMgr().getScore() + getPopStarDataMgr().getScoreByReduceNum(num); setScore(score); StarListIter iter; for (iter = selectStars.begin(); iter != selectStars.end(); ++iter) { gameLayer->removeChild(iter->star); stars[iter->row][iter->col] = NULL; } selectStars.clear(); // 竖直调整 for (int row = 0; row < ROW_NUM; ++row) { for (int col = 0; col < COL_NUM; ++col) { int tempRow = row; Star* star = stars[row][col]; if (star) { continue; } else { while (!star && (tempRow < ROW_NUM)) { star = stars[tempRow][col]; if (star) { break; } ++tempRow; } if (star) { stars[row][col] = stars[tempRow][col]; stars[tempRow][col] = NULL; } } } } while (isNeedHoriAdjust()) { int endCol = getCheckEndCol(); for (int col = 0; col <= endCol; ++col) { if (!stars[0][col]) { for (int i = col; i < endCol; ++i) { for (int row = 0; row < ROW_NUM; ++row) { stars[row][i] = stars[row][i+1]; } } for (int row = 0; row < ROW_NUM; ++row) { stars[row][endCol] = NULL; } break; } } } // 刷新位置 for (int row = 0; row < ROW_NUM; ++row) { for (int col = 0; col < COL_NUM; ++col) { Star* star = stars[row][col]; if (star) { star->setDestPos(ccp(STAR_WIDTH*col + STAR_WIDTH/2, STAR_HEIGHT*row + STAR_HEIGHT/2)); } } } if (isLevelEnd()) { int num = getLeftStarNum(); int score = getPopStarDataMgr().getScore() + getPopStarDataMgr().getScoreByLeftNum(num); setScore(score); int historyScore = getPopStarDataMgr().getHistoryScore(); if (score > historyScore) { setHistoryScore(score); } int level = getPopStarDataMgr().getLevel(); int historyLevelScore = getPopStarDataMgr().getHistoryLevelScoreByLevel(level); if (score > historyLevelScore) { setHistoryLevelScore(score); } if (isGameOver()) // 游戏结束 { changeState( new GameOverState(this) ); } else // 下一等级 { changeState( new GamePassLevelState(this) ); } } }