2016-12-12 167 views
1

你好,我是新來的Java,這是我必須做的: 我必須做出點遊戲,我不張貼整個事情,因爲它是不相關的。有兩個方面,一個有6個邊,另一個有9個邊。這是我有一個問題:挑戰與條件

如果您在單輪滾雙6的至少5倍,將出現以下情況:

  • 骰子旋轉的次隨機數(間10個30倍)

  • 所有這些卷被添加到銀行骰子的累積產

我並不真的在這裏,我理解的措辭除了這部分外,已經完成了整個程序。這是我做了什麼:

if (ninedice == 6 && sixdice == 6 >= 5){ 
    ninedice = (int) Math.ceil(Math.random() * (30-10)+ 10); 
    sixdice = (int) Math.ceil(Math.random() * (30-10)+10); 
    accountpoints = ninedice+sixdice; 
} 

這顯然是不正確的,我沒有得到想要的結果,因爲它只是不滾死的時候一個隨機數,並在帳戶或者不加分。任何幫助非常感謝,並感謝您的提前!

+0

你有沒有了解循環呢? –

+0

一點點是的,但不是先進的循環 –

+0

當它要求所有卷的產品,是否包括雙六點? –

回答

1

那麼你是在正確的軌道上,但還沒有應用。 if語句的條件應該是if (ninedice == 6 && sixdice == 6)。不需要>= 5部分。這個if語句表示每個die的第一個roll是否在6中重用。但是,if語句體有一些邏輯問題。 這個代碼體,

ninedice = (int) Math.ceil(Math.random() * (30-10)+ 10); 
sixdice = (int) Math.ceil(Math.random() * (30-10)+10); 

生成的時間的兩個管芯將要再次捲起的數目。然而,ninedicesixdice代表第一卷,所以不覆蓋它們。取而代之的是,

int ninedicerolls = (int) Math.ceil(Math.random() * (30-10)+ 10); 
int sixdicerolls = (int) Math.ceil(Math.random() * (30-10)+10); 

現在保持產品變量來跟蹤每卷爲每死,

int ninediceproduct = ninedice; 
int sixdiceproduct = sixdice; 
while(ninediceproduct > 0){ 
    ninediceproduct *= (int) Math.ceil(Math.random() * (9-1)+ 1); 
    ninediceproduct--; 
} 
while(sixdiceproduct > 0){ 
    sixdiceproduct *= (int) Math.ceil(Math.random() * (6-1)+ 1); 
    sixdiceproduct--; 
} 

然後,產品乘在一起,

int cumulative = sixdiceproduct * ninediceproduct; 
1

你想要更多的東西是這樣的:

rollDice(); 

if (nineDice == 6 && sixDice == 6) 
{ 
    myDiceCondition++; 
} 

if (myDiceCondition >= 5) 
{ 
    // get random number between 10 and 30 
    // loop for that amount 
    // roll both dice 
    // add to account balance? 
} 
+0

沒問題。快樂的編碼! – Eric

1

你的if語句評價是:(真/假& &真/假> = 5)。你需要將5與一個int進行比較。你是否跟蹤6次翻倍的次數?像這樣的東西應該工作:

public static void diceExample(){ 

    int ninedice, sixdice, accountpoints, rolledDoubleSix; 

    if (ninedice == 6 && sixdice == 6) { 
     rolledDoubleSix++; 
    } 

    if (rolledDoubleSix == 5){ 
     ninedice=(int)Math.ceil(Math.random() * (30-10)+ 10); 
     sixdice=(int)Math.ceil(Math.random() * (30-10)+10); 
     accountpoints = ninedice+sixdice; 

    } 
}