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;
}
}