我有一个简单的c ++和OpenGL游戏,其中玩家可以射击目标。我希望允许玩家随时按下“重新启动游戏”,这将重置目标,玩家位置等。我的游戏主要存在于主要功能中,首先设置物理和网格数据,然后我有一个do-while循环,每帧绘制目标。
当用户点击Esc(在do-while循环中)时,我目前使用GLFW进行捕获,这样我就可以关闭窗口,但是我将如何重新开始游戏呢?
我是否必须手动重置游戏的变量,玩家位置,重绘目标等,或者有没有办法在do-while游戏循环之前简单地跳转并重新开始?
谢谢,如果这是微不足道,请道歉。
编辑: 我现在有这样的事情:
main() {
initialise window;
get mesh vertices;
set textures;
initialise Bullet physics;
do {
ray picking;
render targets and walls;
} while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS &&
glfwWindowShouldClose(window) == 0);
}
答案 0 :(得分:1)
我建议回到绘图板,字面意思。首先进行设计并将循环移出main。产生一个线程来运行游戏并产生一个线程来响应键盘事件,通过某种形式的同步来防止竞争条件。定义一个名为GameReset的方法,通过停止游戏线程并重新实例化对象来实现你想要的东西,这应该初始化它们自己的状态。通过提供更多信息(例如,操作系统和环境,正在使用的开发库),您将获得更多帮助。我试图提供帮助。