Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
CSLmath

Jogo Halma - C++

Recommended Posts

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

 

Editado por CSLmath
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×