Blackjack: Não consigo randomizar um número

Pesquisei a respeito deste assunto, mas não encontrei a devida resposta “perfeita”.

Estou tentando construir um Blackjack(21) para treinar o que aprendi até agora. Não tenho conhecimento sobre OO, mas meu professor estava me ajudando. Neste momento estou com um enorme problema para gerar os números(ou cartas) DIFERENTES em um mesmo
System.out.print("").
Neste caso o “dealer” entrega duas cartas (no meu caso seriam dois valores randômicos) e também entrega outro valor para si mesmo, sua própria carta.

Os valores saem repetidos, sem randomização separada.

Segue abaixo apenas um pedacinho da tentativa:



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

        Random deal = new Random(10);
        
        System.out.println("Iniciando jogo...");
        System.out.print("Pressione 'enter' para começar.");
        ler.nextLine();
        System.out.println("Sua primeira carta é "+(deal.nextInt(10)+1)+".");
        System.out.println("Sua segunda carta é "+(deal.nextInt(10)+1)+".");
        System.out.println("A carta do dealer é "+(deal.nextInt(10))+".");
        System.out.println("Suas cartas são: "+(deal.nextInt(10))+" e "+(deal.nextInt(10))+".");
        
       
    }
    
}

Os valores sempre saem iguais!

1 curtida

O problema é que você está iniciando sua classe Random sempre com o mesmo valor:

Random deal = new Random(10);

Daí os números “aleatórios” sempre sairao na mesma sequencia.

Use o construtor sem parâmetros e esse problema será resolvido:

Random deal = new Random();
2 curtidas

Ou, no lugar deste random, você poderia utilizar
Random deal = new Random().nextInt(10);

Que já vai gerar o valor inteiro, sem o “3.0”, e sim “3”

1 curtida

Funcionou! Agora precisava saber como posso guardar esses valores para ir somando até estourar 21. Estou quebrando a cabeça.

1 curtida

Você pode utilizar os colchetes, assim formando uma array…

No caso,

int valores[6];
valores[1] = Valor do random1;
valores[2] = Valor do random2;
1 curtida

e, na hora de printar os valores, colocar um:

System.out.println("Valores: " + valores[1] + valores[2] + valores[3] + valores[4] + valores[5] + valores[6]);
1 curtida

Muito obrigado a todos que se disponibilizaram a me ajudar. Deu tudo certo! Um abraço

1 curtida