-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJogo.h
87 lines (73 loc) · 2.28 KB
/
Jogo.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include "Controladores/AlDesenhosController.h"
ALLEGRO_MUTEX *mutex;
typedef struct jogo{
ALLEGRO_BITMAP* fundo;
ALLEGRO_DISPLAY *janela;
ALLEGRO_FONT *fonte;
ALLEGRO_EVENT_QUEUE *filaEventos;
ALLEGRO_TIMER *timer;
ListaDesenho *listaDesenho;
ListaDesenho *listaTiros;
ListaDesenho *listaAsteroids;
Jogador *jogador;
int largura;
int altura;
int sair;
}Jogo;
void initJogo(Jogo *novo);
Jogo *novoJogo(int w,int h);
void finaliza();
void atualiza();
Jogo *novoJogo(int w,int h){
Jogo *novo;
novo = (Jogo*) malloc(sizeof(Jogo));
novo->largura = w;
novo->altura = h;
novo->sair = 1;
return novo;
}
void initJogo(Jogo *novo){
al_init();
al_init_image_addon();
al_init_font_addon();
al_init_ttf_addon();
al_install_keyboard();
al_install_audio();
al_init_acodec_addon();
al_reserve_samples(2);
novo->timer = al_create_timer(1.0/60);
novo->listaDesenho = initListaDesenho(10);
novo->listaTiros = initListaDesenho(5);
novo->listaAsteroids = initListaDesenho(500);
novo->janela = al_create_display(novo->largura,novo->altura);
novo->filaEventos = al_create_event_queue();
novo->fonte = al_load_font("Fontes/ARCADE_I.TTF", 20, 0);
al_register_event_source(novo->filaEventos, al_get_keyboard_event_source());
al_register_event_source(novo->filaEventos, al_get_display_event_source(novo->janela));
al_register_event_source(novo->filaEventos, al_get_timer_event_source(novo->timer));
al_set_window_title(novo->janela, "Asteroids");
novo->fundo = al_load_bitmap("Sprites/bg.jpeg");
al_draw_bitmap(novo->fundo, 0, 0, 0);
al_flip_display();
al_start_timer(novo->timer);
}
void finaliza(Jogo *jogo){
al_lock_mutex(mutex);
if(jogo->listaDesenho->qt > 0){
destroyDesenho(jogo->listaDesenho);
}if(jogo->listaTiros->qt > 0){
destroyDesenho(jogo->listaTiros);
}if(jogo->listaAsteroids->qt > 0 ){
destroyDesenho(jogo->listaAsteroids);
}
al_destroy_font(jogo->fonte);
al_destroy_event_queue(jogo->filaEventos);
al_destroy_display(jogo->janela);
al_unlock_mutex(mutex);
al_destroy_mutex(mutex);
al_destroy_timer(jogo->timer);
free(jogo);
}
void atualiza(){
al_flip_display();
}