Balut骰子游戏Java

时间:2019-07-05 14:29:37

标签: java arrays dice

我正在为我的大学分配额外的游戏,我必须创建一个称为“ balut”的骰子游戏。我在将值分配给数组以及将骰子值存储在其中时遇到一些问题数组。

我在课程11的第9周中已经介绍了数组和方法,但这对我来说是个新概念。目标如下:

Balut = all five dice have the same number. 
Straight =  a total of 15 Or 20.
Sixes = 1 or more sixes.
Fives = 1 or more fives.
Fours = 1 or more fours.
10 rounds. 
Total scoring of categories. 
total of scores. 
If no category is met "none" is printed.

我已经花了至少14个小时了,原本打算是6到8个小时的课程,但我仍在努力,质疑我是否对这门课程有了解,并希望这里有人可以解释我的意思。我做错了,甚至我应该学习什么。

我尝试创建单个数组并将所有骰子值分配给该数组,但遇到了比较值的问题,我不知道如何做骰子1 ==骰子2 ==骰子3等

然后我尝试为每个骰子制作5个数组1,并使用compare array方法,同样,我似乎只能让它比较2个数组或变量,就像我一样,我无法让它比较所有5个数组我正在尝试。

public static void main(String[] args) {

    int[] Dicearraytotal1 = new int[10];
    int[] Dicearraytotal2 = new int[10];
    int[] Dicearraytotal3 = new int[10];
    int[] Dicearraytotal4 = new int[10];
    int[] Dicearraytotal5 = new int[10];
    for (int i = 0; i < Dicearraytotal1.length; i++) {
        Integer dice1 = (int) (Math.random() * 6 + 1);
        Integer dice1val = dice1;
        Integer dice2 = (int) (Math.random() * 6 + 1);
        Integer dice2val = dice2;
        Integer dice3 = (int) (Math.random() * 6 + 1);
        Integer dice3val = dice3;
        Integer dice4 = (int) (Math.random() * 6 + 1);
        Integer dice4val = dice4;
        Integer dice5 = (int) (Math.random() * 6 + 1);
        Integer dice5val = dice5;
        Dicearraytotal1[i] = (dice1val);
        Dicearraytotal2[i] = (dice2val);
        Dicearraytotal3[i] = (dice3val);
        Dicearraytotal4[i] = (dice4val);
        Dicearraytotal5[i] = (dice5val);
    Integer total = (dice1val+dice2val+dice3val+dice4val+dice5val);

        System.out.println("Total Of Numbers Generated1: " + Arrays.toString(Dicearraytotal1));
        System.out.println("Total Of Numbers Generated2: " + Arrays.toString(Dicearraytotal2));
        System.out.println("Total Of Numbers Generated3: " + Arrays.toString(Dicearraytotal3));
        System.out.println("Total Of Numbers Generated4: " + Arrays.toString(Dicearraytotal4));
        System.out.println("Total Of Numbers Generated5: " + Arrays.toString(Dicearraytotal5));
        System.out.println("Total: " + total);

2 个答案:

答案 0 :(得分:0)

您缺少结束for循环的结尾括号,因此我假设您正在尝试在循环的每次迭代中打印数组。我已经对您的代码进行了很多整理,为了更好地组织代码,您应该注意一些更改,以便于理解。

public static void main(String[] args) {

    int[] diceArrayTotal1 = new int[10];
    int[] diceArrayTotal2 = new int[10];
    int[] diceArrayTotal3 = new int[10];
    int[] diceArrayTotal4 = new int[10];
    int[] diceArrayTotal5 = new int[10];
    int[] totals = new int[10];

    for (int i = 0; i < diceArrayTotal1.length; i++) {
        diceArrayTotal1[i] = (int) (Math.random() * 6 + 1);
        diceArrayTotal2[i] = (int) (Math.random() * 6 + 1);
        diceArrayTotal3[i] = (int) (Math.random() * 6 + 1);
        diceArrayTotal4[i] = (int) (Math.random() * 6 + 1);
        diceArrayTotal5[i] = (int) (Math.random() * 6 + 1);
        totals[i] = (diceArrayTotal1[i] + diceArrayTotal2[i] + diceArrayTotal3[i] + diceArrayTotal4[i] + diceArrayTotal5[i]);
    }
        System.out.println("Total Of Numbers Generated1: " + Arrays.toString(diceArrayTotal1));
        System.out.println("Total Of Numbers Generated2: " + Arrays.toString(diceArrayTotal2));
        System.out.println("Total Of Numbers Generated3: " + Arrays.toString(diceArrayTotal3));
        System.out.println("Total Of Numbers Generated4: " + Arrays.toString(diceArrayTotal4));
        System.out.println("Total Of Numbers Generated5: " + Arrays.toString(diceArrayTotal5));
        System.out.println("Totals: " + Arrays.toString(totals));
}   

此外,我添加了一个totals数组,该数组保留每个索引的总数,而不是像您所做的那样在每个循环中都打印它。您没有添加比较代码,因此我无法为您提供帮助。让我知道您是否需要任何更改的说明。我运行了这段代码,它成功生成了所需的数组和总数。

答案 1 :(得分:0)

public static void main(String[] args) {
    int[] results = new int[6]; // This array will hold the number of time each dice was rolled, so for example results[0] is how many 1 s you have results[5] is how many 6 you have
    Random random = new Random();
    for (int i = 0; i < 5; i++) {   // roll the dice 5 times
        results[random.nextInt(6)]++;   //increase the counter of the appropriate value
    }

    boolean balut = false;
    for (int i = 0; i < 6; i++) {
        System.out.println("Number of " + (i+1) + ": " + results[i]);
        if (results[i] == 5) {
            balut = true;
        }
    }

    if (balut) {
        System.out.println("Balut!");
    }
}

在这里,我只对Balut进行了检查,但是要点是我如何计算骰子结果。希望对您有所帮助。