本文整理汇总了C++中BallSprite::setCheckedX方法的典型用法代码示例。如果您正苦于以下问题:C++ BallSprite::setCheckedX方法的具体用法?C++ BallSprite::setCheckedX怎么用?C++ BallSprite::setCheckedX使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BallSprite
的用法示例。
在下文中一共展示了BallSprite::setCheckedX方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkedBall
//全ボールに対してボールの並びをチェックする
void GameLayer::checkedBall(BallSprite::PositionIndex current, Direction direction)
{
//全てのボールのBallTypeを取得
auto allBalls = getAllBalls();
//検索するタグの生成
int tag = BallSprite::generateTag(BallSprite::PositionIndex(current.x, current.y));
BallSprite* ball = allBalls.at(tag);
//指定方向のチェック済みフラグを取得
bool checked;
if (direction == Direction::x)
checked = ball->getCheckedX();
else
checked = ball->getCheckedY();
if (!checked)
{
int num = 0;
while (true)
{
//検索位置を取得
BallSprite::PositionIndex searchPosition;
if (direction == Direction::x)
searchPosition = BallSprite::PositionIndex(current.x + num, current.y);
else
searchPosition = BallSprite::PositionIndex(current.x, current.y + num);
//次のボールと同じballTypeかチェックする
if (isSameBallType(searchPosition, direction))
{
//次のボールと同じballType
int nextTag = BallSprite::generateTag(searchPosition);
auto nextBall = allBalls.at(nextTag);
//チェックしたボールのチェック済みフラグを立てる
if (direction == Direction::x)
nextBall->setCheckedX(true);
else
nextBall->setCheckedY(true);
num++;
}
else
{
//次のボールが異なるballType
if (num >= 2)
{
int removedNo = 0;
//消去するボールのカウント
if (_removeNumbers.size() <= _chainNumber)
{
//配列が存在しない場合は追加する
std::map<BallSprite::BallType, int> removeNumber;
_removeNumbers.push_back(removeNumber);
}
_removeNumbers[_chainNumber][ball->getBallType()] += num + 1;
//すでにRemovedNoがあるものが存在するかチェック
for (int i = 0; i <= num; i++)
{
BallSprite::PositionIndex linedPosition;
if (direction == Direction::x)
linedPosition = BallSprite::PositionIndex(current.x + i, current.y);
else
linedPosition = BallSprite::PositionIndex(current.x, current.y + i);
int linedBallTag = BallSprite::generateTag(linedPosition);
auto linedBall = allBalls.at(linedBallTag);
if (linedBall->getRemovedNo() > 0)
{
//すでにRemovedNoがあるものが存在するので、removedNoを取得し次の処理を行う
removedNo = linedBall->getRemovedNo();
break;
}
}
//消去する順番のカウントアップ
if (removedNo == 0)
removedNo = ++_maxRemovedNo;
//3個以上並んでいた場合は、reomvedNoをセットする
for (int i = 0; i <= num; i++)
{
BallSprite::PositionIndex linedPosition;
if (direction == Direction::x)
linedPosition = BallSprite::PositionIndex(current.x + i, current.y);
else
linedPosition = BallSprite::PositionIndex(current.x, current.y + i);
int linedBallTag = BallSprite::generateTag(linedPosition);
auto linedBall = allBalls.at(linedBallTag);
linedBall->setRemovedNo(removedNo);
}
}
//.........这里部分代码省略.........