赌场游戏问题

时间:2015-10-20 04:56:09

标签: java

我一直试图解决这个编程问题一段时间但无法取得任何进展。任何帮助将不胜感激。

你认为里弗斯赌场赚了太多钱,希望你能减少行动。因此,您决定设计自己的赌博计算机程序。你的程序将允许用户玩Over and Under游戏(好吧,所以它不会肆虐赌博社区,但它很容易实现!)。如果你不熟悉当地节日的主要内容,Over and Under涉及滚动两个骰子并试图猜测结果是否会

少于七(下) 七个完全或 大于七(以上)

在每次掷骰子之前,玩家必须选择七岁或以下,并且必须下注(当然使用计算机币)。如果玩家的选择是正确的,那么他/她将获得以下奖金:

if(choice = = under)或(choice = = over),用户获得他/她的投注以及等于投注的奖金。 如果(选择= = 7),用户获得他/她的投注,加上等于4倍投注的奖金。 因此,例如,如果Joe Schmoe超过5.00美元并且骰子以9结果出局,Joe将获得他的5.00美元回报以及另外$ 5.00的奖金。如果Joe在七分中投注5.00美元,并且骰子以7分输出,Joe将获得他的5.00美元回报以及20.00美元的奖金。显然,如果乔错误猜测,那么" house"保留他辛苦赚来的计算机美元。你的任务是在Java中以面向对象的方式实现这个Over and Under游戏。您的实施将有3个主要组成部分:

游戏玩家的一个类,名为Player,存储在Player.java文件中。这将最低限度地包括玩家的姓名(第一个和最后一个,作为单独的字段),他/她的剩余资金,他/她玩过的轮次数以及他/她赢得的次数。当然,它还将包括用于以必要方式操纵播放器的mutator方法(记住一个类包含数据+操作,并且数据通常应该是私有的,因此要改变必须使用方法的数据)。一些变异者的例子可能是" addMoney(双钱)","减钱钱(双钱)"," wonAGame()"," lostAGame()"等。您还应该实现toString()方法,将播放器的信息作为格式良好的字符串返回。 一个名为Die的模具类,存储在Die.java中。这是一个简单的类,它将存储并允许单个模具的滚动。对于给定的" roll"一个模具的值应该在1到6之间随机确定.Die类应该包含一个Random对象,它将用于生成随机值。但是,对于每个Die,Random对象应该只初始化一次(例如,在Die构造函数中)。对于您的游戏,您将需要两个Die类对象,并且单个掷骰将是两个Die对象的卷的总和。 游戏本身(或游戏经理,如果您愿意)的类(即主程序),称为Assig2并存储在Assig2.java中。该程序将从文件中读取播放器(或创建新播放器)并允许播放器以用户友好的方式播放游戏(请参阅下面的详细信息)。在这个程序中,您将操纵您的Player和Die对象,以及一些其他必要的变量。仔细考虑游戏所需的变量。 主程序的整体逻辑应如下:

最初请求并从键盘读取播放器的名字。不失一般性,假设某个玩家的名字是Herb。现在打开一个等于玩家姓名的文件,使用" .txt"延期。对于此示例,文件名将为" Herb.txt"。如果文件已存在,请将文件中的信息读入Player对象。如果文件不存在,则提示用户输入信息并以此方式创建Player对象。请参阅Java API以获取File类,以了解如何查看文件是否存在。请参阅a2out.txt示例输出以查看此过程的示例。 。 开始游戏。游戏由任意数量的轮组成。每轮应如下进行: 该程序询问用户他/她想要下注多少并输入该值。金额不得超过玩家手头的现金(您的程序必须执行此规则)。 该程序询问用户他/她想要下注(超过,低于或等于7)并输入该值。 该节目"滚动骰子" (通过两个Die对象)并向用户显示两个模具值(例如:3和5)及其总和(例如:8) 程序自动确定玩家是赢还是输了一轮,通知用户并更新玩家对象中的金钱和轮次赢得的值。 游戏应继续进行,直到出现以下两种情况之一: 用户选择退出 玩家没钱 在游戏结束时,将播放器的当前统计数据输出到显示器,然后将播放器的信息保存回文件(相同的文件名,.txt)。在您的输出中显示玩家在上一场比赛中的赢/输记录,玩家的总体(即历史性)赢/输记录,以及他/她在此期间的净收益/损失。游戏。该文件的想法是,对于给定的玩家,将从游戏到游戏使用相同的文件,并且将在游戏之间保持玩家的信息。 请参阅a2out.txt以了解程序的外观。您的程序不必完全匹配,但它应具有与游戏相同的功能和方法。

重要说明(仔细阅读所有这些内容): 由于您的游戏将从其类文件外部访问您的Player和Die类,并且由于这些类中的数据应该是私有的,因此您将需要这些类的几个访问器和更改器。仔细考虑您需要的方法,并确保以良好的面向对象的方式实现您的类。 Player和Die类是此项目的要求,必须按指定的方式实现。如果没有按照规定实施,完美工作的计划可能会失去大量信贷。 您的播放器数据文件必须包含以下信息,每行一个值: 姓 名字 RemainingMoney TotalRoundsPlayed RoundsWon

这是我到目前为止的代码:

//Colin Mason
//9/30/15
//0401 MonWed 1:00
import java.util.*;
import java.io.*;
public class Assig2
{
    public static void main(String [] args) throws FileNotFoundException, IOException
    {


        String firstName;
        double betValue;

        System.out.println("What is your name? ");
        Scanner kbd = new Scanner(System.in);
        firstName = kbd.nextLine();
        System.out.println("Welcome back " + firstName);
        System.out.println("Welcome to Over and Under!");

        BufferedReader in = new BufferedReader(new FileReader(firstName + ".txt"));
        String str;

        List<String> list = new ArrayList<String>();
        while((str = in.readLine()) != null)
        {
            list.add(str);
        }

        String[] stringArr = list.toArray(new String[0]);

        Player.lastName = stringArr[0];
        Player.firstName = stringArr[1];
        Player.remainingMoney = Double.parseDouble(stringArr[2]);
        Player.roundsPlayed = Integer.parseInt(stringArr[3]);
        Player.roundsWon = Integer.parseInt(stringArr[4]);

        System.out.println("Here is your current information:");
        System.out.println("Name: " + Player.firstName + " " + Player.lastName);
        System.out.println("Money left: " + Player.remainingMoney);
        System.out.println("Total Rounds Played: " + Player.roundsPlayed);
        System.out.println("Total Rounds Won: " + Player.roundsWon);
        boolean flag = true;
        boolean win;
        Die die = new Die();
        String betDecision;
        do {
            System.out.println("Would you like to play a round? (y/n)");
            String roundDecision = kbd.nextLine();
            boolean flag2 = true;
            if(roundDecision.equals("y"))
            {
                do {
                    System.out.println("How much would you like to bet? (<= $" + Player.remainingMoney + ") > ");
                    betValue = kbd.nextDouble();
                    if(betValue <= Player.remainingMoney && betValue > 0)
                    {
                        flag2 = false;
                        int roll1 = die.roll();
                        int roll2 = die.roll();
                        int totalRoll = (roll1 + roll2);
                        System.out.println("Select your choice: O(ver), U(nder), S(even) > ");
                        betDecision = kbd.next();
                        System.out.println("The dice have been rolled and the result is...");

                        System.out.print("Die 1: " + roll1 + " Die 2: " + roll2);
                        System.out.println(" => Total: " + totalRoll);

                            if(totalRoll > 7)
                            {
                                System.out.println("OVER!");
                                if(betDecision.equals("O"))
                                {
                                    win = true;
                                }
                                else
                                {
                                    win = false;
                                }
                            }
                        else if(totalRoll < 7)
                        {
                            System.out.println("UNDER!");
                            if(betDecision.equals("U"))
                            {
                                win = true;
                            }
                            else
                            {
                                win = false;
                            }
                        }
                    }
                } while (flag2);

            }
            else if(roundDecision.equals("n"))
            {
                System.out.println("Thank you for playing Over and Under!");
                System.out.println("Here is your updated information:");
                System.out.println("Name: " + Player.firstName + " " + Player.lastName);
                System.out.println("Money left: " + Player.remainingMoney);
                System.out.println("Total Rounds Played: " + Player.roundsPlayed);
                System.out.println("Total Rounds Won: " + Player.roundsWon);
                flag = false;
                System.exit(0);
            }
        } while (flag);

    }

}

1 个答案:

答案 0 :(得分:0)

这是一个很好的问题需要解决。从我所看到的,你只发布了主要方法,而不是重要的播放器和模具类。尝试准确描述哪些不起作用以及您怀疑某个问题的位置或哪个部分您不知道如何解决它(可能是fileio?)。

在您发布的代码中,我看到了一个错误。代码中的Player具有静态属性。这不是面向对象的。使它们成为非静态和私有的,并添加getter / setter。