我开始使用QT,想要编写一个名为Pong的小游戏(2个玩家和一个球)。左边的玩家应该用键'W'和'S'移动,右边的玩家用箭头键上下移动。我有一个类游戏来处理我的动画。我有一个eventfilter来处理keyPress
bool Game::eventFilter(QObject *target, QEvent *e)
{
Q_UNUSED(target);
bool handled = false;
if(e->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = (QKeyEvent *)e;
if(keyEvent->key() == Qt::Key_W)
{
leftPlayerDir = ((leftPlayerDir == 0) ? 5 : leftPlayerDir);
handled = true;
}
else if(keyEvent->key() == Qt::Key_S)
{
leftPlayerDir = ((leftPlayerDir == 0) ? -5 : leftPlayerDir);
handled = true;
}
else if(keyEvent->key() == Qt::Key_Up)
{
rightPlayerDir = ((rightPlayerDir == 0) ? 5 : rightPlayerDir);
handled = true;
}
else if(keyEvent->key() == Qt::Key_Down)
{
rightPlayerDir = ((rightPlayerDir == 0) ? -5 : rightPlayerDir);
handled = true;
}
}
return handled;
}
在我的班级Pong中,我设置主窗口并处理按钮,我有一行来安装eventfilter
ui->animation->installEventFilter(game);
如果我开始我的程序动画正在运行,但是玩家没有继续使用keyPress,我不知道为什么。一些想法?