October 25th, 2012, 02:39 PM
-
Help with classes and calling instance
I am kinda stuck and just not sure where to start fixing this. My program works without errors, but does not loop or return the score. I believe I need to add my methods to my "DRPlayer" class and call them into main. I know this must be hard to pickup where I have left off but I would appreciate any advice to help me learn. below are my codes and instructions:
In the Dice Roll game, the player begins with a score of 1000. The player is prompted for the number
of points to risk and a second prompt asks the player to choose either high or low. The player rolls
two dice and the outcome is compared to the player’s choice of high or low. If the dice total is between
2 and 6 inclusive, then it is considered “low”. A total between 8 and 12 inclusive is “high”. A total of
7 is neither high nor low, and the player loses the points at risk. If the player had called correctly, the
points at risk are doubled and added to the total points. For a wrong call, the player loses the points at
risk. Create a DiceRollGame application that uses a DRPlayer object based on this specification. The
DRPlayer object should have two Die member variables that represent the dice. The Die class should
use a random number generator to determine the outcome in a roll() method
Code:
package week9dicegame;
import java.util.Scanner;
/**
*
* @author Bob
*/
public class Week9Dicegame {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
DRPlayer player=new DRPlayer();
int totalPoints = 1000;
int riskAmt;
int dieAmt;
int guess;
int compHL=0;//converts dieAmt to 0 for low or 1 for high
Scanner my_input = new Scanner(System.in);
System.out.println("Your total points are: "+ totalPoints);
System.out.println("How many points do you want to risk? (-1 to quit) ");
riskAmt = my_input.nextInt();
if (riskAmt == -1){
System.exit(0);
}
else if (riskAmt != -1){
dieAmt = player.die1.roll() + player.die2.roll();
if (dieAmt >= 2 && dieAmt <= 6){
compHL = 0;//low
}
else if (dieAmt >= 8 && dieAmt <= 12){
compHL = 1;//high
}
System.out.println("Make a call (0 for low, 1 for high)");
guess = my_input.nextInt();
if (dieAmt == 7){
totalPoints = totalPoints - riskAmt;
System.out.println("You rolled: "+dieAmt);
System.out.println("Bust! Your score is: "+totalPoints);
}
else if (guess == compHL){
totalPoints = totalPoints + (riskAmt * 2);
System.out.println("You rolled: "+dieAmt);
System.out.println("Correct! Your score is: "+totalPoints);
}
else if (guess != compHL){
totalPoints = totalPoints - riskAmt;
System.out.println("You rolled: "+dieAmt);
System.out.println("Incorrect! Your score is: "+totalPoints);
}
}
}
}
Code:
package week9dicegame;
/**
*
* @author Bob
*/
public class DRPlayer {
Die die1 = new Die();
Die die2 = new Die();
}
Code:
package week9dicegame;
/**
*
* @author Bob
*/
public class Die {
int die_roll = 0;
public int roll(){
die_roll = (int)(Math.random()*6) + 1;
return (die_roll);
}
}
October 29th, 2012, 06:55 PM
-
Can someone pease offer me some advice? I am still stuck. The program works but I am confused on how to make it loop and return the score. I'd appreciate it greatly. Thanks
October 29th, 2012, 07:27 PM
-
You need to loop within your main method.
Code:
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
DRPlayer player = new DRPlayer();
int totalPoints = 1000;
int riskAmt;
int dieAmt;
int guess;
int compHL = 0;//converts dieAmt to 0 for low or 1 for high
Scanner my_input = new Scanner(System.in);
while (true) {
System.out.println("Your total points are: " + totalPoints);
System.out.println("How many points do you want to risk? (-1 to quit) ");
riskAmt = my_input.nextInt();
if (riskAmt == -1) {
System.exit(0);
} else if (riskAmt != -1) {
dieAmt = player.die1.roll() + player.die2.roll();
if (dieAmt >= 2 && dieAmt <= 6) {
compHL = 0;//low
} else if (dieAmt >= 8 && dieAmt <= 12) {
compHL = 1;//high
}
System.out.println("Make a call (0 for low, 1 for high)");
guess = my_input.nextInt();
if (dieAmt == 7) {
totalPoints = totalPoints - riskAmt;
System.out.println("You rolled: " + dieAmt);
System.out.println("Bust! Your score is: " + totalPoints);
} else if (guess == compHL) {
totalPoints = totalPoints + (riskAmt * 2);
System.out.println("You rolled: " + dieAmt);
System.out.println("Correct! Your score is: " + totalPoints);
} else if (guess != compHL) {
totalPoints = totalPoints - riskAmt;
System.out.println("You rolled: " + dieAmt);
System.out.println("Incorrect! Your score is: " + totalPoints);
}
}
}
}
Hope this helps.
slink
October 29th, 2012, 07:41 PM
-
Aha! Got it! Thank you very much. I was not aware that main would return the value as long as the while loop was still true. I was definitly making it more complicated than needed. Thank you very much!