我正在使用OpenGL(GLUT)和C ++编写游戏Battleship。
我知道如何处理图形内容(比如显示字段和预定义的船只), 但我应该把我的游戏代码放在哪里:
像放置船(在字段之间切换)之类的东西我不能在display()函数中做,但如果放置了一个船,它必须由display()函数绘制,对吗?
我不知道在哪里放置游戏逻辑。
答案 0 :(得分:2)
您正在寻找的是基本的经典game loop。实际上,你的游戏在一个巨大的循环中运行。在此循环中,您可以处理用户输入,对用户输入做出反应,运行AI以及响应更新视频/音频。当然,这是一个非常简单的看法,但它足以用于战舰。
概念上,或多或少:
while(Game.IsRunning)
{
Input = GetInput();
Game.Update(Input);
Display(Game);
}
如果你实际上是在做实时而不是事件驱动,那么你需要让你的更新考虑到自上次更新以来的时间以及玩家输入。我会保持这个简短,但仅限于你所要求的内容。
答案 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”后绘制船只,那么在keyboardDown
功能中,您可以将全局标志设置为1.然后,在显示功能中,您可以检查那面旗帜。如果它是1
,那么你将绘制你的船。
当然,由您决定如何放置/移动您的船只:)
有关更多信息,请查看documentation