diff options
Diffstat (limited to 'freecell.c')
-rw-r--r-- | freecell.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/freecell.c b/freecell.c index 3f1ec8d..06276d3 100644 --- a/freecell.c +++ b/freecell.c @@ -341,8 +341,8 @@ static enum Choice chooseMove(void) { return choice; } -static void newGame(void) { - uint game = 1 + randUniform(32000); +static void newGame(uint game) { + if (!game) game = 1 + randUniform(32000); deal(game); char buf[sizeof("FreeCell Game #32000")]; snprintf(buf, sizeof(buf), "FreeCell Game #%u", game); @@ -355,7 +355,7 @@ static uint fromStack = StacksLen; static bool keyDown(SDL_KeyboardEvent key) { switch (key.keysym.sym) { - case SDLK_F2: newGame(); return true; + case SDLK_F2: newGame(0); return true; case SDLK_BACKSPACE: return undo(); } if (key.repeat) return false; @@ -399,7 +399,7 @@ static bool mouseButtonDown(SDL_MouseButtonEvent button) { static bool mouseButtonUp(SDL_MouseButtonEvent button) { if (win() && playAgain()) { - newGame(); + newGame(0); return true; } @@ -524,7 +524,7 @@ static void renderStacks(void) { } } -int main(void) { +int main(int argc, char *argv[]) { int error; if (SDL_Init(SDL_INIT_VIDEO) < 0) err("SDL_Init"); @@ -592,7 +592,7 @@ int main(void) { } srand(time(NULL)); - newGame(); + newGame(argc > 1 ? strtoul(argv[1], NULL, 10) : 0); initRects(); for (;;) { |