同时为游戏运行两个循环 - C.

时间:2015-05-05 15:36:52

标签: c loops simultaneous

我正在为我的编程课程在C中制作一个游戏,我必须在游戏中进行倒计时,但是我无法使其正常工作,因为如果有一个倒计时功能和延迟(1000),它适用于倒计时,但不适用于游戏,因为它会使每次移动等待1秒。

到目前为止,我的代码是

while(tempo > 0)
{
    tempo_na_tela(&tempo);
    contador_tempo(&tempo);
    if(kbhit())
    {
        mover_refem(getch(), p_refem, &refem.px, &refem.py, 
                    numero_inimigos_na_tela(n, in1));
    }
    mover_inimigo(n, p_terrorista, in1);
}

函数tempo_na_tela(..)将时间字符串放在屏幕上,contador_tempo(..)是倒计时,mover_refem(...)是移动游戏角色的函数,{{1}是一个在屏幕上随机移动敌人的功能。

我需要将mover_inimigo(..)tempo_na_tela函数放在一个循环中,该循环与运行移动函数的另一个循环同时运行。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您正在尝试XY problem我认为。

你不需要同时运行2个功能。你想要完成的是一个游戏循环,它在视频游戏中很常见,特别是早期的。

问问自己,你什么时候需要重新粉刷你的元素?答案可能是在更新了所有数据(时间,敌人位置,并记录了你的玩家的动作)后

所以,你不需要同时循环(即我建议的线程,即使它不是同时发生的,但这是另一个故事。)

相反,你可以坚持一个循环,但你必须以这种方式做某事:

while (game_not_ended())
{
   update_data();
   repaint_data();
}

我希望您花时间重新考虑您的代码和问题的范围。