我正在設計一個模擬骰子游戲的程序。該代碼計算每輪獲得的總分數以及每輪獲勝的玩家。如何使用for循環來計數變量?
我想獲得的總體勝利和積分。我嘗試在主類中使用for循環,但我不確定如何在此問題中實現它。
第1輪:
播放機1 3 1 5分:9
播放器2 2 6 6分:14
優勝者是播放器2
第2輪:
玩家1 3 6 5分數:14
播放器2 2 3 2分:7
優勝者是播放器1
第3輪:
播放機1 3 3 6分:12
播放器2 5 4 6分:15
獲勝者是玩家2
。
總勝:播放器1 - > 1 /播放器2 - > 2個
總分:播放器1 - > 35 /播放器2 - > 36
主類
import java.util.Scanner;
public class Game {
// ------------------- FIELDS ------------------------
// Create instance of Scanner class
public static Scanner input = new Scanner(System.in);
// variables
public static ThreeDiceScorer thrdiesc;
public static int diceArray [];
// ------------------ METHODS ------------------------
public static void main(String[] args) {
int rounds; // input by user
int players; // input by user
System.out.print("Please input number of rounds (grater or equal than 0) --> ");
rounds = input.nextInt();
System.out.print("\n");
System.out.print("Please input number of players (grater or equal than 2) --> ");
players = input.nextInt();
System.out.print("\n");
for (int r = 0; r < rounds; r++) { // loop for number of rounds
int max = 0;
int max_p = 0;
System.out.println("Round " + (r+1) + ": ");
for (int p = 0; p < players; p++) { //loop for players
int diceArray[] = new int[3];
for (int i = 0; i < diceArray.length; i++) { // loop for dice Array (data of Array)
diceArray [i] = 1 + (int)(6 * Math.random());
}
// Create new ThreeDice and calculator instances
thrdiesc = new ThreeDiceScorer(diceArray [0], diceArray [1], diceArray [2]);
//Calculate
thrdiesc.calcTotalPoints();
thrdiesc.printResult(p, r);
if (thrdiesc.total > max) {
max = thrdiesc.total;
max_p = p;
}
}
System.out.println("Winner is player " + (max_p + 1) + "\n");
}
System.out.println("Total wins: ");
System.out.println("Total points: ");
}//end Main Method
} // end Class
計算類
public class ThreeDiceScorer {
public static int total;
public int die1;
public int die2;
public int die3;
public ThreeDiceScorer(int s1, int s2, int s3) {
die1 = s1;
die2 = s2;
die3 = s3;
}
public void calcTotalPoints() {
int sumOfDice = die1 + die2 + die3;
total= sumOfDice;
}
public void printResult(int p, int r) {
System.out.println("player " + (p + 1) + " " + die1 + " " + die2 + " " + die3 + " " + "points: " + total);
}
}
將這項工作超過兩個選手,作爲球員和輪數輸入用戶 – astrnm
@astrnm我想過太多,但我擔心這可能會使解決方案複雜化。不是直接插入播放器對象,他可以插入播放器對象列表,它仍然可以工作。無論如何,我想我會更新它。 – user3437460
謝謝你的幫助,我真的很感激。我一直在努力實現這個代碼一天,並且我越來越靠近你了。但是我對java很陌生,當你說_ ** 1時,我有點困惑。1,先執行一個玩家的骰子。 (可以用方法做) 2.調用上面實現的第二個玩家擲骰子的方法。 3.決定贏家** _我真的不知道該怎麼做。再一次你真的很有幫助,謝謝 – astrnm