私は配列が5つの乱数で満たされ、プレイヤーが特定のダイスを再びロールすることを選ぶことができる単純なヤッツェゲームを作成しようとしています。しかし、配列の特定の数字を新しい乱数で置き換えて返す方法を記述する方法を理解することはできません。どのようにこれにアプローチするための提案?yertzeeゲームのリールダイス
あなたは機能を作ることができ、このようimport java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class YatzyGame {
private final Integer NBROFDICE = 5;
private final Integer DICEMAXVALUE = 6;
Random rnd = new Random();
Scanner keyboard = new Scanner(System.in);
public void startGame() {
int[] dice = new int[NBROFDICE];
rollDice(dice);
printDice(dice);
System.out.println("Do you want to reroll any dices? " + "Y/N");
String answer = keyboard.nextLine();
if (answer.equalsIgnoreCase("y")) {
rerollDice(dice);
} else if (answer.equalsIgnoreCase("n")) {
calculateSum(dice);
} else {
System.out.println("Wrong command!");
}
}
public int[] rollDice(int[] dice) {
for (int i = 0; i < dice.length; i++) {
dice[i] = rnd.nextInt(DICEMAXVALUE) + 1;
}
return dice;
}
public int[] rerollDice(int[] dice) {
System.out.println("What dices do you want to reroll? Dices index are 0-4");
int diceToReroll = keyboard.nextInt();
// Replace the numbers at the index the user specifies with new random numbers and return the array.
}
public void printDice(int[] dices) {
System.out.println("Your dices show: " + Arrays.toString(dices));
}
public void calculateSum(int[] dices) {
int sum = 0;
for (int i : dices) {
sum += i;
}
if (sum == 30) {
System.out.println("YAHTZEE! Your total score is 50! Congratulations!");
} else
System.out.println("Your total score is: " + sum);
}
public static void main(String[] args) {
new YatzyGame().startGame();
}
}
文字列内の文字をループします。数字である各文字について、その整数値(0〜4)を見つけて、そのダイをリロールします。 – Thomas
あなたは 'rollDice'メソッドをもう少し柔軟にすることができ、1つのダイスだけをロールさせることができます。次に、rollAllDices(int [] dices)から呼び出すことで全体のロールを作り、 'rerollDice(int index、int [] dices)'から1つのサイコロだけをロールすることができます。 –