Eliminar elementos array

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 :wink:

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 :smiley:
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 ?? :frowning:

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 !