Ir ao conteúdo
  • Cadastre-se

CSLmath

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

1
  1. CSLmath

    Jogo Halma - C++

    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; } } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...