I am teaching myself Java, and I created a program to simulate a game of craps. I have the entire game in a Boolean method. Everything works fine, but I want to count every time the user wins. What is the best way to count these wins, and then print them?
Here is my code:
import java.util.Random;
public class game{
public static void main(String[] args) {
Random rand = new Random();
for(int i = 0; i <= 10; i++){
craps(rand);
}
}
public static boolean craps(Random randomGen){
int roll1 = randomGen.nextInt(6) + 1;
int roll2 = randomGen.nextInt(6) + 1;
int sum = roll1 + roll2;
int sumRepeat = sum;
int count = 0;
String win = "you win";
String lose = "you lose";
String point = "point=";
if(sum == 7 || sum == 11){
System.out.printf("[%d,%d] %d %s\n",roll1,roll2,sum,win);
count++;
return true;
}
else if(sum == 2 || sum == 3 || sum == 12){
System.out.printf("[%d,%d] %d %s\n",roll1,roll2,sum,lose);
return false;
}
else{
System.out.printf("[%d,%d] %s %d",roll1,roll2,point,sum);
int roll3 = randomGen.nextInt(6) + 1;
int roll4 = randomGen.nextInt(6) + 1;
int sum2 = roll3 + roll4;
do{
roll3 = randomGen.nextInt(6) + 1;
roll4 = randomGen.nextInt(6) + 1;
sum2 = roll3 + roll4;
if(sum2 == sumRepeat){
System.out.printf("[%d,%d] %d %s\n",roll3,roll4,sum2,win);
count++;
return true;
}else{
System.out.printf("[%d,%d]",roll3,roll4);
}
}
while(sum2 != 7);{
System.out.printf("[%d,%d] %d %s\n",roll3,roll4,sum2,lose);
return false;
}
}
}
}
I have tried to return the count variable but I get an error saying I can't return an int value from a Boolean method which I expected. But I also tried to print out the count value with System.out.println();
But I can't find a place in the code to put it since I always get an error stating that the println is unreachable code.
Any help would be appreciated. Thanks!
Here is the output of the program
[1,6] 7 you win
[2,4] point= 6[3,6][3,3] 6 you win
[3,3] point= 6[5,1] 6 you win
[6,1] 7 you win
[6,3] point= 9[5,1][3,5][2,6][6,4][5,6][1,5][6,3] 9 you win
[3,3] point= 6[1,5] 6 you win
[5,1] point= 6[1,5] 6 you win
[2,2] point= 4[6,4][3,3][3,4][3,4] 7 you lose
[4,5] point= 9[6,4][5,1][1,2][6,2][1,5][3,5][6,5][1,5][5,2][5,2] 7 you lose
[2,2] point= 4[5,3][5,6][6,4][3,2][6,5][3,6][4,4][4,2][4,3][4,3] 7 you lose
[6,6] 12 you lose
You won 11 time(s).
Count them outside the craps
function, here's one simple way:
public static void main(String[] args) {
Random rand = new Random();
int counter = 0;
for(int i = 0; i <= 10; i++){
if(craps(rand)) counter++;
}
System.out.println("You won " + counter + " times!");
}
By the way, it's important to note that it's far superior to count outside the craps
function than it is to modify it. As you learn java, remember that each method should only do one job. You may want to practice breaking the craps
function into smaller pieces to practice this philosophy. The one method to one job philosophy will make larger projects much easier to understand and debug when you are looking back later.
int wins = 0;
for(int i = 0; i <= 10; i++){
if(craps(rand)) {
wins++;
}
}
// Print a friendly message including `wins`
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With