Main.java

import java.util.Scanner;  
  
public class Main {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
        System.out.println("Enter name for Player 1: ");  
        Player player1 = new Player(scan.nextLine());  
        System.out.println("Enter name for Player 2: ");  
        Player player2 = new Player(scan.nextLine());  
        DiceGame game = new DiceGame(player1, player2);  
        game.play();  
    }  
}

Player.java

public class Player {  
    int points = 0;  
    int unsecuredPoints = 0;  
    String name = "";  
  
    public Player(String name) {  
        this.name = name;  
    }  
  
    public void addPoints(int points) {  
        this.points += points;  
    }  
  
    public int getPoints() {  
        return this.points;  
    }  
}

DiceGame.java

import java.util.Scanner;  
  
public class DiceGame {  
    Player player1;  
    Player player2;  
    int turn = 0;  
    boolean runGame = true;  
  
    public DiceGame(Player player1, Player player2) {  
        this.player1 = player1;  
        this.player2 = player2;  
    }  
  
    public void play() {  
        while (runGame) {  
            System.out.println("--------------------------------------------");  
            System.out.println(player1.name + " has " + player1.points + " points");  
            System.out.println(player2.name + " has " + player2.points + " points");  
            if (player1.points >= 30) {  
                System.out.println(player1.name + " wins!");  
                runGame = false;  
                System.out.println("--------------------------------------------");  
                break;            } else if (player2.points >= 30) {  
                System.out.println(player2.name + " wins!");  
                runGame = false;  
                System.out.println("--------------------------------------------");  
                break;            }  
            System.out.println("--------------------------------------------");  
            if (turn == 0) {  
                System.out.println(player1.name + "'s turn!");  
                System.out.println("Press enter to roll");  
                Scanner scan = new Scanner(System.in);  
                scan.nextLine();  
                roll(player1);  
            } else {  
                System.out.println(player2.name + "'s turn");  
                System.out.println("Press enter to roll");  
                Scanner scan = new Scanner(System.in);  
                scan.nextLine();  
                roll(player2);  
            }  
        }  
    }  
  
    public void roll(Player player) {  
        int roll = (int) (Math.random() * 6) + 1;  
        System.out.println(player.name + " rolled a " + roll);  
        if (roll == 1) {  
            player.unsecuredPoints = 0;  
            System.out.println(player.name + " lost all unsecured points");  
            if (turn == 1) {  
                turn = 0;  
            } else {  
                turn = 1;  
            }  
        } else {  
            player.unsecuredPoints += roll;  
            System.out.println(player.name + " has " + player.unsecuredPoints + " unsecured points");  
            System.out.println("Would you like to roll again? (y/n)");  
            Scanner scan = new Scanner(System.in);  
            String input = scan.nextLine();  
            if (input.equalsIgnoreCase("y")) {  
                roll(player);  
            } else {  
                player.addPoints(player.unsecuredPoints);  
                System.out.println(player.name + " secured " + player.unsecuredPoints + " points. They now have " + player.points + " points");  
                player.unsecuredPoints = 0;  
                if (turn == 1) {  
                    turn = 0;  
                } else {  
                    turn = 1;  
                }  
            }  
        }  
    }  
}