[Resolvido]Sistema de sorteio de numeros (Como um dado)

6 respostas
N

Olá, então, eu comecei em java tem pouco tempo, sei fazer o básico do básico mesmo, e eu tava aqui treinando um pouco e fui fazer um tipo de joguinho, mas preciso fazer um sistema tipo um dado, e não tenho idéia de como posso fazer isso, alguem teria alguma sugestão pra me dar?

6 Respostas

davidbuzatto

Você quer gerar um número aleatório entre 1 e 6? É isso?

davidbuzatto
import java.util.Random;

public class Foo {

    public static void main( String[] args ) {

        int n;
        Random r = new Random();

        for ( int i = 0; i < 10; i++ ) {
            n = r.nextInt( 6 ) + 1;
            System.out.println( "Sorteou: " + n );
        }

        // ou...
        for ( int i = 0; i < 10; i++ ) {
            n = (int) ( Math.random() * 6 ) + 1;
            System.out.println( "Sorteou: " + n );
        }

    }

}

O método nextInt(int) da classe Random vai retornar um inteiro, entre 0 (inclusive) e o número passado (exclusive). No exemplo, é passado 6, então o método retornará 0, ou 1, ou 2, ou 3, ou 4, ou 5. Por isso, soma-se 1 para ajustar o intervalo.
O método random() de Math retorna um valor (double) entre 0 (inclusive) e 1 (exclusive). Para obter o intervalo desejado, multiplica-se o retorno pelo valor máximo de itens que serão gerados, converte-se o resultado em inteiro (int) e soma-se 1 para fazer o ajuste como no exemplo anterior.

[]'s

davidbuzatto

Ah, outra coisa.
Como você é novo aqui, uma dica. Não precisa colocar AJUDA no título do tópico, afinal, normalmente a gente abre um tópico para pedir ajuda. :slight_smile:

[]'s

R

olha só este post que fiz.

tb tenho um jogo mais incrementado, podes me mandar um email para conhecer :
[email removido]

olha o método do dado…

public void comUmDado() {
 //joga o dado 1
          //toca o som          
        carregarSom(1);
        tocaSom();
        
        
        
            double x = 0;
            //cria o randomico
            x = Math.random() * 6;
            x = x + 1;
            //converte para int
            int b = (int) x;
            String b11 = String.valueOf(b);

            jTdado1.setText(b11);

            //calculos    sem dado2
            jDado2.setText("");
            jDado2.setIcon(Dado0);



            if (b == 1){
                jDado1.setText("");
                jDado1.setIcon(Dado1);
            }
            if (b == 2) {
                jDado1.setText("");
                jDado1.setIcon(Dado2);
            }
            if (b == 3) {
                jDado1.setText("");
                jDado1.setIcon(Dado3);
            }
            if (b == 4) {
                jDado1.setText("");
                jDado1.setIcon(Dado4);
            }
            if (b == 5) {
                jDado1.setText("");
                jDado1.setIcon(Dado5);
            }
            if (b == 6) {
                jDado1.setText("");
                jDado1.setIcon(Dado6);
            }






            //faz a soma
            int valor1 = Integer.parseInt(jTdado1.getText());
            //int soma = valor1;
            soma = valor1;
            jTsoma.setText("" + soma);




            //coloca a label toda hora informando o que está acontecendo com os dados e casas
 if (valor1 == 1) {
                jLabelStatus2.setText("Informação: Você estava na casa " + somaTotal + " , obteve " + soma + " ponto");
            } else {
                jLabelStatus2.setText("Informação: Você estava na casa " + somaTotal + " , obteve " + soma + " pontos");
            }
            
            //somatotal
            somaTotal = somaTotal + soma;
            jogadas = jogadas + 1;
            jTjogadas.setText("" + jogadas);
            jLabelStatusCasa.setText(", e chegou na casa " + somaTotal);
           //aqui para tirar ou saber a casa ocupada...
            somaAnterior = somaTotal - soma;
            //sem comportamento automaticamente, mas se houver mudanças, acusa.
            jLabelStatus3.setText("Informação: Na casa " + somaTotal + " nao existe nenhum comportamento");
            jLabelStatus.setText("STATUS: Esta casa não tem comportamento!");
            //icone
            jComportamento.setIcon(sem);
            
               jAvancou.setIcon(normal);


}
N
fiz como o david recomendou, e funcionou
import java.util.Random;

public class JavaTeste {

    public static void main( String[] args ) {

        int n;
        Random r = new Random();

       for ( int i = 0; i < 10; i++ ) {
            n = (int) ( Math.random() * 6 ) + 1;
            System.out.println( "Sorteou: " + n );
            break;
       }
       
    }
}

só coloquei um break ali pra ele sortear uma vez só e parar, obrigado.

davidbuzatto

Oloco, não precisa do break, porque você não precisa do for.
Coloquei o exemplo do for para mostrar em execução várias vezes.
Use o que está dentro do bloco e pronto.

Criado 26 de janeiro de 2012
Ultima resposta 27 de jan. de 2012
Respostas 6
Participantes 3