2012-04-03 30 views
0

我一直在通過製作太空侵略者克隆來鍛鍊我的技能。兩天前我問了一個問題,這個問題已經解決,並且我取得了很多進展。我已經設法讓所有的工作,collisons,聲音,gamestate管理和運動等問題與我的太空侵略者克隆

一切工作正常,除了入侵者只射擊從我的數組中的索引0(最左入侵者)在每一行。此代碼位於game1.cs中從344行開始的區域中。

入侵者移動也很好。他們擊中屏幕邊緣並向下移動像素,然後沿相反的方向繼續。但是,如果我摧毀最外層的入侵者,遊戲仍然會識別入侵者。

因此,遊戲突然告訴一個入侵者在屏幕中心向下,並在相反的方向。它使遊戲變得更有活力,但這不是我想要的效果。針對移動的代碼是在同一個地方,從線344 game1.cs

源可以在這裏下載出發:http://db.tt/1AodUfdS

+0

請將相關代碼粘貼到您的問題中,以便將來不會遭受鏈接腐爛(或者阻止企業防火牆阻止更短時間的服務和上傳服務)。 – user7116 2012-04-03 19:41:38

+0

我會牢記這一點。這是我第二次在這裏發佈,我會花更多的精力和時間來提供我的代碼和更少的鏈接。 – user1308880 2012-04-04 08:16:48

回答

1

爲什麼在大多數情況下,第一入侵者射擊的原因是,創建一個新的每次隨機對象。這將在系統時間初始化。所以在一個循環中,大多數隨機數是相等的(因爲系統時間幾乎相等)。相反,在遊戲開始時創建一個Random對象。

對於第二個問題:您總是使用第一個(索引0)和最後一個(索引10)入侵者來確定行是否應該改變方向。相反,使用可見的第一個/最後一個入侵者:

var LeftMost = Type1Invaders.Where(i => i.invaderVis).FirstOrDefault(); 
var RightMost = Type1Invaders.Where(i => i.invaderVis).LastOrDefault(); 

有了這些,您可以繼續進行測試。如果結果爲空,則該行爲空。

+0

非常有幫助。我看到我在做這些邏輯錯誤。這一切都有幫助。 :) 謝謝。 – user1308880 2012-04-04 08:16:15