Ir ao conteúdo
  • Cadastre-se

aquafoxbr

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

1
  1. E aí, pessoal? Beleza? Sou iniciante em C e tô tendo que fazer um trabalho. O trabalho é o seguinte: faça um jogo no estilo pac-man, onde os ''x'' sao obstáculos, os ''-'' são os espaços livres no mapa e os ''T'' são os objetivos. Você é a bolinha ''O''. Minha intenção é a seguinte: a cada vez que o jogador coletar o T, contar o score. Sei que é conveniente usar um contador, definindo-o como 0 no início e fazendo ''contador++'' a cada T coletado. O único problema é: não sei onde colocar esse contador. Alguém me ajuda? Aqui segue o jogo: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> int ibol, jbol; char** criarMatriz(int lin, int col){ char** m; int i; m = (char **)malloc(lin * sizeof(char *)); for(i=0;i<lin;i++){ m = (char*)malloc(col * sizeof(char)); } return m; } void preencherMatriz(char **mat, int lin, int col){ int i, j; for(i=0;i<lin;i++){ for(j=0;j<col;j++){ mat[j] = '-'; } } mat[lin/2][col/2] = 'O'; ibol = lin / 2; jbol = col / 2; } void addobstaculos (char** m, int lin, int col, int obst){ int k, i, j; for(k=0;k<obst;k++){ do{ i = rand () % lin; j = rand () % col; }while(m[j] == 'X' || ((i==lin/2) && (j == col/2))); m[j] = 'X'; } } void addobjetivo(char** m, int lin, int col){ int i, j; do{ i = rand () % lin; j = rand () % col; }while((m[j] == 'X') || (m[j] == 'O') || (m[j] == 'T')); m[j] = 'T'; } void imprimirmatriz(char** mat, int lin, int col){ int i, j; for(i=0;i<lin;i++){ for(j=0;j<col;j++){ printf("%c ", mat[j]); } printf("\n"); } } int letravalida(char op){ if(op == 'w'){ return 1; } if(op == 'a'){ return 1; } if(op == 's'){ return 1; } if(op == 'd'){ return 1; } if(op == 'W'){ return 1; } if(op == 'A'){ return 1; } if(op == 'S'){ return 1; } if(op == 'D'){ return 1; } return 0; } int aplicamovimento(char** mat,int lin,int col,char op){ if((op == 'w') || (op == 'W')){ if(ibol == 0){ return 0; } if(mat[ibol-1][jbol] == 'X'){ return 0; } if(mat[ibol-1][jbol] == 'T'){ addobjetivo(mat,lin,col); } mat[ibol-1][jbol] = 'O'; mat[ibol][jbol] = '-'; ibol--; return 1; } if((op == 's') || (op == 'S')){ if(ibol == 19){ return 0; } if(mat[ibol+1][jbol] == 'X'){ return 0; } if(mat[ibol+1][jbol] == 'T'){ addobjetivo(mat,lin,col); } mat[ibol+1][jbol] = 'O'; mat[ibol][jbol] = '-'; ibol++; return 1; } if((op == 'a') || (op == 'A')){ if(jbol == 0){ return 0; } if(mat[ibol][jbol-1] == 'X'){ return 0; } if(mat[ibol][jbol-1] == 'T'){ addobjetivo(mat,lin,col); } mat[ibol][jbol-1] = 'O'; mat[ibol][jbol] = '-'; jbol--; return 1; } if((op == 'd') || (op == 'D')){ if(jbol == 19){ return 0; } if(mat[ibol][jbol+1] == 'X'){ return 0; } if(mat[ibol][jbol+1] == 'T'){ addobjetivo(mat,lin,col); } mat[ibol][jbol+1] = 'O'; mat[ibol][jbol] = '-'; jbol++; return 1; } } int main(){ char **mat, op, lixo, m, contagemt; int lin=20, col=20, escolha; srand(time(NULL)); printf("SEJA BEM-VINDO AO POC-MON\n\n\n"); printf(" MENU INICIAL\n"); printf(" 1. Novo jogo\n"); printf(" 2. Visualizar ultimas jogadas\n"); printf(" 3. Sair\n"); scanf("%d", &escolha); scanf("%c", &lixo); if(escolha == 1){ mat = criarMatriz(lin,col); preencherMatriz(mat, lin, col); addobstaculos(mat, lin, col,10); addobjetivo (mat, lin, col); imprimirmatriz(mat, lin, col); while(1){ printf("info movimento: "); scanf("%c", &op); scanf("%c", &lixo); if(letravalida(op)){ if(aplicamovimento (mat, lin, col, op)){ imprimirmatriz(mat, lin, col); }else{ printf("Movimento invalido\n"); } }else{ printf("letra invalida\n"); } } }else{ if(escolha == 3){ exit(1); } } return 0; }

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