2#include <stdio.h>
3#include <stdlib.h>
4#include <allegro5/allegro5.h>
5#include <allegro5/allegro_font.h>
6#include <allegro5/allegro_image.h>
7#include <allegro5/allegro_audio.h> // biblioteca de som
8#include <allegro5/allegro_acodec.h> // biblioteca complementar para o som
9#include <allegro5/allegro_primitives.h> // permite colocar formas simples, linhas, pontos, etc. (formas primitivas)
10#include <allegro5/allegro_ttf.h> //Para as TTF FONTS
11
12//GAME STATES, informamos o "status" do jogo
13#define STATE_START 1
14#define STATE_PRESSED_BURACO 2
15#define STATE_PRESSED_PULA_BURACO 3
16#define STATE_PRESSED_CAI_BURACO 4
17#define STATE_PRESSED_MACHUCADO_DESCANSA_OU_CORRE 5
18#define STATE_PRESSED_SONO_DESCANSA_OU_CORRE 6
19#define STATE_PRESSED_MACHUCADO_CORRE 7
20#define STATE_PRESSED_MACHUCADO_DESCANSA 8
21#define STATE_PRESSED_GAME_OVER 9
22#define STATE_PRESSED_SONO_CORRE 10
23#define STATE_PRESSED_SONO_DESCANSA 11
24#define STATE_PRESSED_CAI_BURACO_AJUDA 12
25#define STATE_PRESSED_CAI_BURACO_CORRE 13
26#define STATE_PRESSED_CAI_BURACO_CORRE_RAPIDO 14
27#define STATE_PRESSED_CAI_BURACO_CAVANDO 15
28#define STATE_PRESSED_CAI_BURACO_CAVANDO_CORRE 16
29#define STATE_PRESSED_CAI_BURACO_CAVANDO_AGUA 17
30#define STATE_CORRE 18
31#define STATE_ABRIGO 19
32
33int gameState
= STATE_START
; //Definimos o STATE de início
34
35
36char text
[255] = " PRESSIONE ENTER PARA COMEÇAR O JOGO";
37char text1
[255] = "";
38char text2
[255] = "";
39char text3
[255] = "@ TODOS DIREITOS RESERVADOS AO DINO PESCOÇUDO @";
40
41void must_init
(bool test,
const char *description
){
42 if(test
) return;
43
44 printf("couldn't initialize %s\n", description
);
45 exit(1);
46}
47
48int main
(){
49 must_init
(al_init(),
"allegro"); // auxilia o must_init(), evitar de colocar instruções a mais par averificar erros.
50 must_init
(al_install_keyboard(),
"keyboard");
51 must_init
(al_install_mouse(),
"mouse"); // instalando o mouse (opcional), mas não o estamos utilizando
52
53 ALLEGRO_TIMER* timer
= al_create_timer(1.
0 / 30.
0);
54 must_init
(timer,
"timer");
55
56 ALLEGRO_TIMER* gameOverTimer
= al_create_timer(3); //Game Over timer vai durar 3 segundos
57 must_init
(gameOverTimer,
"gameOverTimer");
58
59 ALLEGRO_EVENT_QUEUE* queue
= al_create_event_queue();
60 must_init
(queue,
"queue");
61
62 // Permite que as formas e linhas tenham maior definição, deixar mais suave.
63 al_set_new_display_option(ALLEGRO_SAMPLE_BUFFERS,
1, ALLEGRO_SUGGEST
); // imagem suave
64 al_set_new_display_option(ALLEGRO_SAMPLES,
8, ALLEGRO_SUGGEST
); // imagem suave
65 al_set_new_bitmap_flags(ALLEGRO_MIN_LINEAR
| ALLEGRO_MAG_LINEAR
); // imagem suave
66
67 ALLEGRO_DISPLAY* disp
= al_create_display(1250,
800);
68 must_init
(disp,
"display");
69
70 // Configuração de fontes, tamanhos etc.
71 must_init
(al_init_font_addon(),
"font"); //WE NEED TO INIT FONT FIRST!
72 must_init
(al_init_ttf_addon(),
"ttf font"); //THEN WE NEED TO INIT TTF FONTS
73 ALLEGRO_FONT* font = al_load_ttf_font("Antonio-Bold.ttf",
25, ALLEGRO_ALIGN_LEFT
); //NOW WE CAN CHOOSE SIZE
74 ALLEGRO_FONT* font1
= al_load_ttf_font("Antonio-Bold.ttf",
25, ALLEGRO_ALIGN_LEFT
);
75 ALLEGRO_FONT* font2
= al_load_ttf_font("Antonio-Bold.ttf",
25, ALLEGRO_ALIGN_LEFT
);
76 ALLEGRO_FONT* font3
= al_load_ttf_font("Antonio-Bold.ttf",
8, ALLEGRO_ALIGN_LEFT
);
77
78
79 must_init
(al_init_primitives_addon(),
"primitives"); // Para inserir linhas, formas e pontos no código. Não utilizamos
80
81 al_start_timer(timer
);
82 al_register_event_source(queue,
al_get_keyboard_event_source());
83 al_register_event_source(queue,
al_get_display_event_source(disp
));
84 al_register_event_source(queue,
al_get_timer_event_source(timer
));
85 al_register_event_source(queue,
al_get_mouse_event_source()); // adicionado para o mouse funcionar
86
87 // IMAGENS
88 must_init
(al_init_image_addon(),
"image addon");
89 ALLEGRO_BITMAP* apresentacao
= al_load_bitmap("apresentacao.png");
90 must_init
(apresentacao,
"apresentacao");
91
92 ALLEGRO_BITMAP* pula_ignora
= al_load_bitmap("pula_ignora.png");
93 must_init
(pula_ignora,
"pula_ignora");
94
95 ALLEGRO_BITMAP* pulando
= al_load_bitmap("pulando.png");
96 must_init
(pulando,
"pulando");
97
98 ALLEGRO_BITMAP* no_buraco
= al_load_bitmap("no_buraco.png");
99 must_init
(no_buraco,
"no_buraco");
100
101 ALLEGRO_BITMAP* correndo
= al_load_bitmap("correndo.png");
102 must_init
(correndo,
"correndo");
103
104 ALLEGRO_BITMAP* descansando
= al_load_bitmap("descansando.png");
105 must_init
(descansando,
"descansando");
106
107 ALLEGRO_BITMAP* bebendo_agua
= al_load_bitmap("bebendo_agua.png");
108 must_init
(bebendo_agua,
"bebendo_agua");
109
110 ALLEGRO_BITMAP* abrigo
= al_load_bitmap("abrigo.png");
111 must_init
(abrigo,
"abrigo");
112
113 ALLEGRO_BITMAP* game_over
= al_load_bitmap("game_over.png");
114 must_init
(game_over,
"game_over");
115
116 ALLEGRO_BITMAP* pedindo_ajuda
= al_load_bitmap("pedindo_ajuda.png");
117 must_init
(pedindo_ajuda,
"pedindo_ajuda");
118
119 ALLEGRO_BITMAP* planta
= al_load_bitmap("planta.png");
120 must_init
(planta,
"planta");
121
122 ALLEGRO_BITMAP* saiu_buraco
= al_load_bitmap("saiu_buraco.png");
123 must_init
(saiu_buraco,
"saiu_buraco");
124
125 // adicionando o audio ao jogo
126 must_init
(al_install_audio(),
"audio");
127 must_init
(al_init_acodec_addon(),
"audio codecs");
128 must_init
(al_reserve_samples(16),
"reserve samples");
129
130 // para música longa, música tema do jogo
131 ALLEGRO_AUDIO_STREAM* music
= al_load_audio_stream("music.opus",
2,
2048); // os números são referentes as áreas da memoria onde a musica sera armazenada. não mudar
132 must_init
(music,
"music");
133 al_set_audio_stream_playmode(music, ALLEGRO_PLAYMODE_LOOP
); // música em loop
134 al_attach_audio_stream_to_mixer(music,
al_get_default_mixer()); // linha para o som sair
135
136 bool done
= false;
137 bool redraw
= false;
138 ALLEGRO_EVENT event
;
139
140 #define KEY_SEEN 1
141 #define KEY_RELEASED 2
142
143 unsigned char key[ALLEGRO_KEY_MAX
];
144 memset(key,
0,
sizeof(key));
145 al_hide_mouse_cursor(disp
);
146
147
148
149 while(1){
150 al_wait_for_event(queue,
&event
);
151
152 switch(event.type
)
153 {
154 case ALLEGRO_EVENT_TIMER:
155 {
156 redraw
= true;
157
158 if(gameState
== STATE_PRESSED_GAME_OVER
&& al_get_timer_count(gameOverTimer
) > 0) //CASO STATE SEJA GAME OVER
159 {
160 sprintf(text,
"%s",
"RECOMEÇANDO O JOGO");
161 gameState
= STATE_START
;
162
163 //RESET O GAME OVER TIMER!
164 al_stop_timer(gameOverTimer
);
165 al_set_timer_count(gameOverTimer,
0);
166 }
167
168 break;
169 }
170
171 case ALLEGRO_EVENT_KEY_CHAR:
172 {
173 if(event.keyboard.keycode
== ALLEGRO_KEY_ENTER
&& gameState
== STATE_START
) //OK
174 {
175 sprintf(text,
"%s",
" EM UM DIA QUALQUER, DINO PERCEBE UM METEORO VINDO EM SUA DIREÇÃO E COMEÇA A FUGIR.");
176 sprintf(text1,
"%s",
" APÓS UM TEMPO CORRENDO, DINO VÊ UM BURACO NO SEU CAMINHO.");
177 sprintf(text2,
"%s",
" O QUE DINO DEVE FAZER: PULAR (A) OU TENTAR CONTORNAR O BURACO (B)?");
178 sprintf(text3,
"%s",
"");
179 gameState
= STATE_PRESSED_BURACO
;
180
181 }
182 // PULA BURACO
183 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_BURACO
) //OK
184 {
185 sprintf(text,
"%s",
" DINO PULOU O BURACO, MAS MACHUCOU A PATINHA!!! ");
186 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
187 sprintf(text2,
"%s",
" CONTINUAR CORRENDO (A), MESMO MACHUCADO, OU COMER UMA PLANTA MEDICINAL PARA PASSAR A DOR (B)?");
188 sprintf(text3,
"%s",
"");
189 gameState
= STATE_PRESSED_PULA_BURACO
;
190 }
191
192 // DINO PULA BURACO E CORRE
193 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_PULA_BURACO
) //OK ....
194 {
195 sprintf(text,
"%s",
" DINO, MESMO MACHUCADO, CONTINUOU CORRENDO. ENTRETANTO, ESTÁ CORRENDO MUITO DEVAGAR!");
196 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
197 sprintf(text2,
"%s",
" CONTINUAR CORRENDO MACHUCADO (A) OU DESCANSAR PARA SARAR A PATINHA (B)?");
198 sprintf(text3,
"%s",
"");
199 gameState
= STATE_PRESSED_MACHUCADO_DESCANSA_OU_CORRE
;
200 }
201
202 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_MACHUCADO_DESCANSA_OU_CORRE
) //OK
203 {
204 sprintf(text,
"%s",
" DINO CONTINUOU CORRENDO, MAS ESTÁ DEVAGAR DEVIDO A PATA MACHUCADA. E O METEORO ESTÁ MAIS PRÓXIMO!");
205 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
206 sprintf(text2,
"%s",
" CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
207 sprintf(text3,
"%s",
"");
208 gameState
= STATE_PRESSED_MACHUCADO_CORRE
;
209 }
210
211 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_MACHUCADO_DESCANSA_OU_CORRE
) //OK
212 {
213 sprintf(text,
"%s",
" DINO PAROU PARA DESCANSAR, MAS PERDEU MUITO TEMPO E O METEORO ESTÁ MUITO PRÓXIMO!");
214 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
215 sprintf(text2,
"%s",
" DEVE CORRER DO METEORO (A) OU PROCURAR ABRIGO (B)?");
216 sprintf(text3,
"%s",
"");
217 gameState
= STATE_PRESSED_MACHUCADO_DESCANSA
;
218 }
219
220 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_MACHUCADO_CORRE
)
221 {
222 sprintf(text,
"%s",
" O METEORO CADA VEZ MAIS PRÓXIMO!");
223 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
224 sprintf(text2,
"%s",
" CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
225 sprintf(text3,
"%s",
"");
226 gameState
= STATE_CORRE
;
227 }
228
229 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_MACHUCADO_CORRE
) /// REFAZER, ESTÁ ERRADO
230 {
231 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
232 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
233 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
234 sprintf(text3,
"%s",
"");
235 gameState
= STATE_ABRIGO
;
236 }
237
238 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_MACHUCADO_DESCANSA
)
239 {
240 sprintf(text,
"%s",
" O METEORO CADA VEZ MAIS PRÓXIMO!");
241 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
242 sprintf(text2,
"%s",
" CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
243 sprintf(text3,
"%s",
"");
244 gameState
= STATE_CORRE
;
245 }
246
247 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_MACHUCADO_DESCANSA
)
248 {
249 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
250 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
251 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
252 sprintf(text3,
"%s",
"");
253 gameState
= STATE_ABRIGO
;
254 }
255
256 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_CORRE
)
257 {
258 sprintf(text,
"%s",
" VOCÊ MATOU O DINO!");
259 sprintf(text1,
"%s",
"");
260 sprintf(text2,
"%s",
" GAME OVER! DESEJA JOGAR NOVAMENTE (S)?");
261 sprintf(text3,
"%s",
"");
262 gameState
= STATE_PRESSED_GAME_OVER
;
263 }
264
265 else if(event.keyboard.keycode
== ALLEGRO_KEY_S
&& gameState
== STATE_PRESSED_GAME_OVER
)
266 {
267 sprintf(text,
"%s",
"");
268 sprintf(text1,
"%s",
" PARA RECOMEÇA, APERTE");
269 sprintf(text2,
"%s",
" ENTER");
270 sprintf(text3,
"%s",
"");
271 gameState
= STATE_START
;
272 }
273
274
275 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_CORRE
)
276 {
277 sprintf(text,
"%s",
" VOCÊ MATOU O DINO!");
278 sprintf(text1,
"%s",
"");
279 sprintf(text2,
"%s",
" GAME OVER! DESEJA JOGAR NOVAMENTE (S)?");
280 sprintf(text3,
"%s",
"");
281 gameState
= STATE_PRESSED_GAME_OVER
;
282 }
283
284 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_ABRIGO
)
285 {
286 sprintf(text,
"%s",
" VOCÊ MATOU O DINO!");
287 sprintf(text1,
"%s",
"");
288 sprintf(text2,
"%s",
" GAME OVER! DESEJA JOGAR NOVAMENTE (S)?");
289 sprintf(text3,
"%s",
"");
290 gameState
= STATE_PRESSED_GAME_OVER
;
291 }
292
293 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_ABRIGO
)
294 {
295 sprintf(text,
"%s",
" VOCÊ MATOU O DINO!");
296 sprintf(text1,
"%s",
"");
297 sprintf(text2,
"%s",
" GAME OVER! DESEJA JOGAR NOVAMENTE (S)?");
298 sprintf(text3,
"%s",
"");
299 gameState
= STATE_PRESSED_GAME_OVER
;
300 }
301
302 //DINO PULA O BURACO E COME A PLANTA
303 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_PULA_BURACO
)
304 {
305 sprintf(text,
"%s",
" DINO PAROU PARA COMER A PLANTA MEDICINAL, E A DOR PASSOU. ENTRETANTO, A PLANTA DEIXOU DINO COM SONO.");
306 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
307 sprintf(text2,
"%s",
" DEVE COMEÇAR A CORRER (A) MESMO SONOLENTO OU PARAR PARA DESCANSAR (B)?");
308 sprintf(text3,
"%s",
"");
309 gameState
= STATE_PRESSED_SONO_DESCANSA_OU_CORRE
;
310 }
311
312 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_SONO_DESCANSA_OU_CORRE
)
313 {
314 sprintf(text,
"%s",
" DINO ESTÁ CORRENDO LENTAMENTE, DEVIDO AO SONO. ENTRETANTO, PERDEU MUITO TEMPO E O METEORO ESTÁ PRÓXIMO!");
315 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
316 sprintf(text2,
"%s",
" DEVE CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
317 sprintf(text3,
"%s",
"");
318 gameState
= STATE_PRESSED_SONO_CORRE
;
319 }
320
321 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_SONO_DESCANSA_OU_CORRE
)
322 {
323 sprintf(text,
"%s",
" DINO PAROU PARA DESCANSAR, MAS PERDEU MUITO TEMPO. O METEORO ESTÁ PRÓXIMO!");
324 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
325 sprintf(text2,
"%s",
" DEVE CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
326 sprintf(text3,
"%s",
"");
327 gameState
= STATE_PRESSED_SONO_DESCANSA
;
328 }
329
330 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_SONO_CORRE
)
331 {
332 sprintf(text,
"%s",
" DINO CONTINUA CORRENDO, E O METEORO ESTÁ CADA VEZ MAIS PRÓXIMO!");
333 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
334 sprintf(text2,
"%s",
" DEVE CONTINUAR CORRER DO METEORO (A) OU PROCURAR ABRIGO (B)?");
335 sprintf(text3,
"%s",
"");
336 gameState
= STATE_CORRE
;
337 }
338
339 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_SONO_CORRE
)
340 {
341 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO ESTÁ CHEGANDO!");
342 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
343 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
344 sprintf(text3,
"%s",
"");
345 gameState
= STATE_ABRIGO
;
346 }
347
348 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_SONO_DESCANSA
)
349 {
350 sprintf(text,
"%s",
" DINO CONTINUAR CORRENDO, E O METEORO ESTÁ CADA VEZ MAIS PRÓXIMO!");
351 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
352 sprintf(text2,
"%s",
" DEVE CONTINUAR CORRER DO METEORO (A) OU PROCURAR ABRIGO (B)?");
353 sprintf(text3,
"%s",
"");
354 gameState
= STATE_CORRE
;
355 }
356
357 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_SONO_DESCANSA
)
358 {
359 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO ESTÁ CHEGANDO!");
360 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
361 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
362 sprintf(text3,
"%s",
"");
363 gameState
= STATE_ABRIGO
;
364 }
365
366
367 // CAI NO BURACO
368 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_BURACO
)
369 {
370 sprintf(text,
"%s",
" DINO TENTOU CONTONAR O BURACO, E ACABOU CAINDO! ");
371 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
372 sprintf(text2,
"%s",
" DEVE PEDIR AJUDA (A) OU SAIR DO BURACO CAVANDO (B)?");
373 sprintf(text3,
"%s",
"");
374 gameState
= STATE_PRESSED_CAI_BURACO
;
375 }
376
377 // CAI BURACO SAI COM AJUDA
378 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_CAI_BURACO
)
379 {
380 sprintf(text,
"%s",
" DINO PEDIU AJUDA, MAS DEMOROU MUITO, E ACABOU PERDENDO TEMPO PRECIOSO. ");
381 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
382 sprintf(text2,
"%s",
" DEVE CORRER NORMALMENTE (A) OU CORRER O MAIS RÁPIDO POSSIVEL (B)?");
383 sprintf(text3,
"%s",
"");
384 gameState
= STATE_PRESSED_CAI_BURACO_AJUDA
;
385 }
386
387 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_CAI_BURACO_AJUDA
)
388 {
389 sprintf(text,
"%s",
" DINO NÃO ESTÁ CORRENDO RÁPIDO O SUFICIENTE, E O METEORO ESTÁ SE APROXIMANDO.");
390 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
391 sprintf(text2,
"%s",
" DINO DEVE CONTINUAR CORRENDO DO COMETA (A) OU PROCURAR ABRIGO (B)?");
392 sprintf(text3,
"%s",
"");
393 gameState
= STATE_PRESSED_CAI_BURACO_CORRE
;
394 }
395
396 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_CAI_BURACO_CORRE
)
397 {
398 sprintf(text,
"%s",
" DINO CONTINUA CORRENDO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
399 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
400 sprintf(text2,
"%s",
" DINO DEVE CONTINUAR CORRER DO METEORO (A) OU PROCURAR ABRIGO (B)?");
401 sprintf(text3,
"%s",
"");
402 gameState
= STATE_CORRE
;
403 }
404
405 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_CAI_BURACO_CORRE
)
406 {
407 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
408 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
409 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
410 sprintf(text3,
"%s",
"");
411 gameState
= STATE_ABRIGO
;
412 }
413
414 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_SONO_DESCANSA
)
415 {
416 sprintf(text,
"%s",
" O METEORO CADA VEZ MAIS PRÓXIMO!");
417 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
418 sprintf(text2,
"%s",
" CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
419 sprintf(text3,
"%s",
"");
420 gameState
= STATE_CORRE
;
421 }
422
423 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_SONO_DESCANSA
)
424 {
425 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
426 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
427 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
428 sprintf(text3,
"%s",
"");
429 gameState
= STATE_ABRIGO
;
430 }
431
432 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_CAI_BURACO_AJUDA
)
433 {
434 sprintf(text,
"%s",
" DINO ESTAVA CORRENDO MUITO RÁPIDO, E ACABOU TROPEÇANDO E CAINDO. COM ISSO, O METEORO ESTÁ CADA VEZ MAIS PRÓXIMO ");
435 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
436 sprintf(text2,
"%s",
" DEVE CONTINUAR CORRENDO DO COMETA (A) OU PROCURAR ABRIGO (B)?");
437 sprintf(text3,
"%s",
"");
438 gameState
= STATE_PRESSED_CAI_BURACO_CORRE_RAPIDO
;
439 }
440
441 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_CAI_BURACO_CORRE_RAPIDO
)
442 {
443 sprintf(text,
"%s",
" O METEORO CADA VEZ MAIS PRÓXIMO!");
444 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
445 sprintf(text2,
"%s",
" CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
446 sprintf(text3,
"%s",
"");
447 gameState
= STATE_CORRE
;
448 }
449
450 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_CAI_BURACO_CORRE_RAPIDO
)
451 {
452 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
453 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
454 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
455 sprintf(text3,
"%s",
"");
456 gameState
= STATE_ABRIGO
;
457 }
458
459 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_SONO_DESCANSA
)
460 {
461 sprintf(text,
"%s",
" O METEORO CADA VEZ MAIS PRÓXIMO!");
462 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
463 sprintf(text2,
"%s",
" CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
464 sprintf(text3,
"%s",
"");
465 gameState
= STATE_CORRE
;
466 }
467
468 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_SONO_DESCANSA
)
469 {
470 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
471 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
472 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
473 sprintf(text3,
"%s",
"");
474 gameState
= STATE_ABRIGO
;
475 }
476
477 // CAI BURACO SAI CAVANDO
478 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_CAI_BURACO
) //
479 {
480 sprintf(text,
"%s",
" DINO SAIU DO BURACO CAVANDO, MAS AGORA ESTÁ COM MUITA SEDE.");
481 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
482 sprintf(text2,
"%s",
" DEVE IGNORAR A SEDE E COMEÇAR A CORRER (A) OU BEBER ÁGUA (B)?");
483 sprintf(text3,
"%s",
"");
484 gameState
= STATE_PRESSED_CAI_BURACO_CAVANDO
;
485 }
486
487 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO
)
488 {
489 sprintf(text,
"%s",
"DINO COMEÇAR A CORRER COM SEDE, E ISSO DEIXA-O MUITO LENTO. DESSA FORMA, O METEORO ESTÁ CADA VEZ MAIS PERTO.");
490 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
491 sprintf(text2,
"%s",
" DEVE CORRER DO METEORO (A) OU PROCURAR ABRIGO (B)?");
492 sprintf(text3,
"%s",
"");
493 gameState
= STATE_PRESSED_CAI_BURACO_CAVANDO_CORRE
;
494 }
495
496 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO
)
497 {
498 sprintf(text,
"%s",
" DINO BEBE ÁGUA, MAS ACABA PERDENDO MUITO TEMPO. E O METEORO ESTÁ CADA VEZ MAIS PERTO!");
499 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
500 sprintf(text2,
"%s",
" DEVE CORRER DO METEORO (A) OU PROCURAR ABRIGO (B)?");
501 sprintf(text3,
"%s",
"");
502 gameState
= STATE_PRESSED_CAI_BURACO_CAVANDO_AGUA
;
503 }
504
505 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO_CORRE
)
506 {
507 sprintf(text,
"%s",
" O METEORO CADA VEZ MAIS PRÓXIMO!");
508 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
509 sprintf(text2,
"%s",
" CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
510 sprintf(text3,
"%s",
"");
511 gameState
= STATE_CORRE
;
512 }
513
514 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO_CORRE
)
515 {
516 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
517 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
518 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
519 sprintf(text3,
"%s",
"");
520 gameState
= STATE_ABRIGO
;
521 }
522
523 else if(event.keyboard.keycode
== ALLEGRO_KEY_A
&& gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO_AGUA
)
524 {
525 sprintf(text,
"%s",
" O METEORO CADA VEZ MAIS PRÓXIMO!");
526 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
527 sprintf(text2,
"%s",
" CONTINUAR CORRENDO DO METEORO (A) OU PROCURAR ABRIGO (B)?");
528 sprintf(text3,
"%s",
"");
529 gameState
= STATE_CORRE
;
530 }
531
532 else if(event.keyboard.keycode
== ALLEGRO_KEY_B
&& gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO_AGUA
)
533 {
534 sprintf(text,
"%s",
" DINO ESTÁ NO ABRIGO, E O METEORO CADA VEZ MAIS PRÓXIMO!");
535 sprintf(text1,
"%s",
" O QUE DINO DEVE FAZER:");
536 sprintf(text2,
"%s",
" DEVE VOLTAR A CORRER DO METEORO (A) OU CONTINUAR NO ABRIGO (B)?");
537 sprintf(text3,
"%s",
"");
538 gameState
= STATE_ABRIGO
;
539 }
540
541 if(event.keyboard.keycode
!= ALLEGRO_KEY_ESCAPE
)
542 {
543 break;
544 }
545 }
546
547 case ALLEGRO_EVENT_DISPLAY_CLOSE:
548 {
549 done
= true;
550 break;
551 }
552 }
553
554 if(done
)
555 break;
556
557 if(redraw
&& al_is_event_queue_empty(queue
))
558 {
559 al_clear_to_color(al_map_rgb(0,
0,
0));
560 al_draw_text(font,
al_map_rgb(255,
255,
255),
100,
550,
0, text
);
561 al_draw_text(font1,
al_map_rgb(255,
255,
255),
100,
600,
0, text1
);
562 al_draw_text(font2,
al_map_rgb(0,
255,
1),
100,
650,
0, text2
);
563 al_draw_text(font2,
al_map_rgb(0,
255,
1),
400,
700,
0, text3
);
564
565 if(gameState
== STATE_START
)
566 al_draw_bitmap(apresentacao,
10,
50,
0);
567 if(gameState
== STATE_PRESSED_BURACO
)
568 al_draw_bitmap(pula_ignora,
130,
100,
0);
569 if(gameState
== STATE_PRESSED_PULA_BURACO
)
570 al_draw_bitmap(pulando,
130,
100,
0);
571 if(gameState
== STATE_PRESSED_CAI_BURACO
)
572 al_draw_bitmap(pedindo_ajuda,
130,
100,
0);
573 if(gameState
== STATE_PRESSED_MACHUCADO_DESCANSA_OU_CORRE
)
574 al_draw_bitmap(correndo,
130,
100,
0);
575 if(gameState
== STATE_PRESSED_MACHUCADO_CORRE
)
576 al_draw_bitmap(correndo,
130,
100,
0);
577 if(gameState
== STATE_PRESSED_MACHUCADO_DESCANSA
)
578 al_draw_bitmap(descansando,
130,
100,
0);
579 if(gameState
== STATE_CORRE
)
580 al_draw_bitmap(correndo,
130,
100,
0);
581 if(gameState
== STATE_PRESSED_GAME_OVER
)
582 al_draw_bitmap(game_over,
130,
100,
0);
583 if(gameState
== STATE_ABRIGO
)
584 al_draw_bitmap(abrigo,
10,
50,
0);
585 if(gameState
== STATE_PRESSED_SONO_DESCANSA_OU_CORRE
)
586 al_draw_bitmap(planta,
130,
100,
0);
587 if(gameState
== STATE_PRESSED_SONO_CORRE
)
588 al_draw_bitmap(correndo,
130,
100,
0);
589 if(gameState
== STATE_PRESSED_SONO_DESCANSA
)
590 al_draw_bitmap(descansando,
130,
100,
0);
591 if(gameState
== STATE_PRESSED_CAI_BURACO_AJUDA
)
592 al_draw_bitmap(correndo,
130,
100,
0);
593 if(gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO
)
594 al_draw_bitmap(descansando,
130,
100,
0);
595 if(gameState
== STATE_PRESSED_CAI_BURACO_CORRE
)
596 al_draw_bitmap(correndo,
130,
100,
0);
597 if(gameState
== STATE_PRESSED_CAI_BURACO_CORRE_RAPIDO
)
598 al_draw_bitmap(descansando,
130,
100,
0);
599 if(gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO_CORRE
)
600 al_draw_bitmap(correndo,
130,
100,
0);
601 if(gameState
== STATE_PRESSED_CAI_BURACO_CAVANDO_AGUA
)
602 al_draw_bitmap(bebendo_agua,
130,
100,
0);
603 al_flip_display();
604 redraw
= false;
605 }
606
607 }
608
609 al_destroy_bitmap(apresentacao
);
610 al_destroy_bitmap(pula_ignora
);
611 al_destroy_bitmap(pulando
);
612 al_destroy_bitmap(no_buraco
);
613 al_destroy_bitmap(correndo
);
614 al_destroy_bitmap(descansando
);
615 al_destroy_bitmap(bebendo_agua
);
616 al_destroy_bitmap(abrigo
);
617 al_destroy_bitmap(game_over
);
618 al_destroy_bitmap(pedindo_ajuda
);
619 al_destroy_bitmap(planta
);
620 al_destroy_bitmap(saiu_buraco
);
621 al_destroy_font(font);
622 al_destroy_display(disp
);
623 al_destroy_audio_stream(music
);
624 al_destroy_timer(timer
);
625 al_destroy_event_queue(queue
);
626
627 return 0;
628}