Orientação a Objetos(Java)?

Preciso modificar o jogo Craps, de modo que o mesmo permita apostas. Foi criado um atribudo chamado bankBalance o qual iniciliza com 1000 dólares, após o jogador inserir a aposta é verificado se ela é menor ou igual ao bankBalance, caso for menor, o jogador devera reinserir o valor da aposta. Depois de um valor válido inserido é executado o jogo de dados. Caso o jogador ganhe é acrescentado a aposta ao bankBalance. Se o jogador perder é subtraído o valor da aposta do bankBalance e exibido o novo bankBalance, se o novo bankBalance tenha se tornado 0, é exibida a seguinte mensagem “Desculpe mas, você faliu”. A medida em que o jogo vai se desenvolvendo é exibido várias mensagens adequadas à situação para criar uma conversa com o usuário, como:

 “Ihh, parece que você vai quebrar hein?”
 “Hey, vamos lá, dê uma chance para sua sorte!”
 “Você está montado na grana, agora é hora de trocar as fichas e embolsar o dinheiro”.

Consegui fazer determinadas coisas como por exemplo : Fazer o jogador inserir uma aposta válida;
Exibir a mensagem “Desculpe mas, você faliu”.
Preciso de ajuda para completar o restante da atividade.

Segue o código:

public class Craps {

    private static final Random randomNumbers = new Random();
    public double bankBalance = 1000;
    public double aposta = 0;
    public double novo;
    public double novo1;
    public int res;
    public int cont =0;
    public double soma = 0;
  
    private enum Status {
        Continue, Ganhou, Perdeu
    };

    private static final int Snake_Eyes = 2;
    private static final int Trey = 3;
    private static final int Seven = 7;
    private static final int Yo_Eleven = 11;
    private static final int Box_cards = 12;

    public void play() {

        int myPoint = 0;
        Status gameStatus;

        int sumOfDice = rollDice();

        switch (sumOfDice) {

            case Seven:
            case Yo_Eleven:
                gameStatus = Status.Ganhou;
                break;

            case Snake_Eyes:
            case Trey:
            case Box_cards:
                gameStatus = Status.Perdeu;
                break;

            default:
                gameStatus = Status.Continue;
                myPoint = sumOfDice;
                System.out.printf("Sua pontuação é: %d\n", myPoint);
                break;

        }

        while (gameStatus == Status.Continue) {
            sumOfDice = rollDice();

            if (sumOfDice == myPoint) {
                gameStatus = Status.Ganhou;
            } else if (sumOfDice == Seven) {
                gameStatus = Status.Perdeu;
            }
        }

        if (gameStatus == Status.Ganhou) {
            System.out.println("Jogador ganhou");

            
         novo =  bankBalance+aposta;

            System.out.println("Novo bankBalance: " + novo);
            
          
        } else {
            System.out.println("Jogador perdeu");
            novo= bankBalance - aposta ;
            System.out.println("Novo bankBalance: " + novo);
            System.out.println("Desculpe, mas você faliu");

           
        }
        
        
        if(novo > 0 && novo < 5000){
            System.out.println("Hey, vamos lá, dê uma chance a sua sorte!");
  }
        if(novo == 5000){
            System.out.println("“Você está montado na grana, agora é hora de trocar as fichas e embolsar o dinheiro”.");
        }
  
}
  public int rollDice() {

        int die = 1 + randomNumbers.nextInt(6);
        int die2 = 1 + randomNumbers.nextInt(6);

        int sum = die + die2;

        System.out.printf("Player rolled %d + %d = %d\n", die, die2, sum);

        return sum;

    }

} 

public class TestCraps {

    public static void main(String[] args) {
        Craps game = new Craps();
        Scanner entrada = new Scanner(System.in);
    

        while(game.aposta < game.bankBalance){
 
        System.out.print("Entre com valor da aposta: ");
    game.aposta = entrada.nextDouble();

        if (game.aposta >= game.bankBalance) {
            game.play();
          
        } else {
            System.err.println("Valor da aposta inválido");

        }
        
        
      
        
        }
        
      
        
        if (game.novo != 0){
            game.play();
        }
        


    }

}