Fala galera, estou com um problema e necessito de ajuda. Preciso fazer um jogo para uma atividade da faculdade, um jogo simples, estou fazendo cursos sobre java e então decidi utilizar essa linguagem. Estou tentando fazer um quiz, porém não quero que ele tenha as mesmas perguntas na mesma ordem toda a vez que for executado. Então, queria que sempre as perguntas se embaralhassem e fosse mostradas em ordens diferentes de acordo com cada pessoa que jogar. Estou a muitos dias quebrando a cabeça pois não sei uma maneira de conseguir fazer isso (nada que faço funciona da maneira que quero), lembrando, sou iniciante na linguagem e estou realmente bem no começo dos estudos. Peço por gentileza se alguém pode me ajudar com isso e ficarei muito grato.
String[] perguntas = {
"pergunta 1",
"pergunta 2",
"pergunta 3",
"pergunta 4",
"pergunta n"
};
// embaralha
for ( int i = 0; i < perguntas.length; i++ ) {
// sorteia uma posição "aleatória" entre 0 (inclusive) e o tamanho do array (exclusive)
int p = (int) ( Math.random() * perguntas.length );
// troca o valor da posição sorteada com a posição i
String t = perguntas[i];
perguntas[p] = perguntas[i];
perguntas[i] = t;
}
// a partir daqui, as perguntas no array de perguntas
// estão ambaralhadas.
Se suas perguntas estiverem numa lista, basta usar o método shuffle
da classe Collections
:
List<String> perguntas = new ArrayList<>();
perguntas.add( "pergunta 1" );
perguntas.add( "pergunta 2" );
perguntas.add( "pergunta 3" );
perguntas.add( "pergunta 4" );
perguntas.add( "pergunta n" );
Collections.shuffle( perguntas );
// aqui as perguntas estarão embaralhadas
E com isso, como que eu faço para que essas perguntas não se repitam? Para não acontecer da pessoa responder e quando passar para a seguinte aparecer uma que já tenha respondido. Ou dessa maneira elas já não se repetirão?
Vc precisa controlar a pergunta atual e ir incrementando.
Pela sua pergunta, tenho a impressão que vc ainda não domina coisas mais básicas.
Recomendo que estude mais.
Tenho um curso gratuíto de Java caso queira dar uma olhada:
Ainda estou gravando as aulas, mas já tem bastante coisa, principalmente as que vc mais precisa no momento.
Obrigado pela recomendação! Vou assistir o curso completo e adquirir mais conhecimento.