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