]>
git.gir.st - minesVIiper.git/blob - mines.h
4 #define SHORTHELP "%s [OPTIONS] [FIELDSPEC]\n"
5 #define FIELDHELP "FIELDSPEC: WxH[xM] (width 'x' height 'x' mines)\n"
10 " -q(uestion marks; implies -f)\n" \
11 " -b(land symbols)\n" \
12 " -c(olorful symbols)\n" \
13 " -d(ec charset symbols)\n" \
15 " WxH[xM] (width 'x' height 'x' mines)\n" \
16 " defaults to 30x16x99; mines default to ~20%%\n" \
20 " hjkl :move left/down/up/right\n" \
21 " bduw :move to next boundary\n" \
22 " ^Gg$ :move to the left/bottom/top/right\n" \
23 " z :center cursor on minefield\n" \
26 " space:modeful cursor (either open or flag)\n" \
27 " s :toggle mode for space (open/flag)\n" \
28 " mX :set a mark for letter X\n" \
29 " `X :move to mark X (aliased to ')\n" \
30 " f/F x:find forward/backward [012345678 ocfq]\n" \
31 " t/T x:'til -\"-\n" \
32 " a/A x:after -\"-\n" \
33 " ! :open with a bang! (find large cluster of zeros)\n" \
34 " r :start a new game\n" \
41 unsigned m
:2; /* mine?1:killmine?2:0 */
42 unsigned o
:1; /* open?1:0 */
43 unsigned f
:2; /* flagged?1:questioned?2:0 */
44 unsigned n
:4; /* 0<= neighbours <=8 */
48 int m
; /* number of mines */
52 int f
; /* flags counter */
53 int t
; /* time of game start */
54 int p
[2]; /* cursor position {line, col} */
55 int s
; /* space mode */
57 int n
; /* new game? */
58 int c
; /* cheat mode? */
67 struct minescheme
* scheme
;
68 int mode
; /* allow flags? quesm? */
71 int minesviiper(void);
72 void fill_minefield (int, int);
73 void move_ph (int, int);
74 void move_hi (int, int);
75 void to_next_boundary (int, int, char, int);
76 int find (int, char, int);
77 int getch (unsigned char*);
78 int getch_wrapper (void);
79 int getctrlseq (unsigned char*);
80 int everything_opened (void);
81 int wait_mouse_up (int, int);
82 void redraw_cell (int, int, int);
83 void show_minefield (int);
84 void show_stomp (int, int, int);
85 void wait_stomp (void);
86 int get_neighbours (int, int, int);
87 int uncover_square (int, int);
88 void flag_square (int, int);
89 void quesm_square (int, int);
90 int choord_square (int, int);
91 int do_uncover (int*, int);
92 int grand_opening (int*);
93 int assign_cluster (int, int, int, int*);
97 void interactive_resize(void);
98 struct minecell
** alloc_array (int, int);
99 void free_field (void);
100 char* get_emoticon(void);
101 int screen2field_l (int);
102 int screen2field_c (int);
103 int field2screen_c (int);
104 int clicked_emoticon (unsigned char*);
106 void clamp_fieldsize (void);
107 int mines_percentage(int, int);
108 int parse_fieldspec(char*);
109 void signal_handler (int);
110 void signal_setup (void);
111 void timer_setup (int);
112 void screen_setup (int);
128 enum fieldopenstates
{
133 GAME_NEW
= 0, /* expected zero while resetting `g' */
140 MODE_OPEN
= 0, /* expected zero while resetting `g' */
145 /* for getctrlseq() */
151 CTRSEQ_MOUSE_LEFT
= -4,
152 CTRSEQ_MOUSE_MIDDLE
= -5,
153 CTRSEQ_MOUSE_RIGHT
= -6,
154 CTRSEQ_CURSOR_LEFT
= -7,
155 CTRSEQ_CURSOR_DOWN
= -8,
156 CTRSEQ_CURSOR_UP
= -9,
157 CTRSEQ_CURSOR_RIGHT
= -10,
158 /* for getch_wrapper() */
159 WRAPPER_EMOTICON
= -11,