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 -
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.
é 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.
[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
Dei o exemplo de uma matriz pq a estrutura se parece mais com o tabuleiro.