xref: /plan9/sys/src/games/sudoku/sudoku.h (revision 5fe11e2580d4833b76e3395a87f740886ced2411)
1*5fe11e25SDavid du Colombier enum{
2*5fe11e25SDavid du Colombier 	Brdsize 	= 9,
3*5fe11e25SDavid du Colombier 	Psize 		= Brdsize * Brdsize,
4*5fe11e25SDavid du Colombier 	Alldigits 	= 0x1FF,
5*5fe11e25SDavid du Colombier 	Digit 		= 0x0000000F,
6*5fe11e25SDavid du Colombier 	Solve 		= 0x000000F0,
7*5fe11e25SDavid du Colombier 	Allow 		= 0x0001FF00,
8*5fe11e25SDavid du Colombier 	MLock 		= 0x00020000,
9*5fe11e25SDavid du Colombier 
10*5fe11e25SDavid du Colombier 	Line 		= 0,
11*5fe11e25SDavid du Colombier 	Thickline 	= 1,
12*5fe11e25SDavid du Colombier 	Border 		= Thickline*4,
13*5fe11e25SDavid du Colombier 	Square 		= 48,
14*5fe11e25SDavid du Colombier 	Maxx 		= Square*9 + 2*Border,
15*5fe11e25SDavid du Colombier 	Maxy 		= Maxx + Square,
16*5fe11e25SDavid du Colombier };
17*5fe11e25SDavid du Colombier 
18*5fe11e25SDavid du Colombier typedef struct Cell {
19*5fe11e25SDavid du Colombier 	int digit;
20*5fe11e25SDavid du Colombier 	int solve;
21*5fe11e25SDavid du Colombier 	int locked;
22*5fe11e25SDavid du Colombier } Cell;
23*5fe11e25SDavid du Colombier 
24*5fe11e25SDavid du Colombier Cell	brd[Psize];
25*5fe11e25SDavid du Colombier Cell	obrd[Psize];
26*5fe11e25SDavid du Colombier int		board[Psize];
27*5fe11e25SDavid du Colombier 
28*5fe11e25SDavid du Colombier /* game.c */
29*5fe11e25SDavid du Colombier int getrow(int cell);
30*5fe11e25SDavid du Colombier int getcol(int cell);
31*5fe11e25SDavid du Colombier int getbox(int cell);
32*5fe11e25SDavid du Colombier void setdigit(int cc, int num);
33*5fe11e25SDavid du Colombier int boxcheck(int *board);
34*5fe11e25SDavid du Colombier int rowcheck(int *board);
35*5fe11e25SDavid du Colombier int colcheck(int *board);
36*5fe11e25SDavid du Colombier int setallowed(int *board, int cc, int num);
37*5fe11e25SDavid du Colombier int chksolved(int *board);
38*5fe11e25SDavid du Colombier void attempt(int *pboard, int level);
39*5fe11e25SDavid du Colombier void clearp(void);
40*5fe11e25SDavid du Colombier void makep(void);
41*5fe11e25SDavid du Colombier 
42*5fe11e25SDavid du Colombier /* sudoku.c */
43*5fe11e25SDavid du Colombier void drawbar(int digit, int selected);
44*5fe11e25SDavid du Colombier void drawcell(int x, int y, int num, Image *col);
45*5fe11e25SDavid du Colombier void drawblink(int cell);
46*5fe11e25SDavid du Colombier char *genlevels(int i);
47*5fe11e25SDavid du Colombier 
48*5fe11e25SDavid du Colombier /* levels.c */
49*5fe11e25SDavid du Colombier void fprettyprintbrd(Cell *board);
50*5fe11e25SDavid du Colombier void fprintbrd(int fd, Cell *board);
51*5fe11e25SDavid du Colombier void floadbrd(int fd, Cell *board);
52*5fe11e25SDavid du Colombier void printboard(Cell *board);
53*5fe11e25SDavid du Colombier int loadlevel(char *name, Cell *board);
54*5fe11e25SDavid du Colombier void savegame(Cell *board);
55*5fe11e25SDavid du Colombier int loadgame(Cell *board);
56