洪水填充和堆栈实施不起作用
Flood Fill and Stack Implementation Not working
所以我有两个协同工作的结构。这是一款类似于泡泡龙游戏的游戏。
当气球在网格中弹出时,我想使用填充填充来移除气球,然后使用堆栈将其放置,以便稍后撤消该过程。
使用预先确定大小的堆栈数组来简化操作。当您想要取回数据时,只需调用 pop_balloon 直到堆栈为空(使用该函数)。
以下代码未经测试并且是凭空提取的,但它应该表明您需要:
Balloon balloonStack[MAX_NUM_BALLOONS_POSSBILE];
int balloonStackIndex = 0;
bool balloonStackIsEmpty()
{
return balloonStackIndex == 0;
}
void balloonPush(Balloon balloon)
{
assert(balloonStackIndex < MAX_NUM_BALLOONS_POSSBILE);
balloonStack[balloonStackIndex++] = balloon;
}
Balloon balloonPop()
{
assert(balloonStackIndex > 0);
return balloonStack[balloonStackIndex--]
}
int balloon_pop(BBoardPtr b, int r, int c) {
if(b->board[r][c].color != None /*&& r >= 0 && c >= 0 && r rows && c cols*/) {
return 0;
}
balloonPush(b->board[r][c]);
b->board[r][c].color = None;
b->board[r][c].is_popped = 1;
//...
所以我有两个协同工作的结构。这是一款类似于泡泡龙游戏的游戏。
当气球在网格中弹出时,我想使用填充填充来移除气球,然后使用堆栈将其放置,以便稍后撤消该过程。
使用预先确定大小的堆栈数组来简化操作。当您想要取回数据时,只需调用 pop_balloon 直到堆栈为空(使用该函数)。
以下代码未经测试并且是凭空提取的,但它应该表明您需要:
Balloon balloonStack[MAX_NUM_BALLOONS_POSSBILE];
int balloonStackIndex = 0;
bool balloonStackIsEmpty()
{
return balloonStackIndex == 0;
}
void balloonPush(Balloon balloon)
{
assert(balloonStackIndex < MAX_NUM_BALLOONS_POSSBILE);
balloonStack[balloonStackIndex++] = balloon;
}
Balloon balloonPop()
{
assert(balloonStackIndex > 0);
return balloonStack[balloonStackIndex--]
}
int balloon_pop(BBoardPtr b, int r, int c) {
if(b->board[r][c].color != None /*&& r >= 0 && c >= 0 && r rows && c cols*/) {
return 0;
}
balloonPush(b->board[r][c]);
b->board[r][c].color = None;
b->board[r][c].is_popped = 1;
//...