0

我一直在想这个。我不知道事情怎么会同时发生。

我想知道如何在没有单独线程的情况下在 java 中同步。例如,在一个真正的视频游戏中,事情如何在没有单独线程的情况下同时发生?
一个人如何在游戏中同时移动两条肢体?
我怎么能在java中做到这一点?

4

2 回答 2

1

一般他们不会。视频游戏中的这些更新通常一次完成,然后在一个帧中一次渲染。所以有一个状态更新步骤,然后是一个渲染步骤。

在更新步骤中,例如,手臂中骨骼的位置将根据它们应该如何移动(可能是响应从键盘或鼠标接收到的输入)进行更新,然后再次渲染整个场景新职位。

没有线程,事情就不会(技术上)同时发生。通常,程序会等待来自某些东西(用户或网络,​​或者只是一个您设置为每 100 毫秒关闭一次的计时器)的输入,当程序的一部分在等待时,另一部分可能跑。

这些情况通常是事件驱动的——请查看观察者模式,了解如何处理这种情况。您将有一些东西等待输入,然后触发适当的响应事件,这些事件被“等待”该事件发生的任意数量的对象“监听”。

这通常会呈现同时发生的事情的外观,因为您尝试使在这些事件上运行的代码保持较小 - 它是如此之快以至于您无法区分。

但是,如果您真的希望事情同时运行,您只需要使用线程(或进入显卡编程 - 这很有趣:D)

于 2013-03-16T01:35:32.437 回答
0

标准的软件架构是一个游戏循环。基本上是这样的:

while the game is running
    for each object in the game
        check for interactions with other objects
        update the objects position
    draw the game state to a hidden surface
    copy the hidden surface to the screen
于 2013-03-16T01:36:21.263 回答