Ir ao conteúdo

Posts recomendados

Postado
#include <stdio.h>
#include <stdlib.h>

// função tem TIPO DE RETORNO, NOME, PARAMETROS, CORPO
// void: tipo sem retorno
// gerarMapa: nome
// mapa, x, y: parametros separados por virgula
 
int cont =12;
void gerarMapa(char mapa[10][10], int x, int y);
void imprimirMapa(char mapa[10][10]);
void comandarHeroi(char mapa[10][10], int *x, int *y);
void limparTela();
void congratulations();

main() {
	// variavel do mapa (matriz de caracteres)
	char mapa[10][10];
	
	// posicao do heroi
	int horizontal = 4;
	int vertical = 0;
	
	int moedas = 0;
	
	gerarMapa(mapa, horizontal, vertical);
	
	while(true) {
		imprimirMapa(mapa);
		comandarHeroi(mapa, &horizontal, &vertical);
		limparTela();
	}
}

// preenche o mapa com traços
void gerarMapa(char mapa[10][10], int x, int y) {
	for(int i = 0; i < 10; i++) {
		for(int j = 0; j < 10; j++) {
			mapa[i][j] = '-';
		}
	}
	// insere o heroi no mapa	
	mapa[x][y] = 'J';

		//insere as moedas
	mapa[0][0] = 'O';
	mapa[1][1] = 'O';
	mapa[2][2] = 'O';
	mapa[3][3] = 'O';
	mapa[4][4] = 'O';
	mapa[5][5] = 'O';
}

	
	

// imprime o mapa
void imprimirMapa(char mapa[10][10]) {
	
	for(int i = 0; i < 10; i++) {
		for(int j = 0; j < 10; j++) {
			printf("%c", mapa[i][j]);
		}
		printf("\n");
	}
	if(mapa[0][0] == 'J')cont--;
	if(mapa[1][1] == 'J')cont--;
	if(mapa[2][2] == 'J')cont--;
	if(mapa[3][3] == 'J')cont--;
	if(mapa[4][4] == 'J')cont--;
	if(mapa[5][5] == 'J')cont--;
	if(cont==0)congratulations();
	

}

void comandarHeroi(char mapa[10][10], int *x, int *y) {
	// insere o comando de andar do heroi (W A S D)
	char comando;
	scanf("%c", &comando);
	
	// remove a posicao do heroi
	mapa[*x][*y] = '-';
	
	// move o heroi
	if(comando == 'w' && *x > 0) {
		*x = *x - 1;
	} else if(comando == 's' && *x < 9) {
		*x = *x + 1;
	} else if(comando == 'a' && *y > 0) {
		*y = *y - 1;
	} else if(comando == 'd' && *y < 9) {
		*y = *y + 1;
	} else if(comando == 'q') {
		exit(0);
	}
	
	// atualiza a posicao do heroi
	mapa[*x][*y] = 'J';
}

// limpa a tela (deleta o mapa anterior)
void limparTela() {
	system("cls");
}

void congratulations(){
		system("cls");
		printf("parabens venceu");
}

 

Postado

acho que nem precisava abrir outro tópico mas enfim basta ver a valor que retorna quando encontrar a moedita então envez de decrementar como fiz você vai incrementar no contador então voce terá a quantidade

  • Obrigado 1
Postado
2 horas atrás, herbertbahia disse:

acho que nem precisava abrir outro tópico mas enfim basta ver a valor que retorna quando encontrar a moedita então envez de decrementar como fiz você vai incrementar no contador então voce terá a quantidade

#include <stdio.h>
#include <stdlib.h>

int cont=0;
int moedas;
void gerarmapa(char mapa[10][10], int x, int y);
void imprimirmapa(char mapa[10][10]);
void comandarHeroi(char mapa[10][10], int *x, int *y);
void limparTela();
void congratulations();
void contmoedas(int a,int b);

main() {
    // variavel do mapa (matriz de caracteres)
    char mapa[10][10];
    
    // posicao do heroi
    int horizontal = 4;
    int vertical = 0;
    
    int moedas = 0;
    
    gerarmapa(mapa, horizontal, vertical);
    
    
    
    while(true) {
        printf("MOEDAS: %d \n", cont);
    
        imprimirmapa(mapa);
        comandarHeroi(mapa, &horizontal, &vertical);
        limparTela();
    }
}

// preenche o mapa com traços
void gerarmapa(char mapa[10][10], int x, int y) {
    for(int i = 0; i < 10; i++) {
        for(int j = 0; j < 10; j++) {
            mapa[j] = '-';
        }
    }
    // insere o heroi no mapa    
    mapa[x][y] = 'J';

        //insere as moedas
    mapa[0][0] = 'O';
    mapa[9][0] = 'O';
    mapa[2][6] = 'O';
    mapa[8][8] = 'O';
    mapa[0][9] = 'O';
}

    void contmoedas(char mapa[10][10],int a,int b){
        for(int i=0;i<5;i++){
            mapa[a] = 'o';
            a++;
            b++;
        }
    }
    

// imprime o mapa
void imprimirmapa(char mapa[10][10]) {
    
    for(int i = 0; i < 10; i++) {
        for(int j = 0; j < 10; j++) {
            printf("%c", mapa[j]);
        }
        printf("\n");
    }
    if(mapa[0][0] == 'J')cont++;
    if(mapa[1][1] == 'J')cont++;
    if(mapa[2][6] == 'J')cont++;
    if(mapa[8][8] == 'J')cont++;
    if(mapa[0][9] == 'J')cont++;
    if(cont==5)congratulations();
    

}

void comandarHeroi(char mapa[10][10], int *x, int *y) {
    // insere o comando de andar do heroi (W A S D)
    char comando;
    scanf("%c", &comando);
    
    // remove a posicao do heroi
    mapa[*x][*y] = '-';
    
    // move o heroi
    if(comando == 'w' && *x > 0) {
        *x = *x - 1;
    } else if(comando == 's' && *x < 9) {
        *x = *x + 1;
    } else if(comando == 'a' && *y > 0) {
        *y = *y - 1;
    } else if(comando == 'd' && *y < 9) {*y = *y + 1;
    }else if(comando == 'q'){
        exit(0);
    } 
    
    if(mapa[*x][*y] == 'o'){
        cont = cont++;
    }
    
    
    // atualiza a posicao do heroi
    mapa[*x][*y] = 'J';
}

// limpa a tela (deleta o mapa anterior)
void limparTela() {
    system("cls");
}

void congratulations(){
        system("cls");
        printf("parabens voce venceu");
        exit(0);
}

 

 

 

Fiz o contador, mas tá dando um erro na contagem das moedas, tem como você dar uma olhada?! 

Postado
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include <conio.h>
#include <windows.h>

   
// função tem TIPO DE RETORNO, NOME, PARAMETROS, CORPO
// void: tipo sem retorno
// gerarMapa: nome
// mapa, x, y: parametros separados por virgula
 
int cont=0;
void gerarMapa(char mapa[10][10], int x, int y);
void imprimirMapa(char mapa[10][10]);
void comandarHeroi(char mapa[10][10], int *x, int *y);
void limparTela();
void congratulations();

main() {
	// variavel do mapa (matriz de caracteres)
	char mapa[10][10];
	
	// posicao do heroi
	int horizontal = 4;
	int vertical = 0;
	
	int moedas = 0;
	
	gerarMapa(mapa, horizontal, vertical);
	
	while(true) {
		imprimirMapa(mapa);
		comandarHeroi(mapa, &horizontal, &vertical);
		limparTela();
	}
}

// preenche o mapa com traços
void gerarMapa(char mapa[10][10], int x, int y) {
	
	for(int i = 0; i < 10; i++) {
		for(int j = 0; j < 10; j++) {
			mapa[i][j] = '-';
		}
	}
	// insere o heroi no mapa	
	mapa[x][y] = 'J';

		//insere as moedas
	mapa[1][1] = 'O';
	mapa[2][2] = 'O';
	mapa[3][3] = 'O';
	mapa[4][4] = 'O';
	mapa[5][5] = 'O';

}

// imprime o mapa
void imprimirMapa(char mapa[10][10]) {
	
	for(int i = 0; i < 10; i++) {
		for(int j = 0; j < 10; j++) {
			printf("%c", mapa[i][j]);
		}
		printf("\n");
	}
	bool j1,j2,j3,j4,j5;

	if(mapa[1][1] == 'J' &&  j1==false){
		++cont;
	j1=true;
	Beep(2000,100);
	}
	if(mapa[2][2] == 'J' &&  j2==false){
		++cont;
	j2=true;
	Beep(2000,100);
	}
	if(mapa[3][3] == 'J' &&  j3==false){
		++cont;
	j3=true;
	Beep(2000,100);
	}
	if(mapa[4][4] == 'J' &&  j4==false){
		++cont;
	j4=true;
	Beep(2000,100);
	}
	if(mapa[5][5] == 'J' &&  j5==false){
		++cont;
	j5=true;
	Beep(2000,100);
	}
	if(cont==5)congratulations();
}

void comandarHeroi(char mapa[10][10], int *x, int *y) {
	// insere o comando de andar do heroi (W A S D)
	char comando = getch();
    comando = toupper(comando);
	// remove a posicao do heroi
	mapa[*x][*y] = '-';
	//scanf("%c", &comando);
	 switch(comando){
	// move o heroi
	//printf("%c",comando);
	 case 'W':
	if( *x > 0) *x -= 1;
	break;
 	case 'S': 
	 if(*x < 9) *x +=  1;
	 break;
	  case 'A':
	 if(*y > 0) *y -= 1;
	 break;
	  case 'D':
	  if( *y < 9) *y += 1;
		break;
	 case 'Q': 
		exit(0);
}
	// atualiza a posicao do heroi
	mapa[*x][*y] = 'J';
}

// limpa a tela (deleta o mapa anterior)
void limparTela() {
	system("cls");
}

void congratulations(){
		system("cls");
		printf("parabens catou %d moedas",cont );
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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