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
|
#include "program_data.h"
#include "app_window.h"
#include "snake_map.h"
#include "top_menu.h"
#include "snake_utils.h"
const char image_list[][NAME_MAX] = {
"remy_the_rat.png",
"friendly_frog.png",
"easter_bunny.png",
"gidget.png",
"child_person.png",
"big_bird.png"
};
void load_images(MainData * mdata) {
char image_path[NAME_MAX];
Fl_PNG_Image * new_image = NULL;
for (auto img : image_list) {
memset(image_path, 0, NAME_MAX);
snprintf(image_path, NAME_MAX, "images/%s", img);
printf("Loading %s\n", image_path);
new_image = new Fl_PNG_Image(image_path);
if (new_image->fail())
fprintf(stderr, "Error loading %s\n", image_path);
mdata->images.snack_images.push_back(new_image);
}
set_snack_images_to_tile_size(mdata);
}
int main(int argc, char ** argv) {
MainData mdata;
load_images(&mdata);
// Create window.
mdata.win = new AppWindow(
&mdata,
Fl::w() / 2,
Fl::h() / 2,
"FLTK snake"
);
// Snake map.
mdata.snake_map = new SnakeMap(&mdata);
// Top menu.
mdata.top_menu = new Fl_Menu_Bar(
0,
0,
mdata.win->w(),
mdata.settings.top_menu_height
);
// Length output.
mdata.length_output = new Fl_Output(
(mdata.win->w() / 2) - (mdata.settings.output_width / 2),
mdata.top_menu->h(),
mdata.settings.output_width,
mdata.settings.output_height,
"Length"
);
mdata.length_output->value("0");
add_menu_items(&mdata, mdata.top_menu);
mdata.win->end();
mdata.win->resizable(mdata.win);
mdata.win->show(argc, argv);
return Fl::run();
}
|