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

标签 c loops simultaneous

我正在为我的编程课用 C 语言制作一个游戏,我必须在游戏上放置一个时间倒计时,但我不能让它正常工作,因为如果放置一个倒计时函数和一个延迟(1000 ), 它适用于倒计时,但不适用于游戏,因为它让每一步都等待 1s。

到目前为止我的代码是

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(. ..)是移动游戏角色的函数,mover_inimigo(..)是随机移动屏幕中敌人的函数。

我需要将 tempo_na_telacontador_tempo 函数放在一个循环中,与另一个循环同时运行,运行移动函数。

我该怎么做?

最佳答案

您正在试验 XY problem我想。

您不需要同时运行这两个函数。您要实现的是一个游戏循环,这在视频游戏中很常见,尤其是早期的游戏。

问问自己,什么时候需要重新绘制元素?答案可能是在更新了所有数据(时间、敌人位置和记录了玩家的移动)之后

因此,您不需要同时循环(即我建议的线程,即使它不是真正的同时循环,但那是另一回事了。)

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

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

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

关于c - 为一个游戏同时运行两个循环 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30057370/

相关文章:

java - 我怎样才能用 while 循环重写这个 java 方法?

c - 在sendmsg和recvmsg(unix套接字)中定义msghdr长度

计算CUDA中两个三角形之间的角度

Jquery 带有延迟的排队动画序列;需要重复

java - 打破网格线

multithreading - 同时多线程是否利用交错/临时多线程?

php - 同时在 Windows 和 Linux 机器上开发

Python 同时变量递增

c - atmega8a 熔断外部晶振 16MHz

c - 如何在c中的数组中使用float