From 5a412e90910db0e5f52ef1d89b26159a8f84ce36 Mon Sep 17 00:00:00 2001 From: Pedro Folloni Pesserl <fpesserl7@gmail.com> Date: Wed, 1 Feb 2023 00:31:48 -0300 Subject: [PATCH] fix bug on future events list lib & initialize events on main list --- t1/] | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++ t1/liblef.c | 2 +- t1/liblef.o | Bin 6240 -> 6304 bytes t1/mundo | Bin 36192 -> 36616 bytes t1/mundo.c | 135 +++++++++++++++++++++++------- t1/mundo.o | Bin 14704 -> 16672 bytes 6 files changed, 340 insertions(+), 29 deletions(-) create mode 100644 t1/] diff --git a/t1/] b/t1/] new file mode 100644 index 0000000..d1bb855 --- /dev/null +++ b/t1/] @@ -0,0 +1,232 @@ +#include <stdio.h> +#include <stdlib.h> +#include <time.h> +#include <math.h> +#include "libconjunto.h" +#include "libfila.h" +#include "liblef.h" + +#define MEM_ERROR_EXIT \ + do { \ + printf("Erro: não foi possÃvel alocar memória."); \ + exit(1); \ + } while(0) + +#define CHEGADA 0 +#define SAIDA 1 +#define MISSAO 2 +#define FIM 3 + +typedef struct { + int id; + int paciencia; + int idade; + int exp; + conjunto_t *habilidades_do_heroi; +} heroi_t; + +typedef struct { + int id; + int lotacao_max; + conjunto_t *publico; + fila_t *fila; + int posx; + int posy; +} local_t; + +typedef struct { + int tempo_atual; + int tamanho_mundo; /* o mundo é um quadrado */ + int fim_do_mundo; + int n_missoes; + conjunto_t *cj_habilidades; + int n_herois; + int n_locais; + heroi_t *herois; + local_t *locais; +} mundo_t; + +/* retorna um inteiro aleatório entre a e b (inclusive) */ +int aleat(int a, int b) { + return rand() % b + 1 + a; +} + +/* retorna a distancia euclidiana entre dois locais em double */ +double distancia(local_t loc1, local_t loc2) { + int deltax = loc2.posx - loc1.posx; + int deltay = loc2.posy - loc1.posy; + int quadrado_da_distancia = deltax * deltax + deltay * deltay; + return sqrt((double)quadrado_da_distancia); +} + +int vazia_lef(lef_t *l) { + return l->Primeiro == NULL; +} + +heroi_t inicializa_heroi(int id, conjunto_t *conjunto_de_habilidades) { + heroi_t h; + + h.id = id; + h.paciencia = aleat(0, 100); + h.idade = aleat(18, 100); + h.exp = 0; + + if ( !(h.habilidades_do_heroi = cria_subcjt_cjt(conjunto_de_habilidades, aleat(2, 5))) ) + MEM_ERROR_EXIT; + + return h; +} + +local_t inicializa_local(int id, int tamanho_mundo) { + local_t l; + + l.id = id; + l.lotacao_max = aleat(5, 30); + + if ( !(l.publico = cria_cjt(l.lotacao_max)) ) + MEM_ERROR_EXIT; + + if ( !(l.fila = cria_fila()) ) + MEM_ERROR_EXIT; + + l.posx = aleat(0, tamanho_mundo-1); + l.posy = aleat(0, tamanho_mundo-1); + + return l; +} + +evento_t *cria_evento(int tempo, int tipo, int dado1, int dado2) { + evento_t *e; + if ( !(e = malloc(sizeof(evento_t))) ) + MEM_ERROR_EXIT; + + e->tempo = tempo; + e->tipo = tipo; + e->dado1 = dado1; + e->dado2 = dado2; + + return e; +} + +mundo_t *cria_mundo(lef_t *lista_de_eventos) { + mundo_t *m; + if ( !(m = malloc(sizeof(mundo_t))) ) + MEM_ERROR_EXIT; + + m->tempo_atual = 0; + m->tamanho_mundo = 20000; + m->fim_do_mundo = 34944; + m->n_missoes = m->fim_do_mundo / 100; + + const int n_habilidades = 10; + if ( !(m->cj_habilidades = cria_cjt(n_habilidades)) ) + MEM_ERROR_EXIT; + int i; + for (i = 0; i < n_habilidades; i++) + insere_cjt(m->cj_habilidades, i); + + m->n_herois = n_habilidades * 5; + m->n_locais = m->n_herois / 6; + + /* cria vetor de heróis e preenche */ + if ( !(m->herois = malloc(m->n_herois * sizeof(heroi_t))) ) + MEM_ERROR_EXIT; + for (i = 0; i < m->n_herois; i++) + m->herois[i] = inicializa_heroi(i, m->cj_habilidades); + + /* cria vetor de locais e preenche */ + if ( !(m->locais = malloc(m->n_locais * sizeof(local_t))) ) + MEM_ERROR_EXIT; + for (i = 0; i < m->n_locais; i++) + m->locais[i] = inicializa_local(i, m->tamanho_mundo); + + /* para cada herói, cria evento de chegada e insere na lef */ + /* evento_t *evento_chegada_heroi; */ + for (i = 0; i < m->n_herois; i++) { + /* evento_chegada_heroi = cria_evento(aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, n_locais-1)); */ + /* TODO: testar se funciona alocar o evento estaticamente desse jeito */ + evento_t evento_chegada_heroi = { + aleat(0, 96*7), + CHEGADA, + m->herois[i].id, + aleat(0, m->n_locais-1) + }; + if ( !(adiciona_ordem_lef(lista_de_eventos, &evento_chegada_heroi)) ) + MEM_ERROR_EXIT; + } + + /* para cada missao, cria evento e insere na lef */ + for (i = 0; i < m->n_missoes; i++) { + /* evento_chegada_heroi = cria_evento(aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, n_locais-1)); */ + /* TODO: testar se funciona alocar o evento estaticamente desse jeito */ + evento_t evento_missao = { + aleat(0, m->fim_do_mundo), + MISSAO, + i, + 0 + }; + if ( !(adiciona_ordem_lef(lista_de_eventos, &evento_missao)) ) + MEM_ERROR_EXIT; + } + + + /* cria evento de fim e insere na lef */ + /* TODO: testar se funciona alocar o evento estaticamente desse jeito */ + evento_t fim = { + m->fim_do_mundo, + FIM, + 0, + 0, + }; + if ( !(adiciona_ordem_lef(lista_de_eventos, &fim)) ) + MEM_ERROR_EXIT; + + return m; +} + +/* lef_t *inicializa_lista_de_eventos() */ + +int main() { + srand(time(0)); + + lef_t *lista_de_eventos; + if ( !(lista_de_eventos = cria_lef()) ) + MEM_ERROR_EXIT; + + mundo_t *mundo; + mundo = cria_mundo(lista_de_eventos); + printf("inicializou o mundo!\n"); + printf("tamanho do mundo: %d\n", mundo->tamanho_mundo); + printf("conjunto de habilidades do mundo:\n"); + imprime_cjt(mundo->cj_habilidades); + + int i = 0; + nodo_lef_t *exemplo = lista_de_eventos->Primeiro; + printf("eventos alocados na lef:\n"); + while (exemplo) { + printf("tempo do evento %d: %d\n", i, exemplo->evento->tempo); + i++; + exemplo = exemplo->prox; + } + + /* ciclo */ + /* retira o primeiro evento da lista_de_eventos; */ + evento_t *evento_atual; + evento_atual = obtem_primeiro_lef(lista_de_eventos); + /* atualiza o estado do sistema; */ + switch (evento_atual->tipo) { + case CHEGADA: + break; + case SAIDA: + break; + case MISSAO: + break; + case FIM: + break; + } + /* agenda os novos eventos na lista_de_eventos; */ + + lista_de_eventos = destroi_lef(lista_de_eventos); + + return 0; +} diff --git a/t1/liblef.c b/t1/liblef.c index b1a3582..aaaf468 100644 --- a/t1/liblef.c +++ b/t1/liblef.c @@ -63,7 +63,7 @@ int adiciona_ordem_lef(lef_t *l, evento_t *evento) { novo_nodo->prox = l->Primeiro; novo_nodo->evento = novo_evento; - if (novo_nodo->prox == NULL) { + if (l->Primeiro == NULL || l->Primeiro->evento->tempo > novo_nodo->evento->tempo) { l->Primeiro = novo_nodo; return 1; } diff --git a/t1/liblef.o b/t1/liblef.o index a96efd52d0df3a735ec4284cd0f4344d5ba8f4e2..250aecd3e0c86b486ac523edce0624a72bd8197a 100644 GIT binary patch delta 370 zcmaE0u)uJF24liT%_c_1&y&|MYB8Ree4Wuu@rFk?gGcLu5=oD4S1`Mqp<4jR{s0v3 zX0SX|H(8A7JL8efe9VrFj2fE*STvcKjxbH0$R);DF?kZ(B_sBAtgI!hatur?j1jCF zAgYAb07TiaI)f-ZR&R))6okj`y*Y>7i)r!>&L#XBj0_A6u6zP*OwPP)%<`MFxkQ-+ z!Gb{X3?LR_U}Q+yJdvlKk#W~%K|XmV#+1#50_q?tQb?VV@yO&xVROcW$vcJZnOK-X zu9_?$q5)$DK$uk`c8nR5cZ%3Ec1->WBr7LdirO<im|Q7p&$*HfXbTY3Og<=T&Lki- z`Io32lPbq#D=|C9(~~R3?3uoEf{nc(ros4Q@=u_E1lMFMaXTgrp~+R^c8nJ$?-U0a S_EX%RbAb@Vu-%gxMdSfI99~2K delta 304 zcmZ2r_`qO-2BX48%_c_1+mqKYYB6q@e4WvZ^MgmX1BXZJfzru(Oy3#TY*u4-WMmZB zoWY{W#I%NK@<lE&M!(6c*e-GKuVZCxV&#wAypG+AY4SJDW&8q+3=9med;)Du&b(~Q z?3-6}i82X-1%cujKrF<-$l$a2B2PUd<D$)heDX|;KAQ^#)IrotA$3N^HIoktn=>j* z{wZwF^agC#<Ny&37;^%Ixl6>3QDgE?5qrjh$(Ew_jER#gf#ib8J4Nj|C$a%;0fL~( zjAG_Y7X&9;iP<qdW}jRoX2;k$d8e2?(^gK97bXjcYcTGZY$<Nfbc1tpmAD<#3&F{| b#O)X-O#UejGR#uKo-;uRV%YA<jw12^zspsh diff --git a/t1/mundo b/t1/mundo index b53a829938eb3e6f24afc750ad1d4fd7670b46f5..8033d2a53664c1b967e4cb8ede56c7e5e249b5c4 100755 GIT binary patch delta 9616 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 Ow-!kIHn9m?9sdo6Yhnxl delta 8036 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 ZT~2*eWga1KJdvZ<G^x}*Jejr1_TLt8xtRa} diff --git a/t1/mundo.c b/t1/mundo.c index 96bf90e..33d245b 100644 --- a/t1/mundo.c +++ b/t1/mundo.c @@ -37,6 +37,8 @@ typedef struct { typedef struct { int tempo_atual; int tamanho_mundo; /* o mundo é um quadrado */ + int fim_do_mundo; + int n_missoes; conjunto_t *cj_habilidades; int n_herois; int n_locais; @@ -57,6 +59,10 @@ double distancia(local_t loc1, local_t loc2) { return sqrt((double)quadrado_da_distancia); } +int vazia_lef(lef_t *l) { + return l->Primeiro == NULL; +} + heroi_t inicializa_heroi(int id, conjunto_t *conjunto_de_habilidades) { heroi_t h; @@ -89,13 +95,28 @@ local_t inicializa_local(int id, int tamanho_mundo) { return l; } -mundo_t *cria_mundo() { +evento_t *cria_evento(int tempo, int tipo, int dado1, int dado2) { + evento_t *e; + if ( !(e = malloc(sizeof(evento_t))) ) + MEM_ERROR_EXIT; + + e->tempo = tempo; + e->tipo = tipo; + e->dado1 = dado1; + e->dado2 = dado2; + + return e; +} + +mundo_t *cria_mundo(lef_t *lista_de_eventos) { mundo_t *m; if ( !(m = malloc(sizeof(mundo_t))) ) MEM_ERROR_EXIT; m->tempo_atual = 0; m->tamanho_mundo = 20000; + m->fim_do_mundo = 34944; + m->n_missoes = m->fim_do_mundo / 100; const int n_habilidades = 10; if ( !(m->cj_habilidades = cria_cjt(n_habilidades)) ) @@ -107,63 +128,121 @@ mundo_t *cria_mundo() { m->n_herois = n_habilidades * 5; m->n_locais = m->n_herois / 6; + /* cria vetor de heróis e preenche */ if ( !(m->herois = malloc(m->n_herois * sizeof(heroi_t))) ) MEM_ERROR_EXIT; for (i = 0; i < m->n_herois; i++) m->herois[i] = inicializa_heroi(i, m->cj_habilidades); + /* cria vetor de locais e preenche */ if ( !(m->locais = malloc(m->n_locais * sizeof(local_t))) ) MEM_ERROR_EXIT; for (i = 0; i < m->n_locais; i++) m->locais[i] = inicializa_local(i, m->tamanho_mundo); - return m; -} + /* para cada herói, cria evento de chegada e insere na lef */ + /* evento_t *evento_chegada_heroi; */ + for (i = 0; i < m->n_herois; i++) { + /* evento_chegada_heroi = cria_evento(aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, n_locais-1)); */ + /* TODO: testar se funciona alocar o evento estaticamente desse jeito */ + evento_t evento_chegada_heroi = { + aleat(0, 96*7), + CHEGADA, + m->herois[i].id, + aleat(0, m->n_locais-1) + }; + if ( !(adiciona_ordem_lef(lista_de_eventos, &evento_chegada_heroi)) ) + MEM_ERROR_EXIT; + } + + /* para cada missao, cria evento e insere na lef */ + for (i = 0; i < m->n_missoes; i++) { + /* evento_chegada_heroi = cria_evento(aleat(0, 96*7), CHEGADA, m->herois[i].id, aleat(0, n_locais-1)); */ + /* TODO: testar se funciona alocar o evento estaticamente desse jeito */ + evento_t evento_missao = { + aleat(0, m->fim_do_mundo), + MISSAO, + i, + 0 + }; + if ( !(adiciona_ordem_lef(lista_de_eventos, &evento_missao)) ) + MEM_ERROR_EXIT; + } + -evento_t *cria_evento(int tempo, int tipo, int dado1, int dado2) { - evento_t *e; - if ( !(e = malloc(sizeof(evento_t))) ) + /* cria evento de fim e insere na lef */ + /* TODO: testar se funciona alocar o evento estaticamente desse jeito */ + evento_t fim = { + m->fim_do_mundo, + FIM, + 0, + 0, + }; + if ( !(adiciona_ordem_lef(lista_de_eventos, &fim)) ) MEM_ERROR_EXIT; - e->tempo = tempo; - e->tipo = tipo; - e->dado1 = dado1; - e->dado2 = dado2; - - return e; -} - -void trata_evento(evento_t evento, lef_t *lista_de_eventos) { - + return m; } /* lef_t *inicializa_lista_de_eventos() */ int main() { srand(time(0)); - const int fim_do_mundo = 34944; - const int n_missoes = fim_do_mundo / 100; + + lef_t *lista_de_eventos; + if ( !(lista_de_eventos = cria_lef()) ) + MEM_ERROR_EXIT; mundo_t *mundo; - mundo = cria_mundo(); + mundo = cria_mundo(lista_de_eventos); printf("inicializou o mundo!\n"); printf("tamanho do mundo: %d\n", mundo->tamanho_mundo); printf("conjunto de habilidades do mundo:\n"); imprime_cjt(mundo->cj_habilidades); - printf("conjunto de habilidades dos herois do mundo:\n"); - int i; - for (i = 0; i < mundo->n_herois; i++) - imprime_cjt(mundo->herois[i].habilidades_do_heroi); - - lef_t *lista_de_eventos; - if ( !(lista_de_eventos = cria_lef()) ) - MEM_ERROR_EXIT; + + int i = 0; + nodo_lef_t *exemplo = lista_de_eventos->Primeiro; + printf("eventos alocados na lef:\n"); + while (exemplo) { + printf("tempo do evento %d: %d\n", i, exemplo->evento->tempo); + printf(" tipo do evento %d: ", i); + switch (exemplo->evento->tipo) { + case CHEGADA: + printf("CHEGADA\n"); + break; + case SAIDA: + printf("SAIDA\n"); + break; + case MISSAO: + printf("MISSAO\n"); + break; + case FIM: + printf("FIM\n"); + break; + default: + printf("deu alguma coisa muito louca aqui\n"); + break; + } + i++; + exemplo = exemplo->prox; + } /* ciclo */ /* retira o primeiro evento da lista_de_eventos; */ + evento_t *evento_atual; + evento_atual = obtem_primeiro_lef(lista_de_eventos); /* atualiza o estado do sistema; */ + switch (evento_atual->tipo) { + case CHEGADA: + break; + case SAIDA: + break; + case MISSAO: + break; + case FIM: + break; + } /* agenda os novos eventos na lista_de_eventos; */ - /* (mundo->tempo_atual)++; */ lista_de_eventos = destroi_lef(lista_de_eventos); diff --git a/t1/mundo.o b/t1/mundo.o index df506fe03d7908648f8b18fbbe43f97b7dfe3f7c..5460770afb1c88e350aa9e31063bc84ba152c2a1 100644 GIT binary patch literal 16672 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 delta 5512 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 K=>+Vo%={nkHg+fg -- GitLab