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