Boa tarde!
Pessoal, eu preciso fazer um trabalho para a faculdade no qual tenho que implementar o jogo Halma em C++ (se alguém quiser saber mais sobre o jogo https://brainking.com/pt/GameRules?tp=33).
Para efetuar a jogada, a mesma tem que ser em notação algébrica, ou seja, B8E3 onde B8 é a peça, E é a linha e 3 a coluna. No momento estou na função de testar se a jogada pode ser efetuada e efetuá-la, mas na hora de ler a string da jogada, selecionar a peça e buscar ela na matriz principal, creio que o looping esteja se perdendo e selecionando outra, abaixo está o código e se precisarem da matriz eu mando também.
Alguém conseguiria me ajudar com essa questão?
Obrigado desde já!
void jogada_numeral_branco(char tabuleiro[N][M]){
int i, j, k, l, m, v, lindest, coldest, jogadabranco, aux, teste;
char branco[P];
printf("Turno das pecas brancas, qual sera seu movimento?\n");
fgets (branco,P,stdin);
branco[strlen(branco)-1]='\0';
for (i=0; branco[i]!='\0'; i++){
if (i==0){
if (toupper(branco[i])-'B'!=0){ //Teste se a peça é branca
printf ("Peca invalida, tente novamente\n");
jogada_numeral_branco(tabuleiro);
} else {
i++;
}
}
if (i==1){
teste=branco[i]-'0';
if (teste<0 || teste>9){ //Teste se a peça é válida
printf ("Numero de peca invalido, tente novamente\n");
jogada_numeral_branco(tabuleiro);
}
for (j=0; j<N; j++){
for (k=0; k<M; k++){
if (tabuleiro[j][k]==branco[i]){
aux=branco[i];
}
break;
}
break;
}
i++;
}
lindest=toupper(branco[i])-'A';
if (lindest<0 || lindest>7){ //Teste se a linha é válida no tabuleiro
if (i>4){
printf ("Linha para salto invalida, sua jogada foi efetuada ate o salto anterior\n");
return;
} else {
printf ("Linha de destino invalida, tente novamente\n");
jogada_numeral_branco(tabuleiro);
}
}
i++;
coldest=branco[i]-'1';
if (coldest<0 || coldest>7){ //Teste se a coluna é válida no tabuleiro
if (i>4){
printf ("Coluna para salto invalida, sua jogada foi efetuada ate o salto anterior\n");
return;
} else {
printf ("Coluna de destino invalida, tente novamente\n");
jogada_numeral_branco(tabuleiro);
}
} else if (tabuleiro[lindest][coldest]!='-'){ //Teste se a casa está vazia
if (i>4){
printf ("Casa para salto ocupada, sua jogada foi efetuada ate o salto anterior\n");
return;
} else {
printf ("Casa ocupada, tente novamente\n");
jogada_numeral_branco(tabuleiro);
}
} else {
tabuleiro[j][k]='-';
tabuleiro[lindest][coldest]=aux;
continue;
}
}
}