如何在OpenGL(GLUT)和C++;? 我在OpenGL(GLUT)和C++中编写游戏战舰。

如何在OpenGL(GLUT)和C++;? 我在OpenGL(GLUT)和C++中编写游戏战舰。,opengl,logic,glut,Opengl,Logic,Glut,我知道如何处理图形(如显示字段和预定义的船舶), 但是我应该把我的游戏代码放在哪里,比如: 如果按了向左键,请向左选择一个字段并显示它 如果放置了船,则显示该船 在display()函数中,我无法执行放置船只(在字段之间切换)之类的操作,但如果放置船只,则必须由display()函数绘制,对吗 我不知道把游戏逻辑放在哪里。GLUT提供了拦截鼠标键盘事件的功能,如 void keyboardDown(unsigned char key, int x, int y); void mouseCli

我知道如何处理图形(如显示字段和预定义的船舶), 但是我应该把我的游戏代码放在哪里,比如:

  • 如果按了向左键,请向左选择一个字段并显示它
  • 如果放置了船,则显示该船
在display()函数中,我无法执行放置船只(在字段之间切换)之类的操作,但如果放置船只,则必须由display()函数绘制,对吗


我不知道把游戏逻辑放在哪里。

GLUT
提供了拦截鼠标键盘事件的功能,如

void keyboardDown(unsigned char key, int x, int y);
void mouseClick(int button, int state, int x, int y);  
void mouseMotion(int x, int y);
您可以重新实现这些函数以获得程序的自定义行为

例如,如果要在用户按下“s”后绘制船舶,则可以在
键盘向下
功能中将全局标志设置为1。然后,在显示功能中,您可以检查该标志。如果它是
1
,那么您将绘制您的船

当然,如何放置/移动船舶取决于您:)


有关更多信息,请查看GLUT提供的拦截鼠标键盘事件的功能,如

void keyboardDown(unsigned char key, int x, int y);
void mouseClick(int button, int state, int x, int y);  
void mouseMotion(int x, int y);
您可以重新实现这些函数以获得程序的自定义行为

例如,如果要在用户按下“s”后绘制船舶,则可以在
键盘向下
功能中将全局标志设置为1。然后,在显示功能中,您可以检查该标志。如果它是
1
,那么您将绘制您的船

当然,如何放置/移动船舶取决于您:)


有关更多信息,请查看

您要查找的是基本的、经典的。实际上,您的游戏运行在一个巨大的循环中。在这个循环中,您处理用户输入,对用户输入做出反应,运行AI,并更新视频/音频作为响应。当然,这是一个非常简单的方案,但它足以满足战列舰的需要

在概念上,或多或少:

while(Game.IsRunning)
{
    Input = GetInput();
    Game.Update(Input);
    Display(Game);
}

如果您实际上是在进行实时更新,而不是事件驱动的更新,那么您需要将自上次更新以来经过的时间以及玩家输入考虑在内。我会尽量简短,仅限于你的提问。

你要找的是最基本、最经典的。实际上,您的游戏运行在一个巨大的循环中。在这个循环中,您处理用户输入,对用户输入做出反应,运行AI,并更新视频/音频作为响应。当然,这是一个非常简单的方案,但它足以满足战列舰的需要

在概念上,或多或少:

while(Game.IsRunning)
{
    Input = GetInput();
    Game.Update(Input);
    Display(Game);
}
如果您实际上是在进行实时更新,而不是事件驱动的更新,那么您需要将自上次更新以来经过的时间以及玩家输入考虑在内。我会尽量简短,只限于你的提问