如何允许游戏随时重启?

时间:2017-03-04 18:10:08

标签: c++ opengl

我有一个简单的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);
}

1 个答案:

答案 0 :(得分:1)

我建议回到绘图板,字面意思。首先进行设计并将循环移出main。产生一个线程来运行游戏并产生一个线程来响应键盘事件,通过某种形式的同步来防止竞争条件。定义一个名为GameReset的方法,通过停止游戏线程并重新实例化对象来实现你想要的东西,这应该初始化它们自己的状态。通过提供更多信息(例如,操作系统和环境,正在使用的开发库),您将获得更多帮助。我试图提供帮助。