0

我正在用 c 创建一个 pacman,目前我正在为每个幽灵使用一个线程,每个幽灵代表一个“#”,但是当我运行它时,所有的屏幕都充满了幽灵,并不是所有的幽灵都只移动一两个。

我使用这个逻辑

创建一个包含 5 个 ghost 的结构,每个 ghost 包含 x,y 位置。创建一个由 5 个线程组成的数组,每个线程实现一个重影,每个重影在屏幕上随机移动,对于它移动的每个空间,我在旧位置打印一个空间,然后在新位置打印一个“#”。

您能否提供一个如何实现幽灵运动的示例,或者我正在做的实现是正确的方法?

谢谢

4

2 回答 2

3

每个代理一个线程并不是构建游戏的一种非常常见的方法。对于大型场景,它很快变得不可行。传统的解决方案是定义一个表示幽灵的状态机,使用某种“提前”方法,使其有机会将其内部状态调整到下一个时间量子。创建此状态机的多个实例,并在游戏循环的每次迭代中调用它们的所有“高级”方法。所有这些都可以在一个线程中发生。

它比这更多,但它会让你开始。

于 2011-08-17T22:38:06.700 回答
2

尝试从多个线程同时更新屏幕需要屏幕更新代码周围的互斥锁。

于 2011-08-17T22:35:29.053 回答