为下面的评论编辑。
// I'm making some assumptions about your functions here. Make adjustments.
// You can handle both players' key inputs here.
void handleKeypress(unsigned char key, int x, int y)
{
if (key == 27)
exit(0);
// Player 1
if (key == 'w')
{
A.moveSquareUp();
}
if (key == 'd')
{
A.moveSquareRight();
}
if (key == 's')
{
A.moveSquareDown();
}
if (key == 'a')
{
A.moveSquareLeft();
}
}
void handleSpecialKeypress(int key, int x, int y)
{
// Player 2
if (key == GLUT_KEY_UP)
{
B.moveSquareUp();
}
if (key == GLUT_KEY_RIGHT)
{
B.moveSquareRight();
}
if (key == GLUT_KEY_DOWN)
{
B.moveSquareDown();
}
if (key == GLUT_KEY_LEFT)
{
B.moveSquareLeft();
}
}
您需要在游戏逻辑中的某个地方处理键盘事件(主循环或
glutKeyboardFunc()
,并调用所需的行为。这有一些优点:
-
键盘输入处理统一在一个地方。
-
使用
if
而不是
switch
允许使用多个密钥。
-
您可以在主循环内组织此事件处理,而不依赖于计时器。