How do I ask if the user would like to continue the game after each dice roll in java using netbeans

北战南征 提交于 2019-12-01 21:12:02

Scanner can be used to prompt user to ask whether he/she wants to continue or not.

You can even track no. of times dices were rolled.

import java.util.Scanner;

public class DiceGame {

    public static int attempt = 1;
    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int dice1 = (int) (Math.random() * 6 + 1);
        int dice2 = (int) (Math.random() * 6 + 1);
        int sum = dice1 + dice2;

        while (true) {
            System.out.println();
            System.out.println("Rolling dice for " + attempt + " time!");

            dice1 = (int) (Math.random() * 6 + 1);
            dice2 = (int) (Math.random() * 6 + 1);
            sum = dice1 + dice2;

            System.out.println("Roll: total = " + sum);

            if (sum == 2 || sum == 3 || sum == 12) {
                System.out.println("Sorry with a " + sum + " you loose :(!");
                System.out.println();
                break;
            } else if (sum == 7 || sum == 11) {
                System.out.println("With a " + sum + " you win :)!");
                System.out.println();
                break;
            }
            System.out.println();
            System.out.println("Do you wish to continue? Press 'y' for YES or ANY key for EXIT");
            if (!scanner.next().equalsIgnoreCase("y")) {
                break;
            }
            attempt++;
        }
        System.out.println("Thanks for playing dice game, you rolled the dice " + attempt + " times!");
    }
}

EDIT: If you want to roll the dices automatically when the sum is 4 5 6 8 9 10 then you would no more need Scanner i.e. user input whether to continue or not.

Here is the solution for the same.

public class DiceGame {

    public static int attempt = 1;

    public static void main(String[] args) {

        int dice1 = 0;
        int dice2 = 0;
        int sum = 0;

        while (true) {
            System.out.println();
            System.out.println("Rolling dice for " + attempt + " time!");

            dice1 = (int) (Math.random() * 6 + 1);
            dice2 = (int) (Math.random() * 6 + 1);
            sum = dice1 + dice2;

            System.out.println("Roll: total = " + sum);

            if (sum == 2 || sum == 3 || sum == 12) {
                System.out.println("Sorry with a " + sum + " you loose :(!");
                System.out.println();
                break;
            } else if (sum == 7 || sum == 11) {
                System.out.println("With a " + sum + " you win :)!");
                System.out.println();
                break;
                // this will roll the dices automatically
                // when sum is 4, 5, 6, 8, 9 or 10
            } else {
                System.out.println();
                System.out.println("With " + sum + " dices are rolled again automatically!!");
                attempt++;
            }
        }
        System.out.println("Thanks for playing dice game, you rolled the dice " + attempt + " times!");
    }
}

Sample Run

Rolling dice for 1 time!
Roll: total = 4

With a 4, dices are rolled again automatically!!

Rolling dice for 2 time!
Roll: total = 6

With a 6, dices are rolled again automatically!!

Rolling dice for 3 time!
Roll: total = 2
Sorry with a 2 you loose :(!

Thanks for playing dice game, you rolled the dice 3 times!

You can use java Scanner class to prompt user for inputs.

Inside your while loop, prompt user for the inputs. You may need to modify your while loop condition.

Scanner sc = new Scanner(System.in);
int i = sc.nextInt();

Based on the user's input, use 'brake' to exit from the loop. That should do it.

Scanner Reference

I created a playAgainMessage method which returns an int. This decides whether or not the user will play again. Check it out:

import java.util.Scanner;

public class DiceGame {
    private static final int PLAY = 1;
    private static final int DO_NOT_PLAY = 2;
    private static int choice = 1;

    public static void main(String[] args) {
        while (choice == PLAY) {
            int dice1=(int)(Math.random()*6+1);
            int dice2=(int)(Math.random()*6+1);
            int sum = dice1 + dice2;

            System.out.println("Roll: total = " + sum);

            if (sum==2 || sum==3 || sum==12) {
                System.out.println("Sorry with a " +  sum  + " you loose :(");
                choice = playAgainMessage();
            }
            else if(sum==7 || sum==11) {
                System.out.println("With a " + sum + " you win :)");
                choice = playAgainMessage();
            }
        }
        if (choice == DO_NOT_PLAY) {
            System.out.println("Good bye...");
        }
    }

    private static int playAgainMessage() {
        Scanner input = new Scanner(System.in);
        System.out.println("Would you like to play again? '1' for yes, '2' for no");
        int choice = input.nextInt();
        input.close();
        if(choice == PLAY){
            System.out.println("Rolling...");
            return PLAY;
        } else {
            return DO_NOT_PLAY;
        }
    }
}

You can call the playAgainMessage method whenever you'd like, which makes it nice and easy to read.

This will keep playing until the user inputs something other than '1'. Try running it to see exact output.

You can use a do{}while(); loop, it will play once, and then ask the user to it again :

Scanner sc = new Scanner(System.in);
String input = "";
do {
    int // ...

    System.out.println("Roll: total = " + sum);

    if (sum == 2 || sum == 3 || sum == 12) {
        // ...
    } else if (sum == 7 || sum == 11) {    
        // ...
    }

    System.out.println("If you want to continue, write 'y' : ");
    input = sc.nextLine();
} while (input.equalsIgnoreCase("y"));
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!