有 2 个线程在控制台上绘制 2 辆汽车并模仿它们的运动。
机器 -Enemy- 从上方降下,玩家必须绕过它。对象渲染是通过lock.
问题是,当我需要让玩家的汽车“减速”时,他从左到右的运动也会减速(按计划,它不应该)。速度被实施为时间控制Thread.Sleep(int delta)。
请提出解决此问题的可能方法。
有 2 个线程在控制台上绘制 2 辆汽车并模仿它们的运动。
机器 -Enemy- 从上方降下,玩家必须绕过它。对象渲染是通过lock.
问题是,当我需要让玩家的汽车“减速”时,他从左到右的运动也会减速(按计划,它不应该)。速度被实施为时间控制Thread.Sleep(int delta)。
请提出解决此问题的可能方法。
我不认为在不同的线程上运行不同对象的逻辑是个好主意,并依靠调度器来加速和减速。毕竟,不能保证将控制权转移到另一个线程。(好吧,这个解决方案显然不适用于对象很多的情况,但这已经是一个技术细节了。)
我会做不同的事情:我会引入一个协调器类,它会依次要求对象在一个循环中进行“移动”,并处理必要的延迟(例如,通过轮询对象的速度)。通过这种设计,一切都在一个线程中运行,协调器扮演着调度器的角色。