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

@ -142,6 +142,7 @@ config_item *midend_get_config(midend_data *me, int which, char **wintitle);
char *midend_set_config(midend_data *me, int which, config_item *cfg);
char *midend_game_id(midend_data *me, char *id, int def_seed);
char *midend_text_format(midend_data *me);
char *midend_solve(midend_data *me);
/*
* malloc.c
@ -197,6 +198,8 @@ struct game {
game_state *(*new_game)(game_params *params, char *seed);
game_state *(*dup_game)(game_state *state);
void (*free_game)(game_state *state);
int can_solve;
game_state *(*solve)(game_state *state, game_aux_info *aux, char **error);
int can_format_as_text;
char *(*text_format)(game_state *state);
game_ui *(*new_ui)(game_state *state);