]> git.gir.st - VIper.git/blob - viper.h
rename to 'viper', new makefile
[VIper.git] / viper.h
1 #ifndef __VIPER_H__
2 #define __VIPER_H__
3
4 #define SHORTHELP "%s [OPTIONS] [FIELDSIZE]\n"
5 #define LONGHELP \
6 "OPTIONS:\n" \
7 " -s(peed) N\n" \
8 " -l(ength) N\n" \
9 " -h(elp)\n" \
10 "FIELDSIZE:\n" \
11 " WxH (width 'x' height)\n" \
12 " defaults to 30x20\n" \
13 "\n" \
14 "Keybindings:\n" \
15 " hjkl: move left/down/up/right\n" \
16 " p: pause / unpause\n" \
17 " r: start a new game\n" \
18 " q: quit\n"
19
20 struct snake {
21 int r; /* row */
22 int c; /* column */
23 struct snake* next; /* points to tail */
24 };
25 struct item {
26 int r; /* row */
27 int c; /* column */
28 int t; /* type */
29 int v; /* value */
30 int s; /* spawn time (for bonus) */
31 struct item* prev;
32 struct item* next;
33 };
34 enum direction {
35 NONE,
36 NORTH,
37 EAST,
38 SOUTH,
39 WEST,
40 };
41 enum item_type {
42 NO_ITEM,
43 FOOD,
44 BONUS,
45 };
46 enum food_value {
47 FOOD_PEAR,
48 FOOD_WMELON,
49 FOOD_BANANA,
50 FOOD_KIWI,
51
52 FOOD_APPLER,
53 FOOD_CHERRY,
54
55 FOOD_AVOCADO,
56 NUM_FOODS,
57 };
58 enum bonus_value {
59 BONUS_SNIP,
60 BONUS_GROW,
61 BONUS_SLOW,
62 BONUS_FAST,
63 BONUS_WRAP,
64 BONUS_STOP,
65 NUM_BONI,
66 };
67 enum game_state {
68 GAME_INIT,
69 GAME_START,
70 GAME_OVER,
71 GAME_WON,
72 GAME_EXIT,
73 };
74
75 int viper(void);
76 void snake_advance (void);
77 void spawn_item (int type, int value, struct item* p_item);
78 void consume_item (struct item* i);
79 void show_playfield (void);
80 void draw_sprites (int erase_r, int erase_c);
81 void pause_game (void);
82 int end_screen(char* message);
83 void snake_append (struct snake** s, int row, int col);
84 void remove_bonus (struct item* i);
85 void init_snake();
86 void quit (void);
87 int getctrlseq (void);
88 void append_movement (int d);
89 void move_ph (int line, int col);
90 void clamp_fieldsize (void);
91 void timer_setup (int enable);
92 void signal_setup (void);
93 void signal_handler (int signum);
94 void screen_setup (int enable);
95 void raw_mode(int enable);
96 enum event {
97 /* for getctrlseq() */
98 CTRSEQ_NULL = 0,
99 CTRSEQ_EOF = -1,
100 CTRSEQ_INVALID = -2,
101 CTRSEQ_MOUSE = -3,
102 CTRSEQ_CURSOR_LEFT = -7,
103 CTRSEQ_CURSOR_DOWN = -8,
104 CTRSEQ_CURSOR_UP = -9,
105 CTRSEQ_CURSOR_RIGHT = -10,
106 };
107
108 #endif
Imprint / Impressum