對於一個學校任務,我們正在執行java中的yahtzee遊戲,但是我在製作直線算法時存在一些問題(小直徑和大直線,這意味着4/5連續數字代表小直和5/5大)。yahtzee中的直線算法
我已經作出一個算法,我認爲應該是工作,但在現實中卻總是拿出0,所以我要失去了一些東西:
private void straights(int category) {
Arrays.sort(dices);
int nonConsecCount = 0;
for(int currDice = 0; currDice < N_DICE - 2; currDice++) {
if(dices[currDice] != dices[currDice + 1] + 1) {
nonConsecCount++;
}
}
if(nonConsecCount == 0 && category == LARGE_STRAIGHT) {
score[currPlayer - 1][category - 1] = 40;
display.updateScorecard(category, currPlayer, 40);
} else if(nonConsecCount <= 1 && category == SMALL_STRAIGHT) {
score[currPlayer - 1][category - 1] = 30;
display.updateScorecard(category, currPlayer, 30);
} else {
score[currPlayer - 1][category - 1] = 0;
display.updateScorecard(category, currPlayer, 0);
}
}
N_DICE
等於5
我的理論這個算法背後是;每當你在沒有連續數字的(排序)排列數組中找到一個數字作爲下一個數字時,給非連續數加1,最後在向玩家發出分數時檢查這個計數器。
任何幫助,我們將不勝感激!
'sort'是排序按*升序排列。 – Marco13
是的,那麼爲什麼陣列的下一個元素不應該被認爲是連續的呢? – Perdite
問題爲什麼你的for循環中有N_DICE - 2作爲條件?我敢打賭,應該是N_DICE - 1 – Raf