Como faço para trocar a letra da posição anterior e posterior.
Se é b passa a ser c
Se é c passa a ser b
mas isso dois lados
Ex;
c b b
quero que depois do if
fique
c=b
b=0 ou vazio,
b= c;
[code] public void joga (){
int quantViradas =0;
int quantFichasB =0;
int numRodadas = 0;
String fichas = “bcccbbc”;
int[] viradas = new int[quantViradas]; // array de quant. que as fichas viraram
int[] rodadas = new int[numRodadas]; // quant. de rodadas
for (int i=0; i< fichas.length(); i++){
char b = fichas.charAt(0);
if (b == 'b')
quantFichasB++;
viradas[i]= 0;
if (b=='c')
viradas[i]= 1;
if(quantFichasB%2==0)
continue;
//começo do jogo : vai tirando todas as fichas até terminar o jogo
for (int j=0; i< fichas.length(); j++){
if (b == 'b')
quantFichasB = fichas.length()-1;
if (fichas.charAt(j-1)=='b')
fichas[j]= 'c';
else
fichas[j]= 'b';
if (fichas.charAt(j+1)=='b')
fichas[j]= 'c';
else
fichas[j]= 'b';
if (fichas.charAt(j+1)== 0) //aqui é se não tem nada na posição
fichas[j]= 0;
viradas[j] = j+1; // array de quant. que as fichas viraram e vai incrementando até acabar as fichas
rodadas[j] = j+1; // conta uma rodada do jogo
}
}
[code] public void joga (){
int quantViradas =0;
int quantFichasB =0;
int numRodadas = 0;
char a,c;
String fichas = “bcccbbc”;
String novasFichas ="";
int[] viradas = new int[quantViradas]; // array de quant. que as fichas viraram
int[] rodadas = new int[numRodadas]; // quant. de rodadas
for (int i=0; i< fichas.length(); i++){
char b = fichas.charAt(0);
if (b == 'b')
quantFichasB++;
viradas[i]= 0;
if (b=='c')
viradas[i]= 1;
if(quantFichasB%2==0)
continue;
//começo do jogo : vai tirando todas as fichas até terminar o jogo
for (int j=0; i< fichas.length(); j++){
if (b == 'b')
quantFichasB = fichas.length()-1;
if (fichas.charAt(j-1)=='b')
fichas.equals(b)=fichas[j].replace(b, c);
else
fichas[j]= 'b';
if (fichas.charAt(j+1)=='b')
fichas[j]= 'c';
else
fichas[j]= 'b';
if (fichas.charAt(j+1)== 0) //aqui é se não tem nada na posição
fichas[j]= 0;
viradas[j] = j+1; // array de quant. que as fichas viraram e vai incrementando até acabar as fichas
rodadas[j] = j+1; // conta uma rodada do jogo
}
}
testei o código aqui ele ele dá erro no comando setChatAt
o que poderia ser?[/quote]
Olá jo83,
O erro está acontecendo pois o método [color=red]setChatAt()[/color] não existe o correto é [color=green]setCharAt()[/color]. Pode ter ocorrido um erro quando você digitou o código.
E lembre-se, esse método é da classe StringBuffer.
[color=red]EDIT:[/color] A propósito, de que jogo se trata? Tem as regras do mesmo para me passar?
tem fichas b e c
só pode tirar as b
quando tiro uma b a anterior e posterior trocam.
Ex.
cbc
depois que eu tiro abranca tem que ficar
b0b
é como se invertesse.
o 0 que coloquei é para sinbolizar vazio.
Mas bem, agora consegui fazer reconhecer o comando mas dá erro de indice.
Como faço para ele me retornar o resultado?
[code] public void joga (){
int quantViradas =0;
int quantFichasB =0;
int totalFichas=0;
int numRodadas = 0;
char a,c;
StringBuffer fichas = new StringBuffer (“bbbbcc”);
char b = fichas.charAt(0);
int[] viradas = new int[quantViradas]; // array de quant. que as fichas viraram
int[] rodadas = new int[numRodadas]; // quant. de rodadas
for (int i=0; i< fichas.length(); i++){
if (fichas.charAt(i)=='b')
quantFichasB++;
}
if(quantFichasB%2==1)
System.out.println( "Jogo sem solução");
else
System.out.println( "Iniciando jogo");
for (int i=0; i< fichas.length(); i++){
if (fichas.charAt(i)=='b')
fichas.setCharAt(i, '0');
if(fichas.charAt(i-1) == 'c')
fichas.setCharAt(i-1, 'b');
else
fichas.setCharAt(i-1, 'c');
if(fichas.charAt(i+1) == 'c')
fichas.setCharAt(i+1, 'b');
else
fichas.setCharAt(i+1, 'c');
System.out.println(fichas);
}
}
}[/code]
Mas se for seguir a sua regra, ainda tem acertar uma coisa, pois estão trocando as letras independente de a do meio ser ‘b’ ou ‘c’.
Para mudar só se for ‘b’, vc tem descomentar as linhas 21 e 33 DO CODIGO ABAIXO, para libetar as chaves “{}” e expandir o bloco do IF que verifica se a posição atual é igual a ‘b’.
Outra coisa, não sei o que é para ser feito com as posições que ganharam ‘0’, então não não fiz nada com os zeros, porém acredito que tenha mais alguma coisa para fazer com eles…
De onde vc tirou esse jogo? É um jogo de cartas de baralho? Se puder, fale um pocuo sobre ele.
[code] public joga (){
int quantViradas =0;
int quantFichasB =0;
int totalFichas=0;
int numRodadas = 0;
char a,c;
StringBuffer fichas = new StringBuffer (“bbbbcc”);
char b = fichas.charAt(0);
int[] viradas = new int[quantViradas]; // array de quant. que as fichas viraram
int[] rodadas = new int[numRodadas]; // quant. de rodadas
for (int i=0; i< fichas.length(); i++){
if (fichas.charAt(i)=='b')
quantFichasB++;
}
if(quantFichasB%2==1)
System.out.println( "Jogo sem solução");
else
System.out.println( "Iniciando jogo");
for (int i=0; i< fichas.length(); i++){
if (fichas.charAt(i)=='b') // { //Se mudar apenas se for 'b'
fichas.setCharAt(i, '0');
if(i>0) // Se posição maior que 0, pois não pode alterar posição -1
if(fichas.charAt(i-1) == 'c')
fichas.setCharAt(i-1, 'b');
else if(fichas.charAt(i-1) == 'b')
fichas.setCharAt(i-1, 'c');
if(i<fichas.length()-1) // Se posição menor que última, pois não pode alterar posição depois da última hehehe
if(fichas.charAt(i+1) == 'c')
fichas.setCharAt(i+1, 'b');
else if(fichas.charAt(i+1) == 'b')
fichas.setCharAt(i+1, 'c');
//} // Se mudar apenas caso for 'b'
System.out.println(fichas);
}
}[/code]