2011-08-17 44 views
0

我在c中创建了一个pacman,目前我为每个幽灵使用了一个单独的线程,每个幽灵代表一个'#',但是当我运行它时,所有的屏幕都会充满幽灵,而不是所有的鬼魂都会移动一两个。在c中执行pacman,幽灵运动

im使用这种逻辑

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

您能否提供给我一个关于如何实现鬼魂运动的例子,或者我的做法是否正确?

谢谢

+0

这是一个任务或东西?这似乎是一个奇怪的地方使用线程... –

+0

是的它是,这是一个期末考试 – gustavo

+0

如果两个鬼占据相同的位置? –

回答

3

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

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

2

试图从多个线程同时更新屏幕需要在屏幕更新代码互斥。