Java 试图运行我的赌场代码直到所有的钱都用完

Java 试图运行我的赌场代码直到所有的钱都用完,java,Java,所以我不得不做这个赌场的作业,除了一小步之外,我已经完成了所有的工作。如果我用新的钱赢了,我需要我的游戏继续运行。(如果这有意义的话) 因此,基本上如果我掷相同的硬币并赢了40,那么我现在有45枚硬币,我希望代码能用45枚硬币再次运行,而不是我以前随机数的硬币基本上就像人们提到的那样,你需要写一个循环。有两种不同的类型 我会使用while循环,尽管语法非常简单: while(someCondition) { // execute some stuff } 我冒昧地看了看你的代码,你说你

所以我不得不做这个赌场的作业,除了一小步之外,我已经完成了所有的工作。如果我用新的钱赢了,我需要我的游戏继续运行。(如果这有意义的话)


因此,基本上如果我掷相同的硬币并赢了40,那么我现在有45枚硬币,我希望代码能用45枚硬币再次运行,而不是我以前随机数的硬币

基本上就像人们提到的那样,你需要写一个循环。有两种不同的类型

我会使用while循环,尽管语法非常简单:

while(someCondition) {
    // execute some stuff
}
我冒昧地看了看你的代码,你说你的CS老师不太好(我相信他确实有很多有价值的信息),因为我很无聊,目前没有什么事要做(至少我想做)

我最讨厌的是人们在编写代码时没有考虑到可维护性,我知道你是一个初学者,所以很快就养成了这个习惯,我为你写了一段代码,让你看看如果由我编写这个应用程序会是什么样子(我认为我自己是一个普通的Java程序员)希望能激发你的灵感,看看你的应用程序能实现什么

我的应用基于你的应用

您会注意到,我使用了许多方法,旨在防止我反复编写相同的代码,例如
generateNumber(int max,int min)
determinateResult(int bet,int payout)
play(game game game)
。实际上,我可以为许多不同的游戏定义规则,并重用相同的代码,以便允许用户玩游戏,目前我只定义了2个来演示这一点

另外,通过将程序不同部分的功能封装在方法中,我可以轻松地将它们更改为新的内容,让不同的游戏指向不同的方法,甚至从一组其他游戏的方法构建一个新的游戏,以创建真正复杂的内容,而无需编写更多代码(或者至少是这样的想法)

/**
* 
*赌场老虎机游戏
* 
*/
公营赌场{
/**三个骰子相同结果的支付乘数*/
私有静态最终整型支付\u三个骰子\u相同\u 3=2;
/**三个骰子相同结果的支付乘数*/
私有静态最终整数支付三个骰子相同2=1;
/**三骰子奇偶结果的支付乘数*/
私有静态最终整数支付\u三个骰子\u奇数\u偶数=1;
/**五个骰子相同结果的支付乘数*/
私人静态最终整数支付_5 _骰子_相同_5=10;
/**损失结果的支出乘数*/
私人静态最终整笔支付\损失=0;
/**玩家的硬币*/
私人货币;
私有枚举博弈{
三个骰子,五个骰子
}
/**
*程序入口点
* 
*@param args
*程序args
*/
公共静态void main(字符串[]args){
新CasinoSlot();
}
/**
*CasinoSlot构造函数
*/
公共赌场{
coins=generateNumber(20,5);//生成初始硬币
而(硬币>0){//游戏循环
选择名称();
}
}
/**
*选择要玩的游戏
*/
私有void chooseGame(){
如果(硬币<10){
//绝望的时刻。。。
玩(游戏,五个骰子);
}否则{
玩(三个骰子的游戏);
}
}
/**

*生成一个介于最大值和最小值之间的随机数,或者如果最大值和最小值为零,则生成一个随机数。您了解此代码吗?首先,了解缩进。第二,了解是的,我了解到目前为止我编写的代码,我了解一点while循环,但我不知道您可以在此程序中使用一个。抱歉,我有一个糟糕的CS教师了解更多关于循环的知识,一点都不起作用@justin事实上,我会制作一个游戏
界面
,让我所有的游戏类型都得到实现,然后让我所有的游戏规则也被放到它们自己的类中。然后,天空是创建游戏类型以在应用程序中运行的极限。但是上面代码的目的是展示可读和可维护的代码。而不是我实际如何将你的应用程序投入生产。
while(someCondition) {
    // execute some stuff
}
/**
 * 
 * The Casino Slot game
 * 
 */
public class CasinoSlot {

    /** The payout multiplier for the THREE_DICE_SAME_3 result */
    private static final int PAYOUT_THREE_DICE_SAME_3 = 2;
    /** The payout multiplier for the THREE_DICE_SAME_2 result */
    private static final int PAYOUT_THREE_DICE_SAME_2 = 1;
    /** The payout multiplier for the THREE_DICE_ODD_EVEN result */
    private static final int PAYOUT_THREE_DICE_ODD_EVEN = 1;

    /** The payout multiplier for the FIVE_DICE_SAME_5 result */
    private static final int PAYOUT_FIVE_DICE_SAME_5 = 10;

    /** The payout multiplier for the LOSS result */
    private static final int PAYOUT_LOSS = 0;

    /** The player's coins */
    private int coins;

    private enum game {
        THREE_DICE, FIVE_DICE
    }

    /**
     * The program entry point
     * 
     * @param args
     *            The program args
     */
    public static void main(String[] args) {
        new CasinoSlot();
    }

    /**
     * The CasinoSlot constructor
     */
    public CasinoSlot() {
        coins = generateNumber(20, 5); // generate initial coins
        while (coins > 0) { // game loop
            chooseGame();
        }
    }

    /**
     * Chooses which game to play
     */
    private void chooseGame() {
        if (coins < 10) {
            // desperate times...
            play(game.FIVE_DICE);
        } else {
            play(game.THREE_DICE);
        }

    }

    /**
     * Generates a random number between max and min or zero if max-min <= 0
     * 
     * @param max
     *            The max number
     * @param min
     *            The min number
     * @return the random number
     */
    private int generateNumber(int max, int min) {
        if (max - min <= 0)
            return 0;
        return (int) (Math.random() * (max - min) + min);
    }

    /**
     * Determines the payout
     * 
     * @param bet
     *            The bet
     * @param payout
     *            The payout multiplier
     * @return The payout
     */
    private int determineResult(int bet, int payout) {
        int win = bet * payout;
        System.out.println("You win " + win + " coins.");
        return win;
    }

    /**
     * Called per play cycle of the application
     */
    public void play(game game) {
        System.out.println("You have " + coins + " coins.");
        int bet = generateNumber(4, 0); // determine bet
        System.out.println("You bet " + bet + " coins.");

        // analyse bet
        if (bet == 0) { // no bet
            System.out.println("Please try again.");
        } else if (coins - bet < 0) { // can't bet
            System.out.println("You don't have that much!");
        } else { // bet placed
            coins -= bet; // update balance

            // determine game
            switch (game) {
            case THREE_DICE:
                System.out.println("Play 3 dice...");
                coins += playThreeDice(bet);
                break;
            case FIVE_DICE:
                System.out.println("Play 5 dice...");
                coins += playFiveDice(bet);
                break;
            }
        }
        System.out.println("");
    }

    /**
     * The Three Dice rules
     * 
     * @param The
     *            bet amount
     * @return The result
     */
    private int playThreeDice(int bet) {
        int result;

        int d1 = generateNumber(6, 1);
        int d2 = generateNumber(6, 1);
        int d3 = generateNumber(6, 1);

        System.out.println("You rolled: " + d1 + ", " + d2 + ", " + d3);

        if (d1 == d2 && d2 == d3) {
            result = determineResult(bet, PAYOUT_THREE_DICE_SAME_3);
        } else if (d1 == d2 || d2 == d3 || d1 == d3) {
            result = determineResult(bet, PAYOUT_THREE_DICE_SAME_2);
        } else if ((d1 % 2 == 0 && d2 % 2 == 0 && d3 % 2 == 0) || (d1 % 2 != 0) && (d2 % 2 != 0) && (d3 % 2 != 0)) {
            result = determineResult(bet, PAYOUT_THREE_DICE_ODD_EVEN);
        } else {
            result = determineResult(bet, PAYOUT_LOSS);
        }
        return result;
    }

    /**
     * The Five Dice rules
     * 
     * @param The
     *            bet amount
     * @return The result
     */
    private int playFiveDice(int bet) {
        int result;

        int d1 = generateNumber(6, 1);
        int d2 = generateNumber(6, 1);
        int d3 = generateNumber(6, 1);
        int d4 = generateNumber(6, 1);
        int d5 = generateNumber(6, 1);

        System.out.println("You rolled: " + d1 + ", " + d2 + ", " + d3 + ", " + d4 + ", " + d5);

        if (d1 == d2 && d2 == d3 && d3 == d4 && d4 == d5) {
            result = determineResult(bet, PAYOUT_FIVE_DICE_SAME_5);
        } else {
            result = determineResult(bet, PAYOUT_LOSS);
        }
        return result;
    }

}