diff options
| author | Simon Tatham <anakin@pobox.com> | 2005-05-30 18:41:40 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2005-05-30 18:41:40 +0000 |
| commit | e4328b9081dabc78f6115fe2dd916e8e5fe8cca0 (patch) | |
| tree | 17c02cf47ae44040d1ce1c61d028728a85e3460e /mines.c | |
| parent | 3c6b77c93bc508a44a5726d660bbf7161bde9945 (diff) | |
| download | puzzles-e4328b9081dabc78f6115fe2dd916e8e5fe8cca0.zip puzzles-e4328b9081dabc78f6115fe2dd916e8e5fe8cca0.tar.gz puzzles-e4328b9081dabc78f6115fe2dd916e8e5fe8cca0.tar.bz2 puzzles-e4328b9081dabc78f6115fe2dd916e8e5fe8cca0.tar.xz | |
Added an `interactive' flag to new_game_desc(), which toggles Mines
between on the one hand generating indeterminate game descriptions
awaiting the initial click, and on the other hand generating
concrete ones which have had their initial click. This makes `mines
--generate' do something useful.
[originally from svn r5869]
Diffstat (limited to 'mines.c')
| -rw-r--r-- | mines.c | 37 |
1 files changed, 21 insertions, 16 deletions
@@ -1847,24 +1847,29 @@ static char *new_mine_layout(int w, int h, int n, int x, int y, int unique, } static char *new_game_desc(game_params *params, random_state *rs, - game_aux_info **aux) + game_aux_info **aux, int interactive) { -#ifdef PREOPENED - int x = random_upto(rs, params->w); - int y = random_upto(rs, params->h); - char *grid, *desc; - - grid = new_mine_layout(params->w, params->h, params->n, - x, y, params->unique, rs); -#else - char *rsdesc, *desc; + if (!interactive) { + /* + * For batch-generated grids, pre-open one square. + */ + int x = random_upto(rs, params->w); + int y = random_upto(rs, params->h); + char *grid, *desc; + + grid = new_mine_layout(params->w, params->h, params->n, + x, y, params->unique, rs, &desc); + sfree(grid); + return desc; + } else { + char *rsdesc, *desc; - rsdesc = random_state_encode(rs); - desc = snewn(strlen(rsdesc) + 100, char); - sprintf(desc, "r%d,%c,%s", params->n, params->unique ? 'u' : 'a', rsdesc); - sfree(rsdesc); - return desc; -#endif + rsdesc = random_state_encode(rs); + desc = snewn(strlen(rsdesc) + 100, char); + sprintf(desc, "r%d,%c,%s", params->n, params->unique ? 'u' : 'a', rsdesc); + sfree(rsdesc); + return desc; + } } static void game_free_aux_info(game_aux_info *aux) |