X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/450d3df02a3b955f8bbd52e57d400bde3b4e6801..18eb897ff68aef4a40e0c966dbcfb7148a12759e:/keen.c diff --git a/keen.c b/keen.c index 6b4efb2..da55fb2 100644 --- a/keen.c +++ b/keen.c @@ -1450,11 +1450,12 @@ static int check_errors(game_state *state, long *errors) break; case C_DIV: { - int d1 = cluevals[j], d2 = state->grid[i]; - if (d1 == 0 || d2 == 0) + int d1 = min(cluevals[j], state->grid[i]); + int d2 = max(cluevals[j], state->grid[i]); + if (d1 == 0 || d2 % d1 != 0) cluevals[j] = 0; else - cluevals[j] = d2/d1 + d1/d2;/* one of them is 0 :-) */ + cluevals[j] = d2 / d1; } break; } @@ -1844,7 +1845,7 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, /* Count the pencil marks required. */ for (i = 1, npencil = 0; i <= w; i++) - if (tile & (1 << (i + DF_PENCIL_SHIFT))) + if (tile & (1L << (i + DF_PENCIL_SHIFT))) npencil++; if (npencil) { @@ -1859,6 +1860,13 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, pr = pl + TILESIZE - GRIDEXTRA; pt = ty + GRIDEXTRA; pb = pt + TILESIZE - GRIDEXTRA; + if (dsf_canonify(clues->dsf, y*w+x) == y*w+x) { + /* + * Make space for the clue text. + */ + pt += TILESIZE/4; + /* minph--; */ + } /* * We arrange our pencil marks in a grid layout, with @@ -1914,7 +1922,7 @@ static void draw_tile(drawing *dr, game_drawstate *ds, struct clues *clues, * Now actually draw the pencil marks. */ for (i = 1, j = 0; i <= w; i++) - if (tile & (1 << (i + DF_PENCIL_SHIFT))) { + if (tile & (1L << (i + DF_PENCIL_SHIFT))) { int dx = j % pw, dy = j / pw; str[1] = '\0'; @@ -2005,6 +2013,11 @@ static float game_flash_length(game_state *oldstate, game_state *newstate, return 0.0F; } +static int game_is_solved(game_state *state) +{ + return state->completed; +} + static int game_timing_state(game_state *state, game_ui *ui) { if (state->completed) @@ -2240,6 +2253,10 @@ static void game_print(drawing *dr, game_state *state, int tilesize) FONT_VARIABLE, TILESIZE/2, ALIGN_VCENTRE | ALIGN_HCENTRE, ink, str); } + + sfree(minus_sign); + sfree(times_sign); + sfree(divide_sign); } #ifdef COMBINED @@ -2277,6 +2294,7 @@ const struct game thegame = { game_redraw, game_anim_length, game_flash_length, + game_is_solved, TRUE, FALSE, game_print_size, game_print, FALSE, /* wants_statusbar */ FALSE, game_timing_state,