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

我的JAVA猪骰子游戏不会保存每个玩家的分数,即使达到分数,游戏也不会停止

朱令
2023-03-14

我的计算机科学课的猪骰子游戏不会在每次回合后保存每个分数,即使玩家达到最高分数,我的游戏也不会停止(我知道原因是布尔值,但我不知道还能用什么)。此外,当一名球员拒绝再次掷骰时,得分将回到零。如果有人能帮我,那就太好了!!谢谢。

import java.util.*;
import java.util.Random;


public class PigDiceGamebyJian {

    public static Scanner sc = new Scanner(System.in);

    public static Random gen = new Random();

    public static void main(String[] args) {

        //char repeat;

        System.out.println(" Welcome to the Pig Dice Game ");

        System.out.println("This game requires two players");

        System.out.println("How to play: each player will take turn rolling the dice (adding up the turns) until the sum is 30");

        System.out.println("First one to get to  30 wins, though if on a turn, if you roll a 1, ");

        System.out.println("you will give the dice to the other player, and you will not add anything to your score because 1 = 0");

        System.out.println("Enough with the boring rules.");

        String p1 = getName();

        String p2 = getName();

        System.out.println("Hello " + p1 + " and " + p2 + ".");

        System.out.println("Please enter a score that you would like to play up to");

        final int fin = sc.nextInt();

        System.out.println(p1 + " will be going first.");

        int p1score = roll(p1, 0, fin);

        int p2score = roll(p2, 0, fin);

        while (p1score < fin && p2score < fin ) {

            p1score += roll(p1, 0, fin);

            p2score += roll(p2, 0, fin);

        }

    }

    private static int roll(String player, int score, int fin) {

        boolean go = true;

        int counter = 0;

        while(go) {

            int dice =  gen.nextInt(6) + 1;



            if (dice == 1) {

                System.out.println(player + " You rolled 1, your turn is over.");

                System.out.println(player + " your total is " + counter);

                return 0;

            }


            System.out.println(player  + " you rolled a " + dice);


            counter = counter + dice;

            System.out.println(player + " Your turn score is " + counter + " Do you want to roll again? (y)es (n)o");

            String ans = sc.next();

            if (ans.equals("n")) {

                go = false;

                System.out.println(player + " your score is " + score);

                return score;


            }

            if (score >    fin) {

                go = false;

                System.out.println(player + " you've won the PIG DICE GAME!!");

            }


        }

         return score;
    }

    private static String getName() {

        System.out.println("Enter the name for a player.");

        String player = sc.next();

        return player;
    }

}

共有1个答案

钱元徽
2023-03-14

你的程序有一个逻辑缺陷。您正在使用score=0作为参数调用roll函数。

    int p1score = roll(p1, 0, fin);

    int p2score = roll(p2, 0, fin);

    while (p1score < fin && p2score < fin ) {

        p1score += roll(p1, 0, fin);

        p2score += roll(p2, 0, fin);

    }

在滚动法中,你要么返回0,要么每次都返回0分。因此,根据滚动函数返回的值确定的p1score和p2score永远都是0。

这就是为什么你的游戏没有停止,因为它卡在了while循环中。

您需要更改roll函数,以将分数返回到您已滚动的值。

 类似资料:
  • 我在创造一个骰子游戏。我被卡住了,我希望游戏比较每个玩家的滚动输出,这样得分最高的玩家就赢了。但是,我真的不知道该怎么做。

  • 有人能在这里给我指个正确的方向吗?我的游戏工作完美,但我想添加一些实际的互动/目标。谢谢

  • 1-4:玩家从1-6随机向前移动 5:玩家从4-11向前移动一个随机量(随机8+4) 6:玩家移动到另一个玩家所在的位置(见下文) 我是新的代码编写(这是我的第四个程序编写),并没有广泛的知识知道什么是错误的。代码不需要熟练地完成,我只想让它正常工作。我们非常感谢您的帮助。 }

  • 我是Java的初学者,所以我不太懂。我在大学的课程中学习Java,我正在为作业做骰子游戏。

  • 该程序应模拟滚动两个骰子,并计算和。添加一个循环,使程序可以玩10,000个游戏。添加计数器,计算玩家赢了多少次,输了多少次。在10,000场比赛结束时,计算获胜的概率[即赢/(赢+输)]并输出该值。从长远来看,谁会赢得最多的比赛,你还是房子?注意:要生成一个随机数x,其中0x≤<1,使用x=math.random();例如,乘以6并转换为一个整数,结果是一个介于0和5之间的整数。

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