enum{ Brdsize = 9, Psize = Brdsize * Brdsize, Alldigits = 0x1FF, Digit = 0x0000000F, Solve = 0x000000F0, Allow = 0x0001FF00, MLock = 0x00020000, Line = 0, Thickline = 1, Border = Thickline*4, Square = 48, Maxx = Square*9 + 2*Border, Maxy = Maxx + Square, }; typedef struct Cell { int digit; int solve; int locked; } Cell; Cell brd[Psize]; Cell obrd[Psize]; int board[Psize]; /* game.c */ int getrow(int cell); int getcol(int cell); int getbox(int cell); void setdigit(int cc, int num); int boxcheck(int *board); int rowcheck(int *board); int colcheck(int *board); int setallowed(int *board, int cc, int num); int chksolved(int *board); void attempt(int *pboard, int level); void clearp(void); void makep(void); /* sudoku.c */ void drawbar(int digit, int selected); void drawcell(int x, int y, int num, Image *col); void drawblink(int cell); char *genlevels(int i); /* levels.c */ void fprettyprintbrd(Cell *board); void fprintbrd(int fd, Cell *board); void floadbrd(int fd, Cell *board); void printboard(Cell *board); int loadlevel(char *name, Cell *board); void savegame(Cell *board); int loadgame(Cell *board);