当前位置: 首页 > 知识库问答 >
问题:

Java骰子游戏项目:将骰子的值返回主方法

廖诚
2023-03-14

我正在做一个骰子游戏项目。在游戏中,用户掷出四个骰子,骰子值的总和需要加在一起。roll()方法用于实现这一点。编写滚动方法的说明如下:

“理想情况下,roll()方法应该接受一个参数,说明您想要掷多少个骰子。该方法应该是一个值返回方法,将骰子的值和总和html" target="_blank">返回给main()。你可以一次掷出所有的骰子,或者一次掷出一个骰子。”

我决定一次掷出四个骰子。在我的老师向我展示的dice程序示例中,有不同的方法返回值,而不仅仅是一个。我的每个方法都返回一个值。然而,当我试图编译它时,我得到了一些错误,每次我返回dieValue时都显示“找不到符号”;虽然我不确定为什么,因为我已经检查过了,在标题中添加了" int ",在程序的其他地方多次声明了变量,但仍然得到错误。我也试着像我老师建议的那样把它编译成更少的方法,但是当我试图弄清楚如何做一个论点,陈述你想要掷多少个骰子时,我卡住了。所以我坚持我目前的方法,但我仍然不确定哪里出了问题。

这是我处理此问题的代码部分:

        // Roll the dice (redirect to the roll() methods) and declare variables to hold the values that have returned. 
        int dieValue1 = roll_1();
        int dieValue2 = roll_2();
        int dieValue3 = roll_3();
        int dieValue4 = roll_4();

        // Declare a variable for the sum of the dice values (and add the dice values to get that sum).
        int diceSum = dieValue1 + dieValue2 + dieValue3 + dieValue4;

        // Print the sum of the rolled dice. 
        System.out.println("Your sum of the dice values: ");
        System.out.println(diceSum);

        // Determine if the user won or not. 
        if (diceSum == 6 ||diceSum == 12 ||diceSum == 13 ||diceSum == 17 || diceSum == 19 ||diceSum == 23)
            System.out.println("You win!");
            System.exit(0);

    }
    // roll() method header that rolls the die (creates a Die object and gets a random value for the object).
        public void roll()
        {
            // Create a Random class object. 
            Random dieRoll = new Random();

            // Get a random integer value for the dice between 1 and 6.
            int dieValue1 = dieRoll.nextInt(6) + 1;
            int dieValue2 = dieRoll.nextInt(6) + 1;
            int dieValue3 = dieRoll.nextInt(6) + 1;
            int dieValue4 = dieRoll.nextInt(6) + 1;
        }

    // method that returns the value of die1.
        public static roll_1()
        {
            return dieValue1;
        }
    // method that returns the value of die2.
        public static int roll_2()
        {
            return dieValue2;
        }
    // method that returns the value of die3.
        public int roll_3()
        {
            return static dieValue3;
        }
    // method that returns the value of die4.
        public static int roll_4()
        {
            return dieValue4;
        }
    // method that returns the sum of the values of die1, die2, die3, and die4. 
        public static int sum()
        {
            return dieValue1 + dieValue2 + dieValue3 + dieValue4;
        }
}

感谢所有决定帮忙的人。

共有3个答案

督翰学
2023-03-14

我建议您的应用程序使用以下方法。

package com.example.demo;

public class myclass {

    int sum = 0;

    public void play(int numberofdices, int numberofeyes) {
        for (int i = 1; i <= numberofdices; i++) {
            sum = sum + (int) ((Math.random()) * numberofeyes + 1);
        }

        // Print the sum of the rolled dice.
        System.out.println("Your sum of the dice values: ");
        System.out.println(sum);

        // Determine if the user won or not.
        if (sum == 6 || sum == 12 || sum == 13 || sum == 17 || sum == 19 || sum == 23) {
            System.out.println("You win!");
        } else {
            System.out.println("You loose!");
        }
    }

}
申屠洛华
2023-03-14

这里有一些有用的东西。研究一下。理解它。请

package com.inlet.ifserver;

import java.util.Random;

public class DieRoller {

    private Random dieRoll;

    private int dieValue1;
    private int dieValue2;
    private int dieValue3;
    private int dieValue4;

    // roll() method header that rolls the die (creates a Die object and gets a random value for the object).
    public DieRoller()
    {
        Random dieRoll = new Random();
        dieRoll.setSeed(System.currentTimeMillis());
    }

    public void roll() {

        // Get a random integer value for the dice between 1 and 6.
        dieValue1 = dieRoll.nextInt(6) + 1;
        dieValue2 = dieRoll.nextInt(6) + 1;
        dieValue3 = dieRoll.nextInt(6) + 1;
        dieValue4 = dieRoll.nextInt(6) + 1;

    }
    // method that returns the value of die1.
    public int roll_1()
    {
        return dieValue1;
    }
    // method that returns the value of die2.
    public int roll_2()
    {
        return dieValue2;
    }
    // method that returns the value of die3.
    public int roll_3()
    {
        return dieValue3;
    }
    // method that returns the value of die4.
    public int roll_4()
    {
        return dieValue4;
    }
    // method that returns the sum of the values of die1, die2, die3, and die4.
    public int sum()
    {
        return dieValue1 + dieValue2 + dieValue3 + dieValue4;
    }

    public static void main (String [] args) {

        DieRoller roller = new DieRoller();
        roller.roll();

        // Roll the dice (redirect to the roll() methods) and declare variables to hold the values that have returned.
        int dieValue1 = roller.roll_1();
        int dieValue2 = roller.roll_2();
        int dieValue3 = roller.roll_3();
        int dieValue4 = roller.roll_4();

        // Declare a variable for the sum of the dice values (and add the dice values to get that sum).
        int diceSum = roller.sum();

        // Print the sum of the rolled dice.
        System.out.println("Your sum of the dice values: ");
        System.out.println(diceSum);

        // Determine if the user won or not.
        if (diceSum == 6 ||diceSum == 12 ||diceSum == 13 ||diceSum == 17 || diceSum == 19 ||diceSum == 23)
            System.out.println("You win!");
    }
}

你能给我解释一下这里发生的一切吗?也许你可以把这个变成通用的。不是4个骰子,而是N个骰子。除了单个骰子变量,您还可以拥有一个骰子值数组“private int[] dieValues”。将骰子的数量作为参数传递给DieRoller的构造函数。

贝德辉
2023-03-14

问题之所以存在,是因为您在roll方法中声明了 dieValues,因此它们的作用域仅在此方法中。然后你返回实际上不存在的骰值。您需要将 dieValue 创建为类变量,而不是在 roll 方法中使用“this”关键字来设置类变量,而不是“int”类型。请记住将它们声明为静态,因为您的“滚动”方法是静态的

import java.util.Random;

public class Roll {
    static int dieValue1;
    static int dieValue2;
    static int dieValue3;
    static int dieValue4;

    public static void main(String[] args) {
        roll();
        int dieValue1 = roll_1();
        int dieValue2 = roll_2();
        int dieValue3 = roll_3();
        int dieValue4 = roll_4();

        // Declare a variable for the sum of the dice values (and add the dice values to
        // get that sum).
        int diceSum = dieValue1 + dieValue2 + dieValue3 + dieValue4;

        // Print the sum of the rolled dice.
        System.out.println("Your sum of the dice values: ");
        System.out.println(diceSum);

        // Determine if the user won or not.
        if (diceSum == 6 || diceSum == 12 || diceSum == 13 || diceSum == 17 || diceSum == 19 || diceSum == 23)
            System.out.println("You win!");
        System.exit(0);

    }

// roll() method header that rolls the die (creates a Die object and gets a random value for the object).
    public static void roll() {
        // Create a Random class object.
        Random dieRoll = new Random();

        // Get a random integer value for the dice between 1 and 6.
        dieValue1 = dieRoll.nextInt(6) + 1;
        dieValue2 = dieRoll.nextInt(6) + 1;
        dieValue3 = dieRoll.nextInt(6) + 1;
        dieValue4 = dieRoll.nextInt(6) + 1;
    }

// method that returns the value of die1.
    public static int roll_1()
    {
        return dieValue1;
    }

// method that returns the value of die2.
    public static int roll_2() {
        return dieValue2;
    }

// method that returns the value of die3.
    public static int roll_3()
    {
        return dieValue3;
    }

// method that returns the value of die4.
    public static int roll_4() {
        return dieValue4;
    }

// method that returns the sum of the values of die1, die2, die3, and die4. 
    public static int sum() {
        return dieValue1 + dieValue2 + dieValue3 + dieValue4;
    }
}

这不是最好的解决方案,但我试着用最少的更改来运行您的程序。我建议不要使用静力学,因为它在这里没有意义。

以下是我对您问题的解决方案:

public class Roll {
    public static void main(String[] args) {

        int diceSum = roll();

        // Print the sum of the rolled dice.
        System.out.println("Your sum of the dice values: ");
        System.out.println(diceSum);

        // Determine if the user won or not.
        if (diceSum == 6 || diceSum == 12 || diceSum == 13 || diceSum == 17 || diceSum == 19 || diceSum == 23)
            System.out.println("You win!");
        System.exit(0);

    }

    public static int roll() {
        Random dieRoll = new Random();
        int diceSum = 0;

        diceSum += dieRoll.nextInt(6) + 1;
        diceSum += dieRoll.nextInt(6) + 1;
        diceSum += dieRoll.nextInt(6) + 1;
        diceSum += dieRoll.nextInt(6) + 1;
        return diceSum;
    }
}
 类似资料:
  • 有人能在这里给我指个正确的方向吗?我的游戏工作完美,但我想添加一些实际的互动/目标。谢谢

  • 我是一个C++初学者,我需要创建一个骰子游戏模拟掷两个骰子。我对头文件的使用感到很困惑。但首先,为什么我需要返回骰子的票面号码?其次,int roll函数做什么?来重置价值观和面孔?如果是,默认值是多少?而最后一个函数骰子(int n),我是否使用这个函数来控制骰子值的最大总和?函数必须有一个具有以下函数的类头文件:

  • 本文向大家介绍Java编写掷骰子游戏,包括了Java编写掷骰子游戏的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接奔主题。 **多线程&&观察者模式 题目要求:《掷骰子》窗体小游戏,在该游戏中,玩家初始拥有1000的金钱,每次输入押大还是押小,以及下注金额,随机3个骰子的点数,如果3个骰子的总点数小于等于9,则开小,否则开大,然后判断玩家是否押对,如果未押对则扣除下注金额,如果押对则奖

  • 我试图为一个游戏的掷骰子程序,其中用户输入一个下注金额和2个六面骰子滚动,如果7或11是滚动,他们赢了。如果掷2,3或12就输了,如果掷其他任何一个数字,它就显示该数字为一个点。它会继续掷骰子,直到掷7或该点为止,如果掷7就输了,否则就赢了。出于某种原因,在掷骰子时,他会掷骰子,然后再掷一次,看看他们是否赢了或输了。我不知道如何解决这个问题,任何帮助都不会附带

  • 我对C#和一般编码都是新手。为了提高我的技能,我试图创建一个基本的游戏,两个玩家掷骰子,并记录他们的得分。玩家达到20分即获胜。每个玩家轮流掷一个骰子,把他们的第一个骰子加到他们的第二个骰子上,以此类推,直到其中一个达到20。如果玩家掷出一个六,他们可以再次掷骰子。 任何帮助都将不胜感激。

  • 代码的目的是让两个玩家掷一对骰子。第一个掷出20分的玩家赢得比赛。我很难弄清楚如何正确地跟踪滚动的总和;它只给我当前回合的总和,然后当每个玩家滚动10次时游戏就结束了。 我如何正确地计算每个玩家游戏的总和,然后当其中一个玩家的总和等于20时停止循环?