2011-08-17 80 views
0

我在c中創建了一個pacman,目前我爲每個幽靈使用了一個單獨的線程,每個幽靈代表一個'#',但是當我運行它時,所有的屏幕都會充滿幽靈,而不是所有的鬼魂都會移動一兩個。在c中執行pacman,幽靈運動

im使用這種邏輯

創建5鬼的一個結構中,每個鬼魂包含x,y位置。 創建一個5個線程的數組,每個線程實現一個ghost 每個ghost在屏幕上隨機移動,對於它移動的每個空間,我在舊位置打印 空間,然後在新位置打印一個'#'。

您能否提供給我一個關於如何實現鬼魂運動的例子,或者我的做法是否正確?

謝謝

+0

這是一個任務或東西?這似乎是一個奇怪的地方使用線程... –

+0

是的它是,這是一個期末考試 – gustavo

+0

如果兩個鬼佔據相同的位置? –

回答

3

每個代理的一個線程並不是構建遊戲的常用方法。大型場景很快變得不可行。傳統的解決方案是定義一個代表虛幻的狀態機,用某種「提前」方法,使其有機會將其內部狀態調整到下一個時間量。創建該狀態機的多個實例,並在遊戲循環的每次迭代中調用其所有「advance」方法。所有這些都可以在單個線程中發生。

還有比這更多,但它會讓你開始。

2

試圖從多個線程同時更新屏幕需要在屏幕更新代碼互斥。