Added an automatic `Solve' feature to most games. This is useful for

various things:
 - if you haven't fully understood what a game is about, it gives
   you an immediate example of a puzzle plus its solution so you can
   understand it
 - in some games it's useful to compare your solution with the real
   one and see where you made a mistake
 - in the rearrangement games (Fifteen, Sixteen, Twiddle) it's handy
   to be able to get your hands on a pristine grid quickly so you
   can practise or experiment with manoeuvres on it
 - it provides a good way of debugging the games if you think you've
   encountered an unsolvable grid!

[originally from svn r5731]
This commit is contained in:
Simon Tatham
2005-05-02 13:17:10 +00:00
parent aea7b61815
commit 4f7b65de2e
16 changed files with 604 additions and 51 deletions

View File

@ -94,7 +94,7 @@ static char *new_game_seed(game_params *params, random_state *rs,
return dupstr("FIXME");
}
void game_free_aux_info(game_aux_info *aux)
static void game_free_aux_info(game_aux_info *aux)
{
assert(!"Shouldn't happen");
}
@ -127,6 +127,12 @@ static void free_game(game_state *state)
sfree(state);
}
static game_state *solve_game(game_state *state, game_aux_info *aux,
char **error)
{
return NULL;
}
static char *game_text_format(game_state *state)
{
return NULL;
@ -234,6 +240,7 @@ const struct game thegame = {
new_game,
dup_game,
free_game,
FALSE, solve_game,
FALSE, game_text_format,
new_ui,
free_ui,