Qt ::如何让“蛇”游戏自动移动?

时间:2016-01-09 03:19:09

标签: qt

我正在使用Qt来开发一个英文单词蛇游戏。现在我可以根据我的按键让它移动。但是如何根据我使用A *算法计算的路径让它移动?

当按一个键时,我设置蛇的移动方向,然后使用QTimer的超时()来控制蛇的移动。

connect(&timer, SIGNAL(timeout()), &scene, SLOT(advance()));

现在我想根据我计算的路径手动移动蛇而不使用KeyPress事件。 但如果我打电话给scene.advance(),我的蛇将无法正确移动。

void GameController::move_snake(int s_x, int s_y, int to_x, int to_y)
{
    if (to_x == s_x) {
        if (to_y > s_y) {
            snake->setMoveDirection(MoveDown);
            scene.advance();
        }
        else {
            snake->setMoveDirection(MoveUp);
            scene.advance();
        }
    }
    else {
        if (to_x > s_x) {
            snake->setMoveDirection(MoveRight);
            scene.advance();
        }
        else {
            snake->setMoveDirection(MoveLeft);
            scene.advance();
        }
    }
}

我的一个想法是使用QEvent Cache,当我计算移动方向时,然后构造一个QKeyEvent并将其放入缓存中。这个想法能否成功?如果能成功,如何手动构建这样的缓存和QKeyEvent?如果没有,该怎么办?

0 个答案:

没有答案