2014-03-30 47 views
0

我試圖用C#XNA創建一個小行星遊戲。 然而,當加載程序時,它只加載一個小行星而不是我認爲我在代碼中指定的5個小​​行星。試圖在屏幕上加載多個小行星

public void LoadContent(ContentManager Content) 
    { 
     // Creating Random Origin Coordinates For Asteroids 
     randX = random.Next(500, 1180); 
     randY = random.Next(500, 984); 

     // If There Are Less Than 5 Asteroids On The Screen, Create More Until 5 Are Present 
     if (asteroidsList.Count() < 5) 
     { 
      asteroidsList.Add(new Asteroids(Content.Load<Texture2D>("asteroid big"), new Vector2(randX, randY))); 
     } 
    } 

下面這段代碼中,我認爲,即時消息說,如果有在屏幕上不到5個小行星,增加屏幕的其他小行星。 如果這不是代碼的意思,一個解釋將不勝感激 乾杯。

回答

2

創建該小行星

asteroidsList.Add(new Asteroids(Content.Load<Texture2D>("asteroid big"), new Vector2(randX, randY))); 

僅執行一次的線。

使用像這樣的循環:

while (asteroidsList.Count() < 5) 
{ 
    randX = random.Next(500, 1180); 
    randY = random.Next(500, 984); 
    asteroidsList.Add(new Asteroids(Content.Load<Texture2D>("asteroid big"), new Vector2(randX, randY))); 
} 

編輯:更新的while循環例如隨機定位每個小行星的。

+0

謝謝你。認爲它可能是這樣的,但是當我嘗試過之前,我有各種各樣的錯誤,但現在起作用。乾杯 – user3158314

+0

沒問題,很高興能夠幫助你。一些免費的建議:你可能想要避免硬編碼小行星的數量和隨機使用的邊界位置。定義一個常量。例如。 'private const int MinAsteroids = 5'並使用它:'while(asteroidsList.Count() ssnielsen

+1

如果您將小行星的'Texture2D'賦值給循環外部,它可能會更有效率,否則它會加載每次都從磁盤讀取紋理。這並不重要,但是當你有100個小行星時,它會更快運行。 – joppiesaus