X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/cb0c7d4a682a68dfeb06e1c4e3aeb01cdf126c5e..c5e949657127f3c752cdc693cb71636711d9ecb1:/filling.c diff --git a/filling.c b/filling.c index 6f6c6c3..f47f9f1 100644 --- a/filling.c +++ b/filling.c @@ -299,7 +299,7 @@ static game_state *new_game(midend *, game_params *, char *); static void free_game(game_state *); /* generate a random valid board; uses validate_board. */ -void make_board(int *board, int w, int h, random_state *rs) { +static void make_board(int *board, int w, int h, random_state *rs) { int *dsf; const unsigned int sz = w * h; @@ -974,9 +974,9 @@ static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds, static game_state *execute_move(game_state *state, char *move) { game_state *new_state; + const int sz = state->shared->params.w * state->shared->params.h; if (*move == 's') { - const int sz = state->shared->params.w * state->shared->params.h; int i = 0; new_state = dup_game(state); for (++move; i < sz; ++i) new_state->board[i] = move[i] - '0'; @@ -991,6 +991,7 @@ static game_state *execute_move(game_state *state, char *move) value = strtol(move, &endptr, 0); if (endptr == move) return NULL; if (*endptr != '\0') return NULL; + if (i < 0 || i >= sz || value < 0 || value > 9) return NULL; new_state = dup_game(state); new_state->board[i] = value; } @@ -1388,7 +1389,8 @@ static void game_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate, * should start by drawing a big background-colour rectangle * covering the whole window. */ - draw_rect(dr, 0, 0, 10*ds->tilesize, 10*ds->tilesize, COL_BACKGROUND); + draw_rect(dr, 0, 0, w*TILE_SIZE + 2*BORDER, h*TILE_SIZE + 2*BORDER, + COL_BACKGROUND); /* * Smaller black rectangle which is the main grid. @@ -1398,6 +1400,8 @@ static void game_redraw(drawing *dr, game_drawstate *ds, game_state *oldstate, h*TILE_SIZE + 2*BORDER_WIDTH + 1, COL_GRID); + draw_update(dr, 0, 0, w*TILE_SIZE + 2*BORDER, h*TILE_SIZE + 2*BORDER); + ds->started = TRUE; } @@ -1524,7 +1528,7 @@ const struct game thegame = { TRUE, FALSE, game_print_size, game_print, FALSE, /* wants_statusbar */ FALSE, game_timing_state, - 0, /* flags */ + REQUIRE_NUMPAD, /* flags */ }; #ifdef STANDALONE_SOLVER /* solver? hah! */