summary refs log tree commit diff
path: root/freecell.c
diff options
context:
space:
mode:
Diffstat (limited to 'freecell.c')
-rw-r--r--freecell.c12
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 (;;) {