在c,鬼运动中实施pacman

时间:2011-08-17 22:33:50

标签: c multithreading variable-assignment pacman

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

我正在使用这个逻辑

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

请你举一个如何实现幽灵运动的例子, 或者我正在做的实施是正确的方法吗?

谢谢

2 个答案:

答案 0 :(得分:3)

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

除此之外还有更多内容,但它会让你开始。

答案 1 :(得分:2)

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