Boas,
preciso de uma ajuda muito importante, tenho que eliminar três ou mais letras iguais num array, por exemplo como o jogo do bejeweld.
Tenho aqui este código do Tabuleiro:
[code]String [][] matriz = new String[11][6];
public void PovoarMatriz() {
matriz[1][1]=converterLetra();
matriz[1][2]=converterLetra1();
matriz[1][3]=converterLetra2();
matriz[1][4]=converterLetra3();
matriz[1][5]=converterLetra4();
matriz[2][1]=converterLetra();
matriz[2][2]=converterLetra1();
matriz[2][3]=converterLetra2();
matriz[2][4]=converterLetra3();
matriz[2][5]=converterLetra4();
matriz[3][1]=" “;
matriz[3][2]=” “;
matriz[3][3]=” “;
matriz[3][4]=” “;
matriz[3][5]=” “;
matriz[4][1]=” “;
matriz[4][2]=” “;
matriz[4][3]=” “;
matriz[4][4]=” “;
matriz[4][5]=” “;
matriz[5][1]=” “;
matriz[5][2]=” “;
matriz[5][3]=” “;
matriz[5][4]=” “;
matriz[5][5]=” “;
matriz[6][1]=” “;
matriz[6][2]=” “;
matriz[6][3]=” “;
matriz[6][4]=” “;
matriz[6][5]=” “;
matriz[7][1]=” “;
matriz[7][2]=” “;
matriz[7][3]=” “;
matriz[7][4]=” “;
matriz[7][5]=” “;
matriz[8][1]=” “;
matriz[8][2]=” “;
matriz[8][3]=” “;
matriz[8][4]=” “;
matriz[8][5]=” “;
matriz[9][1]=” “;
matriz[9][2]=” “;
matriz[9][3]=” “;
matriz[9][4]=” “;
matriz[9][5]=” “;
matriz[10][1]=” “;
matriz[10][2]=” “;
matriz[10][3]=” “;
matriz[10][4]=” “;
matriz[10][5]=” ";
}
public String desenho(){
return (" "+converterLetra()+""+converterLetra1()+""+converterLetra2()+""+converterLetra3()+""+converterLetra4()+"" +
"\n 12345\n" +
"10"+matriz[10][1]+""+matriz[10][2]+""+matriz[10][3]+""+matriz[10][4]+""+matriz[10][5]+"10\n" +
"09"+matriz[9][1]+""+matriz[9][2]+""+matriz[9][3]+""+matriz[9][4]+""+matriz[9][5]+"09\n" +
"08"+matriz[8][1]+""+matriz[8][2]+""+matriz[8][3]+""+matriz[8][4]+""+matriz[8][5]+"08\n" +
"07"+matriz[7][1]+""+matriz[7][2]+""+matriz[7][3]+""+matriz[7][4]+""+matriz[7][5]+"07\n" +
"06"+matriz[6][1]+""+matriz[6][2]+""+matriz[6][3]+""+matriz[6][4]+""+matriz[6][5]+"06\n" +
"05"+matriz[5][1]+""+matriz[5][2]+""+matriz[5][3]+""+matriz[5][4]+""+matriz[5][5]+"05\n" +
"04"+matriz[4][1]+""+matriz[4][2]+""+matriz[4][3]+""+matriz[4][4]+""+matriz[4][5]+"04\n" +
"03"+matriz[3][1]+""+matriz[3][2]+""+matriz[3][3]+""+matriz[3][4]+""+matriz[3][5]+"03\n" +
"02"+matriz[2][1]+""+matriz[2][2]+""+matriz[2][3]+""+matriz[2][4]+""+matriz[2][5]+"02\n" +
"08"+matriz[1][1]+""+matriz[1][2]+""+matriz[1][3]+""+matriz[1][4]+""+matriz[1][5]+"01\n" +
" 12345\n" +
"Pontos: ");
}[/code] PS: Não sei como hei-de mudar isso para povoar da mesma maneira. O método ConverterLetra é o seguinte:
int i = random.nextInt(3);
public String converterLetra() {
if (i == 1) {
return "v";
} else if (i == 2) {
return "a";
} else {
return "u";
}//converterLetra1,2,3 and 4 e o mesmo método
}
E o que queria saber era por exemplo poder mudar uma letra de um sitio por exemplo:
aaea
para
aaae
e esses aaa desaparecerem, se pudessem ajudar ficava muito grato !
Vlw galera
Eu não consegui entender o que tu não entendeste…
tens alguma tentativa de fazer tal “mudança” para tentar exemplificar?
Bem sei que o código está um pouco elegível mas o que quero é o seguinte:
Quando corro o jogo ele mostra-me:
vuaua
12345
10 10
09 09
08 08
07 07
06 06
05 05
04 04
03uavuv03
02auavu02
01avuau01
12345
E queria que desse para alterar a posição das letras no array, como o jogo bejeweld. O jogo mostrava a seguinte mensagem “Insira a localização da peça que quer mudar na forma “Linha”, “Coluna”:” e o utilizador metia “1 2” que era a posição da letra “a” no array.
Depois voltava a mostrar a frase “Insira o destino da peça que quer mudar na forma “Linha”, “Coluna”:” e o utilizador colocava “1 3” e o a passava para a posição [3][1] do array e como estavam os 3 a’s na vertical esses desapareciam do array, ou seja eram eliminados.
Penso que ficou + esclarecido.
Obrigado
é só você inserir em cada uma das posições do array que vc quer “limpar” algum outro valor, digamos, se for como no jogo bejeweld (se me lembro bem, é o jogo que se alinha 3 jóias iguais), você teria que fazer algo como:
matriz[1][0] = matriz[1][4];
matriz[1][1] = matriz[1][5];
matriz[1][2] = matriz[1][6];
Mas você vai ter que fazer uma lógica para identificar os repetidos, por exemplo:
for(x=0;x<matriz.length-3;x++){
if(matriz[x]==matriz[x+1] && matriz[x]==matriz[x+2])
// fazer sua lógica
}
Claro, essa provavelmente não é a forma mais eficiente de fazer isso, provavelmente você consegue pensar em alguma forma mais eficiente…
Obs: dá uma estudada também no System.arraycopy.
Edit: seu nick me lembra o Vash the Stampede de Trigun.
Certo obrigado, já compreendi, já agr como é que eu faco um metodo, como especifiquei lá em cima para trocar a posição dos elementos dentro de um array …
PS: O meu nick faz lembrar muitas coisas …
[quote=Peaceandlove]Certo obrigado, já compreendi, já agr como é que eu faco um metodo, como especifiquei lá em cima para trocar a posição dos elementos dentro de um array …
PS: O meu nick faz lembrar muitas coisas …[/quote]
Object aux = matriz[1];
matriz[1] = matriz[2];
matriz[2] = aux;
Mas quando o utilizador escolhe qual a peca para mudar, esse método deverá receber alguma variável por parametro e so ai alterar a linha que se especificou …
isso tudo aí é “problema” de lógica, se você estiver pensando orientado a objetos, deveria ter algo como no evento clique do quadro, verificar se existe algum elemento que já foi clicado anteriormente, se não existir, vai gravar qual o elemento que foi clicado agora, se existir, você vai pegar o elemento clicado agora e trocar com o que foi clicado anteriormente.
Assim, dá uma estudada melhor em lógica, porque isso que você está perguntando é tudo coisas básicas.
Pois deve ser…
Eu estou a ter pela primeira vez Orientado a Objectos e é um bocado complicado para mim…
Apresentam-me logo um jogo para fazer so que preciso de o fazer para passar … :oops:
sugiro que antes de aprender a orientação a objetos, nesse caso, comece a pensar um pouco mais orientado a eventos. A orientação a objetos é muito boa, mas me parece que está embaralhado na sua lógica é a orientação a eventos.
Tipo, tenho o evento click, começa descrevendo exatamente o que você quer que aconteça quando clicar no objeto que representa o elemento da matriz.
Mas o jogo é para ser feito em modo Consola nessa primeira fase, só depois é que posso fazer em ambiente Gráfico !
console vai ficar feio…
o usuário vai ter que digitar a posição dos arrays para trocalos…
tipo:
Digite as pessoas que deseja trocar: 3,2 - 3,3
if(tabuleiro.verificaProximidade(textoDigitado)){
tabuleiro.troca(textoDigitado);
tabuleiro.Processa_e_ImprimeTabuleiro();
}
else{
Escrever(“peças nao estão proximas”);
}
vai ficar meio feio e jogabilidade 0;
há algum problema em fazer em modo gráfico ?
Boas, não existe nenhum problema, tenho de fazer isso em duas fases
A 1ª fase consiste em fazer apenas em consola e a 2ª fase já é em modo gráfico. Porém o modo consola é que dificulta mais e é por isso que estou a pedir ajuda.
Obrigado !
EDIT: Já agora em relação a esse método do verificaProximidade poderá dar um exemplo de como devo fazer ?
Agradecia.
[quote=evefuji][quote=Peaceandlove]Certo obrigado, já compreendi, já agr como é que eu faco um metodo, como especifiquei lá em cima para trocar a posição dos elementos dentro de um array …
PS: O meu nick faz lembrar muitas coisas …[/quote]
Object aux = matriz[1];
matriz[1] = matriz[2];
matriz[2] = aux;
[/quote]
@evefuji
O seu código foi muito útil, mas já agora como é que eu mudo outra posição?
Com seu código se eu estiver ab ele vai mudar para aa mas eu queria que ele mudasse para ba agradecia muito.
EDIT: Algo desse género:
[code] public void troca(int a, int b, int c, int d){
Object aux = matriz[a][b];
Object aux1 = matriz[c][d];
matriz[a][b] = matriz[c][d];
matriz[c][d] = (String) aux;
matriz[a][b] = (String) aux1;[/code]
Em que os parâmetros que o construtor recebe com os parâmetros é a posição que o utilizador pede.
Já consegui alterar elementos dentro do array
Obrigado pela ajuda.
Só precisava de ajuda mais numa coisa que era…
Se 3 elementos do array forem iguais ele elimina e as de cima caem, se não for pedir muito agradecia e acabava o jogo com a vossa ajuda
Obrigado !
Ninguem me ajuda a eliminar elementos repetidos numa matriz ??
Por exemplo:
Se tenho uaaau fico apenas com u u e pudessem ajudar eu acabava o jogo, é que eu não sei mesmo como fazer isso.
Obrigado !