Me ajudem por favor - embaralhar cartas

6 respostas
S

olá, por favor estou precisando de um codigo para embaralhar cartas de um jogo da memoria. por favor, me ajudem como faço para embaralhar???

6 Respostas

R

Você pode usar a classe Math com o método random(), que te retorna um número maior ou igual a 0.0 e menor que 1.0.

Se quiser um número de 0 a 100 pode fazer 100*Math.random().

Você numera cada carta com um código e depois gera uma lista com números utilizando a classe que te falei.

T

Existe um método na classe java.util.Collections chamado “shuffle” (embaralhar) que faz exatamente o que você quer.

T

http://leepoint.net/notes-java/algorithms/random/random-shuffling.html

M

Cara …

Não estou querendo te dar tudo de mão beijada, mas como já tenho algo pronto em um projeto que estou tocando, segue as classes que faz o que vc está querendo.
Só peço para vc manter a autoria das classes que vc usar, pois este projeto é um jogo de celular que em breve será lançado. Segue projeto eclipse para as classes de lógica.

Abraço,

L

deitel sexta edição com essa questao… ele utilizou array!!

J

Olá.

Eu precisei fazer um jogo desses de memória para uma amiga da internet e quebrei um pouco a cabeça para embaralhar o array mas, depois descobri uma maneira muiiito fácil de fazer isso.

Se as cartas estão em um array :

public void embaralhar(Carta cartas[])
{
      
      for(int i=0 ; i <  cartas.length ; i++)
     {

          //Sorteia dois indexs para serem trocados
          int index1=Math.random()*cartas.length;
          int index2=Math.random()*cartas.length;
      
          //Inverte os valores 
         Carta tmp=cartas[index1];
         cartas[index1]=cartas[index2];
         cartas[index2]=tmp;
     
      }


}

Acho que esse é o algoritmo mais simples possível para fazer isso.

Boa sorte!

Criado 6 de julho de 2006
Ultima resposta 7 de jul. de 2006
Respostas 6
Participantes 6