-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.c
144 lines (116 loc) · 2.86 KB
/
main.c
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*************************************************************************
*
* main.c
*
* (c) 2021 J. G. Silva (django) <dparicarana@gmail.com>
*
* "Snake game written in C - animations, retro menu, smart snake
* enemies, sound effects."
*
* last modification: 2021-01-07
*
************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include "uconio.h"
#include "texteffects.h"
#include "sound.h"
#include "bass.h"
#include "menu.h"
#include "map.h"
#include "cobra.h"
int main(void)
{
// Finalizar jogo?
int GAME_QUIT = 0;
// Tecla pressionada
KEY Keypressed;
// Omite o cursor de posição do terminal
hidecursor();
// Limpa a tela do terminal
system("clear");
// Configura para o idioma local
setlocale(LC_ALL, NULL);
// Inicializa o módulo de áudio
switch(audio_initialize())
{
case BASS_OK:
puts("[ÁUDIO]: Ok.");
break;
case BASS_ERROR_VERSION:
puts("[ÁUDIO]: Versão de biblioteca BASS inválida.");
break;
case BASS_ERROR_INIT:
puts("[ÁUDIO]: Erro ao tentar inicializar a biblioteca BASS.");
break;
default:
puts("[ÁUDIO]: Houve um erro desconhecido.");
break;
}
// Limpa a tela do terminal
system("clear");
// Exibe animação de introdução
texteffect_introanim();
// Configura mapa do menu principal
map_loadfromfile(&mainmap, MAP_X, MAP_Y, "maps/mainmenu.ans");
map_draw(&mainmap);
// Configura e imprime (1ª vez) o menu principal e reproduz áudio correspondente
audio_play(audio_mainchannel, AUDIO_MENU_MAIN, TRUE);
menu_initialize(&mainmenu, mainmenu_items, 25, 15, 1, 1, 5, 5);
menu_draw(&mainmenu, 0);
// Loop do menu principal
while(!GAME_QUIT)
{
// Captura tecla pressionada, havendo-a
Keypressed = getkeypressed();
// Pressionou: SETA DIRECIONAL
if (Keypressed.x == 27 && Keypressed.y == 91)
{
switch(Keypressed.z)
{
// Tecla: SETA ACIMA
case 65: menu_draw(&mainmenu, MENU_REQ_UP_ITEM); break;
// Tecla: SETA ABAIXO
case 66: menu_draw(&mainmenu, MENU_REQ_DOWN_ITEM); break;
}
}
// Tecla: ENTER
if (Keypressed.x == 10)
{
switch(mainmenu.selected)
{
// Opção: Novo Jogo
case 1:
cobra_initialize(&maincobra);
cobra_run(&maincobra);
cobra_terminate(&maincobra);
break;
// Opção: Lista de Recordes
case 2:
/* A FAZER */
break;
// Opção: Configurar
case 3:
/* A FAZER */
break;
// Opção: Ajuda
case 4:
/* A FAZER */
break;
// Opção: Sair
case 5:
GAME_QUIT = 1;
break;
}
}
}
// Finaliza corretamente o menu principal
menu_terminate(&mainmenu);
// Finaliza corretamente o módulo de áudio
audio_terminate();
// Limpa a tela do terminal
system("clear");
// Finaliza corretamente a aplicação
return(EXIT_SUCCESS);
}