洪水填充和堆栈实施不起作用

时间:2015-04-27 17:51:50

标签: c stack flood-fill

所以我有两个结合在一起的结构。这是一款像泡泡流行游戏一样的游戏。

当一个气球在网格中弹出时,我想使用泛洪填充来移除气球,然后使用堆栈让它使用,这样我就可以稍后撤消该过程。

1 个答案:

答案 0 :(得分: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;
    //...