2013-10-24 42 views
1

我想製作一個骰子程序。所以當你點擊滾動時,它應該滾動兩個骰子並添加總和,這就是你滾動的數字。我需要一些幫助,這個窗體程序。這裏是一些代碼:骰子程序計算不正確?

private int totalRolls; 

private void btnRoll_Click(object sender, EventArgs e) 
{ 
    totalRolls += 1; 

    System.Random Int1 = new System.Random((int)System.DateTime.Now.Ticks); 
    System.Random Int2 = new System.Random((int)System.DateTime.Now.Ticks); 

    int randomInteger1 = Int1.Next(1, 7); 
    int randomInteger2 = Int2.Next(1, 7); 

    lblNumberRolled.Text = randomInteger1.ToString() + randomInteger2.ToString(); 

lblNumberRolled.Text代碼我不認爲是正確的。這是添加兩個骰子以獲得最終骰子總數的代碼。但是當我運行它時,它會顯示像30這樣的大數字和其他東西。它不是添加或什麼的。

最高的總和應爲12

+2

[隨機數發生器僅產生一個隨機數]的可能重複(http://stackoverflow.com/questions/767999/random-number-generator-only-generating-one-random-number) –

+6

側注意:'3.ToString()+ 0.ToString()'是'「30」'。 –

+1

注意事項2:請儘量提供可顯示問題的最少示例代碼。查看http://www.sscce.org獲取指導。 –

回答

4

更改您的代碼:

lblNumberRolled.Text = (randomInteger1 + randomInteger2).ToString(); 

說明:

randomInteger1.ToString() + randomInteger2.ToString() 

當randomInteger1是2,那麼你做它的一個字符串,當randominterger2爲1後爲「2」+ String後爲「1」。 當你+你「2」 +「1」 Concat的這些字符串,這就是21,而不是3

而且還有另外一個問題,您的代碼: 蜱對象類型的長,你把它轉換爲INT。所以你鬆散的信息。這導致你將大部分時間都用於你的兩個整數。這導致你會得到大部分時間相同的隨機整數。

把你的電話隨機之間的Thread.Sleep(20)將修復它:

System.Random Int1 = new System.Random((int)System.DateTime.Now.Ticks); 
Thread.Sleep(20); 
System.Random Int2 = new System.Random((int)System.DateTime.Now.Ticks); 
+0

感謝它的工作。 :)誰知道把括號放在錯誤的東西上可能完全搞砸了代碼哈哈。感謝大家! – Gunnar

+1

請解決「隨機性」部分以獲得完整答案。 –

+0

更新了我的答案。我希望這是你的意思? – Dannydust

2

這是因爲你使用字符串+。當你在字符串中使用'+'時,編譯器認爲它不是數學運算而是連接運算符。

請嘗試以下

而不是

lblNumberRolled.Text = randomInteger1.ToString() + randomInteger2.ToString(); 

嘗試

lblNumberRolled.Text = Convert.ToString(randomInteger1+randomInteger2); 
0

你可以這樣說:

Label lb = new Label(); 
Random random = new Random(); 
int ranNum1 = random.Next(1, 7); // random num 1-6 
int ranNum2 = random.Next(1, 7); // random num 1-6 
lb.Text = Convert.ToString(ranNum1 + ranNum2); 
Form.Controls.Add(lb); 

,這意味着你想要的東西,如:

Random random = new Random(); 
randomInteger1 = random.Next(1,7); 
randomInteger2 = random.Next(1,7); 
lblNumberRolled.Text = Convert.ToString(randomInteger1 +randomInteger2);