我正在为我的编程课程在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
函数放在一个循环中,该循环与运行移动函数的另一个循环同时运行。
我该怎么做?
答案 0 :(得分:1)
您正在尝试XY problem我认为。
你不需要同时运行2个功能。你想要完成的是一个游戏循环,它在视频游戏中很常见,特别是早期的。
问问自己,你什么时候需要重新粉刷你的元素?答案可能是在更新了所有数据(时间,敌人位置,并记录了你的玩家的动作)后
所以,你不需要同时循环(即我建议的线程,即使它不是同时发生的,但这是另一个故事。)
相反,你可以坚持一个循环,但你必须以这种方式做某事:
while (game_not_ended())
{
update_data();
repaint_data();
}
我希望您花时间重新考虑您的代码和问题的范围。