2017-10-17 33 views
1

我非常喜歡編程(C#),我有一個學校作業是編寫經典遊戲戰艦的簡化版本。我不能讓我的數組得到隨機布爾人沒有他們都得到相同?

我都在數組看起來像這樣的船,和一類(船):

public Ship(Texture2D shipsheet, Rectangle hitbox, Rectangle sourceRectangle, bool rotated) 

我覺得問題是,for循環是不承認的船舶需要不同的布爾,就像它只讀一次那條線?但是,它不應該,對吧?因爲他們有不同的hitbox和sourceRectangles?所以他們不應該有不同的布爾呢?

ships = new Ship[5]; 
Rectangle shipHitbox; 


     for (int i = 0; i < ships.GetLength(0); i++) 
     { 
      int x = Rand(0, 9) * 60; 
      int y = Rand(0, 9) * 60; 

      shipHitbox = new Rectangle(x, y, 60 + (60 * i), 60); 
      shipSourceRectangle = new Rectangle(0, (60 * i), 60 + (60 * i), 60); 
      rotated = random.Next(2) == 0 ? false : true; 


      ships[i] = new Ship(shipsheet, shipHitbox, shipSourceRectangle, rotated); 
     } 

這是我第一次嘗試做隨機布爾的工作,我只是不明白爲什麼所有的船隻得到了布爾旋轉是假的或旋轉是真實的。 我覺得我已經嘗試了一切,有什麼幫助?

我不知道它是否清楚,但所有船隻旋轉一次,或他們不。這是隨機的,但不是分配給不同船隻的不同bools。 (如果我有什麼意義?)

蘭德方法與此無關。這是我的教授希望我們使用的方法(瞭解方法)。 我有這個,而不是現在:(有沒有跟我的問題做)

   int x = random.Next(0, 9) * 60; 
       int y = random.Next(0, 9) * 60; 
+0

當你調試它 - 你應該看到它去錯了 – BugFinder

+0

是什麼RAND()嗎?似乎不是本機C#功能。 – ADyson

+0

我猜你太遲了「隨機」實例。將它作爲一個字段存儲在你的班級中。 –

回答

0

您可以使用「random.next」法空(得到任何數字),然後使用模運算符(發現劃分後的剩餘部分)。你不需要三元運算符。

var random = new System.Random(); 
for (int i = 0; i < 100; i++){ 
var number = random.Next(); 
bool rotated = number % 2 == 0; 
System.Console.WriteLine("number: " + number + " boolean:" + rotated); 
}