예제 #1
0
void GAMEDATA::init(){
    setCurLevel(0);
    setCurScore(0);
    setHistoryScore(UserDefault::getInstance()->getIntegerForKey("highestScore",0));
}
예제 #2
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) );
		}
	}
}