distribuição de peças num jogo da memória

Olá, estou criando um jogo da memória em swing, usando grid de botões…
então na hora de armazenar as imagens estou colocando assim:

for (int i=0; i<botoes.length; i++){ if (e.getSource().equals(botoes[i])){ if(i <= 5) { imagens[i] = new ImageIcon(i + 4 + ".gif"); botoes[i].setIcon(imagens[i]); botoes[i].setVisible(true); } if(i > 5) { int aux; aux = i - 6; imagens[i] = new ImageIcon(aux + 4 + ".gif"); botoes[i].setIcon(imagens[i]); botoes[i].setVisible(true); }

é uma grade com 12 botões, então por exemplo, o botão 0, equivale ao 6 e assim por diante… na comparação para virar as peças iguais e as diferentes, faço de acordo com o botão… if(botoes[clique1] == botoes[clique2]) ele forma o par.
só que, na apresentação as imagens já tem lugar pré-definido, porém eu queria fazer com que, cada vez que iniciasse o jogo, as imagens ficassem num lugar diferente, tem como me ajudar? não sei se conseguir me expressar bem, nem se mandei código suficiente para isso :B mas, agradeço -

Procure por Collections.shuffle ( http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#shuffle(java.util.List) )

oi gosto deste topico e disto aí. é o seguinte já fiz um jogo esta em www.raghyjose.net/memoria.php

e tambem estava pensando em fazer isto, afinal as peças nunca movem de lugar, acho que teria que mudar toda a lógica, e deixei este projeto para depois.

acho que vc mandou pouco codigo, pode mandar tudo… o meu todo esta naquele link, pode ser pra o meu email, raghy30@hotmail.com ou raghy@ig.com.br

aí com tudo, eu ajudo ou observo. valeu. olha o meu e opina ok?

O problema o Collections.shuffle é que ele faz o embaralhamento em estruturas de uma dimensão apenas.
Eu usaria uma array bidimensional (matriz) para montar meu tabuleiro.
Para embaralhar uma matriz, você pode fazer assim:

  • Inicialize a matriz com todos os elementos desejados, na ordem que você quiser.
  • Itere pela matriz, elemento por elemento, fazendo a troca do valor do elemento atual por um elemento de uma posição aleatória.

Em um array de uma dimensão, o código seria assim:

[code]import java.util.Random;

.
.
.

int[] array = { 1, 2, 3, 4, 5, 6, 7 };
Random r = new Random();
int temp = 0;
int p = 0;

for ( int i = 0; i < array.length; i++ ) {

// obtém um número no intervalo [ 0 ; array.length ), ou seja, 
// fechado em 0, aberto no tamanho do array
p = r.nextInt( array.length );

// faz a troca
temp = array[i];
array[i] = array[p];
array[p] = temp;

}[/code]
Agora você só precisa aplicar o mesmo algoritmo para mais uma dimensão.

[]´s

é usar o randomico é uma boa. aí o negócio é saber qual é o número ou a posição de cada peça, diríamos assim… e através disto, localiza-la… onde quer que esteja… uma peça como um número pode ser uma boa… é como um nome dela. veja meu jogo de poker, cada carta tem um número, onde quer que ela apareça, eu acho ela através do número e faço os calculos…

atraves das combinações, tambem tenho pronto os jogos, parj = true

park = true…

sempre há várias formas de se fazer uma mesma coisa.

www.raghyjose.net/pokercodigo.php

[quote=davidbuzatto]O problema o Collections.shuffle é que ele faz o embaralhamento em estruturas de uma dimensão apenas.
[/quote]
A lista de peças é também uma estrutura de uma dimensão. Podem ser embaralhadas e depois distribuídas pela grelha.

[quote=pmlm][quote=davidbuzatto]O problema o Collections.shuffle é que ele faz o embaralhamento em estruturas de uma dimensão apenas.
[/quote]
A lista de peças é também uma estrutura de uma dimensão. Podem ser embaralhadas e depois distribuídas pela grelha.[/quote]
Eu sei, eu entendi isso :wink:
Dei o exemplo de uma matriz pq a estrutura se parece mais com o tabuleiro.

[]´s