Ir ao conteúdo
  • Cadastre-se

Jogo Halma - C++


CSLmath

Posts recomendados

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

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!