我正在使用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?如果没有,该怎么办?