Ola a todos, estou com uma duvida em chamar funções apartir de outras funções e não corresponde nada,
já vi todas as partes e não consigo decifrar o erro e alguma ideia, eu agradecia
ps: só foi postado alguma parte de codigo que tenho duvidas
#define MAX_NUM_JOGADOR 3//numero maximo de jogadores
#define MAX_NUM_BOLA 2//numero maximo de bolas para jogo
typedef struct BOLA BOLA; // tipo de dados estruturado BOLA que irá ser declarado
typedef struct JOGADOR JOGADOR; // tipo de dados estruturado JOGADOR que irá ser declarado
typedef struct CAMPO CAMPO; // tipo de dados estruturado CAMPO que irá ser declarado
struct BOLA {//cada bola
int num_bola; // contem um numero de bola
}; // Declaração da estrutura que define a bola
struct JOGADOR {//cada jogador
int num_jogador; // contem um numero de jogador
BOLA bola[MAX_NUM_BOLA]; // existem várias bolas entre uma a duas bolas
}; // Declaração da estrutura que define o jogador
struct CAMPO {//O campo
JOGADOR jogadores[MAX_NUM_JOGADOR]; // contem no maximo 5 jogadores
BOLA bolas[MAX_NUM_BOLA]; // possui no maximo 3 bolas para cada jogo
}; // Declaração da estrutura que define o campo
JOGADOR novo_jogador; /*novo jogador*/
BOLA nova_bola; /*nova bola*/
CAMPO campo;
BOLA *ptr_bola; /*apontador para nova bola*/
JOGADOR *ptr_jogador; /*apontador para novo jogador*/
CAMPO *ptr_campo; /*apontador para campo*/
void criar_jogador(void);
void criar_bola(void);
void bola_para_jogador(void);
void dar_bola_ao_jogador(int, int);
void chutar_bola_para_baliza(int, int);
// funçao para criar jogador e adicionar ao campo
void criar_jogador(void) {
int i; //identificador para incrementar criação de jogador
/* criar jogador*/
for (i = 0; i < MAX_NUM_JOGADOR; i++) {
*ptr_jogador = novo_jogador;
novo_jogador.num_jogador++; //incrementa o numero de jogador
campo.jogadores[i] = *ptr_jogador; //adicionar o jogador no campo
*ptr_campo = campo;
printf("Criando jogador %02d...\n\n", ptr_campo->jogadores[i].num_jogador + 1);
}
}
/* função criar bola*/
void criar_bola(void) {
int k; //identificador para incrementar criação de bola
for (k = 0; k < MAX_NUM_BOLA; k++) {
*ptr_bola = nova_bola;
nova_bola.num_bola++; //incrementa o numero da bola
campo.bolas[k] = *ptr_bola; //adicionar a bola no campo
*ptr_campo = campo;
printf("Criar bola %02d...\n\n", ptr_campo->bolas[k].num_bola + 1);
}
}
/*função para dar bola ao jogador escolhido aleatoriamente*/
void dar_bola_ao_jogador(int num_bola, int num_jogador){
*ptr_bola = nova_bola;
*ptr_jogador = novo_jogador;
*ptr_campo = campo;
*ptr_estatistica = estatisticas;
//se o jogador no campo que recebe a bola for igual ao jogador escolhido
if (num_jogador == ptr_campo->jogadores[num_jogador].num_jogador) {//Duvida
//a bola recebida é a mesma que está no campo
ptr_campo->jogadores[num_jogador].t_posse_bola = time(NULL); //tempo de posse bola
ptr_campo->jogadores[num_jogador].bola[num_bola].num_bola = ptr_campo->bolas[num_bola].num_bola;
printf("\tA bola %02d foi para jogador %02d na baliza %02d...\n\n",
ptr_campo->bolas[num_bola].num_bola + 1,
ptr_campo->jogadores[num_jogador].num_jogador + 1,
ptr_campo->jogadores[num_jogador].baliza.num_baliza + 1);
sleep(1);
printf("\tO jogador %02d na baliza %02d tem a bola %02d...\n\n",
ptr_campo->jogadores[num_jogador].num_jogador + 1,
ptr_campo->jogadores[num_jogador].baliza.num_baliza + 1,
ptr_campo->jogadores[num_jogador].bola[num_bola].num_bola + 1);
}
}
/*função para jogador X chutar bola para baliza de outro jogador*/
void chutar_bola_para_baliza(int num_bola, int chuta_bola) {
int trajetoria_bola;
int recebe_bola_chutada;
srand(time(NULL));
*ptr_bola = nova_bola;
*ptr_jogador = novo_jogador;
*ptr_campo = campo;
while (1) {//para teste
//Duvida -> o jogador não chuta para sua baliza
recebe_bola_chutada = rand() % MAX_NUM_JOGADOR + 1;
//jogador X tem a bola e chuta para Jogador Y -> Duvida
if (ptr_campo->jogadores[recebe_bola_chutada].num_jogador != ptr_campo->jogadores[chuta_bola].num_jogador) {
ptr_campo->jogadores[recebe_bola_chutada].bola[num_bola] = ptr_campo->jogadores[chuta_bola].bola[num_bola];
printf("\tO jogador %02d chutou a bola %02d para baliza %02d do jogador %02d...\n\n",
ptr_campo->jogadores[chuta_bola].num_jogador + 1,
ptr_campo->jogadores[chuta_bola].bola[num_bola].num_bola + 1,
ptr_campo->jogadores[recebe_bola_chutada].baliza.num_baliza + 1,
ptr_campo->jogadores[recebe_bola_chutada].num_jogador + 1);
}
}
e a minha duvida é nesta parte em chamar as funções
void dar_bola_ao_jogador(int num_bola, int num_jogador);
e
função void chutar_bola_para_baliza(int num_bola, int chuta_bola);
/* função dar bola ao jogador - aleatorio*/
void bola_para_jogador(void) {
int m, n, p, q;
int recebe_bola;
srand(time(NULL));
*ptr_bola = nova_bola;
*ptr_jogador = novo_jogador;
*ptr_campo = campo;
printf("\n\n");
printf("\t\t+====================================+\n");
printf("\t\t| INICIAR JOGO |\n");
printf("\t\t+====================================+\n\n");
for (m = 0, p = 0; m < MAX_NUM_BOLA; m++) {
recebe_bola = rand() % MAX_NUM_JOGADOR;
for (q = 0; q < MAX_NUM_JOGADOR; q++) {
if (recebe_bola == ptr_campo->jogadores[q].num_jogador) {
dar_bola_ao_jogador(m, ptr_campo->jogadores[q].num_jogador);
}
}
p++;
}
if (p == qt_bola) {
chutar_bola_para_baliza(m, ptr_campo->jogadores[recebe_bola].num_jogador);
printf("\n\n");
printf("\t\t+====================================+\n");
printf("\t\t| JOGO TERMINOU |\n");
printf("\t\t+====================================+\n\n");
}
}
Pergunta
zion33
Ola a todos, estou com uma duvida em chamar funções apartir de outras funções e não corresponde nada,
já vi todas as partes e não consigo decifrar o erro e alguma ideia, eu agradecia
ps: só foi postado alguma parte de codigo que tenho duvidas
e a minha duvida é nesta parte em chamar as funções
eis a imagem da simulação...
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.