diff --git a/t1/] b/t1/] deleted file mode 100644 index d1bb855a6614d0e4c5551c1d8411de7ad7617976..0000000000000000000000000000000000000000 --- a/t1/] +++ /dev/null @@ -1,232 +0,0 @@ -#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/libconjunto.o b/t1/libconjunto.o deleted file mode 100644 index e17c4f1925256fffe56844cb8ce222013cc543d0..0000000000000000000000000000000000000000 Binary files a/t1/libconjunto.o and /dev/null differ diff --git a/t1/libfila.o b/t1/libfila.o deleted file mode 100644 index d4c9f0629970ea1cb13f0885a42846036940d90d..0000000000000000000000000000000000000000 Binary files a/t1/libfila.o and /dev/null differ diff --git a/t1/liblef.o b/t1/liblef.o deleted file mode 100644 index 250aecd3e0c86b486ac523edce0624a72bd8197a..0000000000000000000000000000000000000000 Binary files a/t1/liblef.o and /dev/null differ diff --git a/t1/mundo b/t1/mundo deleted file mode 100755 index 8033d2a53664c1b967e4cb8ede56c7e5e249b5c4..0000000000000000000000000000000000000000 Binary files a/t1/mundo and /dev/null differ diff --git a/t1/mundo.o b/t1/mundo.o deleted file mode 100644 index 5460770afb1c88e350aa9e31063bc84ba152c2a1..0000000000000000000000000000000000000000 Binary files a/t1/mundo.o and /dev/null differ