mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 16:05:44 -07:00
New mechanism for automatic generation of the puzzle screenshots on
the web, which I hope will also end up being extended to generate both Windows and X icons for each individual puzzle. The mechanism is: for each puzzle there's a save file in the `icons' subdirectory showing a game state which I think is a decent illustration of the puzzle, and then there's a nasty set of scripts which runs each puzzle binary, loads that save file, grabs a screenshot using xwd, and munges it into shape. In order to support this I've added two new options (--redo and --windowid) to all the GTK puzzles, which I don't expect ever to be used outside the icons makefile. I've also added two more options (--load and --id) which force a GTK puzzle to treat its command-line option as a save file or as a game ID respectively (the previous behaviour was always to guess, and sometimes it guessed wrong). [originally from svn r7014]
This commit is contained in:
11
CHECKLST.txt
11
CHECKLST.txt
@ -34,11 +34,16 @@ structure in the source file.
|
|||||||
|
|
||||||
Add the new Unix binary name to the svn:ignore property.
|
Add the new Unix binary name to the svn:ignore property.
|
||||||
|
|
||||||
Don't forget to `svn add' the new source file, and the new .R file,
|
Make a screenshot:
|
||||||
before checkin!
|
- create an appropriate save file in `icons'
|
||||||
|
- add the puzzle name to icons/Makefile
|
||||||
|
- set up a REDO property in icons/Makefile if desired
|
||||||
|
|
||||||
|
Don't forget to `svn add' the new source file, the new .R file and
|
||||||
|
the save file in `icons', before checkin!
|
||||||
|
|
||||||
Put the puzzle on the web:
|
Put the puzzle on the web:
|
||||||
- make a screenshot
|
- make sure the screenshot is actually in the www directory
|
||||||
- add an entry in the puzzles list in index.html
|
- add an entry in the puzzles list in index.html
|
||||||
- adjust the copyright in index.html if the puzzle is by a new
|
- adjust the copyright in index.html if the puzzle is by a new
|
||||||
author
|
author
|
||||||
|
100
gtk.c
100
gtk.c
@ -1451,7 +1451,9 @@ static void add_menu_separator(GtkContainer *cont)
|
|||||||
gtk_widget_show(menuitem);
|
gtk_widget_show(menuitem);
|
||||||
}
|
}
|
||||||
|
|
||||||
static frontend *new_window(char *arg, char **error)
|
enum { ARG_EITHER, ARG_SAVE, ARG_ID }; /* for argtype */
|
||||||
|
|
||||||
|
static frontend *new_window(char *arg, int argtype, char **error)
|
||||||
{
|
{
|
||||||
frontend *fe;
|
frontend *fe;
|
||||||
GtkBox *vbox;
|
GtkBox *vbox;
|
||||||
@ -1468,11 +1470,32 @@ static frontend *new_window(char *arg, char **error)
|
|||||||
|
|
||||||
if (arg) {
|
if (arg) {
|
||||||
char *err;
|
char *err;
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
errbuf[0] = '\0';
|
errbuf[0] = '\0';
|
||||||
|
|
||||||
|
switch (argtype) {
|
||||||
|
case ARG_ID:
|
||||||
|
err = midend_game_id(fe->me, arg);
|
||||||
|
if (!err)
|
||||||
|
midend_new_game(fe->me);
|
||||||
|
else
|
||||||
|
sprintf(errbuf, "Invalid game ID: %.800s", err);
|
||||||
|
break;
|
||||||
|
case ARG_SAVE:
|
||||||
|
fp = fopen(arg, "r");
|
||||||
|
if (!fp) {
|
||||||
|
sprintf(errbuf, "Error opening file: %.800s", strerror(errno));
|
||||||
|
} else {
|
||||||
|
err = midend_deserialise(fe->me, savefile_read, fp);
|
||||||
|
if (err)
|
||||||
|
sprintf(errbuf, "Invalid save file: %.800s", err);
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default /*case ARG_EITHER*/:
|
||||||
/*
|
/*
|
||||||
* Try treating the argument as a game ID.
|
* First try treating the argument as a game ID.
|
||||||
*/
|
*/
|
||||||
err = midend_game_id(fe->me, arg);
|
err = midend_game_id(fe->me, arg);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
@ -1492,6 +1515,8 @@ static frontend *new_window(char *arg, char **error)
|
|||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (*errbuf) {
|
if (*errbuf) {
|
||||||
*error = dupstr(errbuf);
|
*error = dupstr(errbuf);
|
||||||
midend_free(fe->me);
|
midend_free(fe->me);
|
||||||
@ -1755,7 +1780,10 @@ int main(int argc, char **argv)
|
|||||||
int ngenerate = 0, print = FALSE, px = 1, py = 1;
|
int ngenerate = 0, print = FALSE, px = 1, py = 1;
|
||||||
int soln = FALSE, colour = FALSE;
|
int soln = FALSE, colour = FALSE;
|
||||||
float scale = 1.0F;
|
float scale = 1.0F;
|
||||||
|
float redo_proportion = 0.0F;
|
||||||
char *arg = NULL;
|
char *arg = NULL;
|
||||||
|
int argtype = ARG_EITHER;
|
||||||
|
int output_window_id = FALSE;
|
||||||
int doing_opts = TRUE;
|
int doing_opts = TRUE;
|
||||||
int ac = argc;
|
int ac = argc;
|
||||||
char **av = argv;
|
char **av = argv;
|
||||||
@ -1826,6 +1854,42 @@ int main(int argc, char **argv)
|
|||||||
pname);
|
pname);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
} else if (doing_opts && !strcmp(p, "--redo")) {
|
||||||
|
/*
|
||||||
|
* This is an internal option which I don't expect
|
||||||
|
* users to have any particular use for. The effect of
|
||||||
|
* --redo is that once the game has been loaded and
|
||||||
|
* initialised, the next move in the redo chain is
|
||||||
|
* replayed, and the game screen is redrawn part way
|
||||||
|
* through the making of the move. This is only
|
||||||
|
* meaningful if there _is_ a next move in the redo
|
||||||
|
* chain, which means in turn that this option is only
|
||||||
|
* useful if you're also passing a save file on the
|
||||||
|
* command line.
|
||||||
|
*
|
||||||
|
* This option is used by the script which generates
|
||||||
|
* the puzzle icons and website screenshots, and I
|
||||||
|
* don't imagine it's useful for anything else.
|
||||||
|
* (Unless, I suppose, users don't like my screenshots
|
||||||
|
* and want to generate their own in the same way for
|
||||||
|
* some repackaged version of the puzzles.)
|
||||||
|
*/
|
||||||
|
if (--ac > 0) {
|
||||||
|
redo_proportion = atof(*++av);
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "%s: no argument supplied to '--redo'\n",
|
||||||
|
pname);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
} else if (doing_opts && !strcmp(p, "--windowid")) {
|
||||||
|
/*
|
||||||
|
* Another internal option for the icon building
|
||||||
|
* script. This causes the window ID of the central
|
||||||
|
* drawing area (i.e. not including the menu bar or
|
||||||
|
* status bar) to be printed on standard output once
|
||||||
|
* the window has been drawn.
|
||||||
|
*/
|
||||||
|
output_window_id = TRUE;
|
||||||
} else if (doing_opts && (!strcmp(p, "--with-solutions") ||
|
} else if (doing_opts && (!strcmp(p, "--with-solutions") ||
|
||||||
!strcmp(p, "--with-solution") ||
|
!strcmp(p, "--with-solution") ||
|
||||||
!strcmp(p, "--with-solns") ||
|
!strcmp(p, "--with-solns") ||
|
||||||
@ -1842,6 +1906,10 @@ int main(int argc, char **argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
colour = TRUE;
|
colour = TRUE;
|
||||||
|
} else if (doing_opts && !strcmp(p, "--load")) {
|
||||||
|
argtype = ARG_SAVE;
|
||||||
|
} else if (doing_opts && !strcmp(p, "--game")) {
|
||||||
|
argtype = ARG_ID;
|
||||||
} else if (doing_opts && !strcmp(p, "--")) {
|
} else if (doing_opts && !strcmp(p, "--")) {
|
||||||
doing_opts = FALSE;
|
doing_opts = FALSE;
|
||||||
} else if (!doing_opts || p[0] != '-') {
|
} else if (!doing_opts || p[0] != '-') {
|
||||||
@ -1971,14 +2039,40 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
frontend *fe;
|
||||||
|
|
||||||
gtk_init(&argc, &argv);
|
gtk_init(&argc, &argv);
|
||||||
|
|
||||||
if (!new_window(argc > 1 ? argv[1] : NULL, &error)) {
|
fe = new_window(arg, argtype, &error);
|
||||||
|
|
||||||
|
if (!fe) {
|
||||||
fprintf(stderr, "%s: %s\n", pname, error);
|
fprintf(stderr, "%s: %s\n", pname, error);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (output_window_id) {
|
||||||
|
/*
|
||||||
|
* Some puzzles will not redraw their entire area if
|
||||||
|
* given a partially completed animation, which means
|
||||||
|
* we must redraw now and _then_ redraw again after
|
||||||
|
* freezing the move timer.
|
||||||
|
*/
|
||||||
|
midend_force_redraw(fe->me);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (redo_proportion) {
|
||||||
|
/* Start a redo. */
|
||||||
|
midend_process_key(fe->me, 0, 0, 'r');
|
||||||
|
/* And freeze the timer at the specified position. */
|
||||||
|
midend_freeze_timer(fe->me, redo_proportion);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (output_window_id) {
|
||||||
|
midend_redraw(fe->me);
|
||||||
|
printf("%p\n", (void *)GDK_WINDOW_XWINDOW(fe->area->window));
|
||||||
|
fflush(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
gtk_main();
|
gtk_main();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
29
icons/Makefile
Normal file
29
icons/Makefile
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Makefile for Puzzles icons.
|
||||||
|
|
||||||
|
PUZZLES = blackbox bridges cube dominosa fifteen flip guess inertia lightup \
|
||||||
|
loopy map mines net netslide pattern pegs rect samegame sixteen \
|
||||||
|
slant solo tents twiddle untangle
|
||||||
|
|
||||||
|
BASEPNGS = $(patsubst %,%-base.png,$(PUZZLES))
|
||||||
|
WEBPNGS = $(patsubst %,%-web.png,$(PUZZLES))
|
||||||
|
|
||||||
|
BIN = ../
|
||||||
|
PIC = ./
|
||||||
|
|
||||||
|
base: $(BASEPNGS)
|
||||||
|
webpics: $(WEBPNGS)
|
||||||
|
|
||||||
|
fifteen.png : override REDO=0.3
|
||||||
|
flip.png : override REDO=0.3
|
||||||
|
netslide.png : override REDO=0.3
|
||||||
|
sixteen.png : override REDO=0.3
|
||||||
|
twiddle.png : override REDO=0.3
|
||||||
|
|
||||||
|
$(BASEPNGS): %-base.png: $(BIN)% $(PIC)%.sav $(PIC)screenshot.sh
|
||||||
|
$(PIC)screenshot.sh $(BIN)$* $(PIC)$*.sav $@ $(REDO)
|
||||||
|
|
||||||
|
$(WEBPNGS): %-web.png: %-base.png
|
||||||
|
$(PIC)square.pl 150 5 $^ $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.png
|
27
icons/blackbox.sav
Normal file
27
icons/blackbox.sav
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :9:Black Box
|
||||||
|
PARAMS :8:w8h8m5M5
|
||||||
|
CPARAMS :8:w8h8m5M5
|
||||||
|
SEED :15:999785320716678
|
||||||
|
DESC :24:c8b9f8528193756b9a2fd24d
|
||||||
|
UI :2:E0
|
||||||
|
NSTATES :2:18
|
||||||
|
STATEPOS:2:13
|
||||||
|
MOVE :2:F2
|
||||||
|
MOVE :2:F4
|
||||||
|
MOVE :2:F5
|
||||||
|
MOVE :3:F25
|
||||||
|
MOVE :3:F26
|
||||||
|
MOVE :3:F11
|
||||||
|
MOVE :3:F12
|
||||||
|
MOVE :3:F15
|
||||||
|
MOVE :4:T7,7
|
||||||
|
MOVE :4:T7,4
|
||||||
|
MOVE :4:T1,7
|
||||||
|
MOVE :2:F3
|
||||||
|
MOVE :2:F9
|
||||||
|
MOVE :3:F27
|
||||||
|
MOVE :4:T5,7
|
||||||
|
MOVE :4:T1,8
|
||||||
|
MOVE :1:R
|
72
icons/bridges.sav
Normal file
72
icons/bridges.sav
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :7:Bridges
|
||||||
|
PARAMS :15:10x10i30e10m2d2
|
||||||
|
CPARAMS :15:10x10i30e10m2d2
|
||||||
|
SEED :15:944199396008454
|
||||||
|
DESC :49:a1a4a4b4k4b6b2a4b2b2b1e2e1a4b4c3j25d2a1f2c3a4d4c3
|
||||||
|
AUXINFO :838:bd75eb5f7b129109b5cdcff0925c77ca5c0a135365002b93b44c5013c7a307b9504affcfb8ad934263196fc3e6d0b023abe48d254d46d29520e50a5e423c0fb1bc01ccc51cad61045c439e7c2bb8e5788bc7f3622aaa3a8125ebde11c9cd69b6f2393246fd094ad91e81ae58cd557b73bd1c9839cfad5835c8519e44298204eaca58dfd79289546959bfbabdc5f3cb7a27b8d3fb2d0b062bd5c2e469493c19f8c89989df73d8a3ab02d9afcbfedf245306d15881a01d153122f8374c7526abecc90919f99ff62e9789cabc402249af095ceb14c8c59c0d9ffbcdd731d50114e7c30c31ef0638f4d352abbfd04b4315d368d65bbfe005b6586245bc5244e5050098cf4c1b6986120f40d5ce038c10a3f309286f950cdc287e495aa13c70ab0c1f113a135556d7ce895fd8244afcbad43fe51f275837f223a1cb95151de8a158cb0add7fa8c9f1fa0e09a1ce842136c1679144cead56b164c4ef1a09ed36fd9704ba191b5957bc3d5bb97d8a1f7451d357a6638ac320b0beb0cd35aa404c8f1621c6d400960aa97bf6ce3a944339d7e401c4d98c31773b2a8881352d5653fdb5e8f7c04b
|
||||||
|
NSTATES :2:63
|
||||||
|
STATEPOS:2:41
|
||||||
|
MOVE :10:L8,0,5,0,1
|
||||||
|
MOVE :10:L8,0,5,0,2
|
||||||
|
MOVE :10:L8,0,8,2,1
|
||||||
|
MOVE :10:L8,0,8,2,2
|
||||||
|
MOVE :4:M8,0
|
||||||
|
MOVE :10:L0,2,3,2,1
|
||||||
|
MOVE :10:L0,2,3,2,2
|
||||||
|
MOVE :10:L0,2,0,7,1
|
||||||
|
MOVE :10:L0,2,0,7,2
|
||||||
|
MOVE :4:M0,2
|
||||||
|
MOVE :10:L1,0,3,0,1
|
||||||
|
MOVE :4:M1,0
|
||||||
|
MOVE :10:L3,0,5,0,1
|
||||||
|
MOVE :10:L3,0,3,2,1
|
||||||
|
MOVE :10:L1,3,1,5,1
|
||||||
|
MOVE :10:L0,7,5,7,1
|
||||||
|
MOVE :10:L0,7,0,9,1
|
||||||
|
MOVE :10:L0,9,5,9,1
|
||||||
|
MOVE :10:L0,9,5,9,2
|
||||||
|
MOVE :10:L0,9,0,7,2
|
||||||
|
MOVE :4:M0,9
|
||||||
|
MOVE :4:M0,7
|
||||||
|
MOVE :10:L4,8,8,8,1
|
||||||
|
MOVE :10:L4,8,8,8,2
|
||||||
|
MOVE :4:M4,8
|
||||||
|
MOVE :10:L5,9,9,9,1
|
||||||
|
MOVE :10:L5,9,9,9,2
|
||||||
|
MOVE :4:M5,9
|
||||||
|
MOVE :10:L9,9,9,6,1
|
||||||
|
MOVE :4:M9,9
|
||||||
|
MOVE :10:L8,8,8,5,1
|
||||||
|
MOVE :4:M8,8
|
||||||
|
MOVE :10:L9,6,9,4,1
|
||||||
|
MOVE :4:M9,6
|
||||||
|
MOVE :4:M9,4
|
||||||
|
MOVE :10:L1,5,4,5,1
|
||||||
|
MOVE :10:L1,5,4,5,2
|
||||||
|
MOVE :10:L1,5,1,3,2
|
||||||
|
MOVE :4:M1,3
|
||||||
|
MOVE :4:M1,5
|
||||||
|
MOVE :10:L3,4,3,2,1
|
||||||
|
MOVE :10:L3,4,3,2,2
|
||||||
|
MOVE :4:M3,4
|
||||||
|
MOVE :10:L4,5,8,5,1
|
||||||
|
MOVE :10:L7,7,5,7,1
|
||||||
|
MOVE :4:M5,7
|
||||||
|
MOVE :4:M7,7
|
||||||
|
MOVE :10:L7,3,4,3,1
|
||||||
|
MOVE :4:M7,3
|
||||||
|
MOVE :10:L5,0,3,0,2
|
||||||
|
MOVE :4:M5,0
|
||||||
|
MOVE :4:M3,0
|
||||||
|
MOVE :10:L3,2,6,2,1
|
||||||
|
MOVE :4:M3,2
|
||||||
|
MOVE :10:L6,2,8,2,1
|
||||||
|
MOVE :4:M6,2
|
||||||
|
MOVE :10:L8,2,8,5,1
|
||||||
|
MOVE :4:M8,2
|
||||||
|
MOVE :4:M8,5
|
||||||
|
MOVE :10:L4,5,4,3,1
|
||||||
|
MOVE :4:M4,3
|
||||||
|
MOVE :4:M4,5
|
22
icons/cube.sav
Normal file
22
icons/cube.sav
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :4:Cube
|
||||||
|
PARAMS :4:c4x4
|
||||||
|
CPARAMS :4:c4x4
|
||||||
|
SEED :15:125146248070163
|
||||||
|
DESC :6:C461,3
|
||||||
|
NSTATES :2:14
|
||||||
|
STATEPOS:1:5
|
||||||
|
MOVE :1:D
|
||||||
|
MOVE :1:D
|
||||||
|
MOVE :1:D
|
||||||
|
MOVE :1:U
|
||||||
|
MOVE :1:L
|
||||||
|
MOVE :1:L
|
||||||
|
MOVE :1:D
|
||||||
|
MOVE :1:U
|
||||||
|
MOVE :1:D
|
||||||
|
MOVE :1:U
|
||||||
|
MOVE :1:U
|
||||||
|
MOVE :1:U
|
||||||
|
MOVE :1:L
|
53
icons/dominosa.sav
Normal file
53
icons/dominosa.sav
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :8:Dominosa
|
||||||
|
PARAMS :1:6
|
||||||
|
CPARAMS :1:6
|
||||||
|
DESC :56:55521461210004364611033535444421636022603153156422620503
|
||||||
|
NSTATES :2:46
|
||||||
|
STATEPOS:2:33
|
||||||
|
MOVE :6:D18,19
|
||||||
|
MOVE :6:E22,23
|
||||||
|
MOVE :6:E22,30
|
||||||
|
MOVE :5:E9,17
|
||||||
|
MOVE :6:D38,46
|
||||||
|
MOVE :6:E14,15
|
||||||
|
MOVE :5:E6,14
|
||||||
|
MOVE :6:E33,34
|
||||||
|
MOVE :6:E34,42
|
||||||
|
MOVE :6:E26,34
|
||||||
|
MOVE :6:D34,35
|
||||||
|
MOVE :6:E42,50
|
||||||
|
MOVE :6:E16,24
|
||||||
|
MOVE :4:D4,5
|
||||||
|
MOVE :4:D6,7
|
||||||
|
MOVE :6:D15,23
|
||||||
|
MOVE :6:E17,25
|
||||||
|
MOVE :6:D16,17
|
||||||
|
MOVE :6:E11,12
|
||||||
|
MOVE :6:D51,52
|
||||||
|
MOVE :5:E3,11
|
||||||
|
MOVE :6:D10,11
|
||||||
|
MOVE :4:D2,3
|
||||||
|
MOVE :6:E37,45
|
||||||
|
MOVE :6:D49,50
|
||||||
|
MOVE :6:D40,48
|
||||||
|
MOVE :6:D25,26
|
||||||
|
MOVE :6:D24,32
|
||||||
|
MOVE :6:D33,41
|
||||||
|
MOVE :6:D42,43
|
||||||
|
MOVE :6:D27,28
|
||||||
|
MOVE :6:E21,29
|
||||||
|
MOVE :6:D31,39
|
||||||
|
MOVE :6:D47,55
|
||||||
|
MOVE :6:E13,21
|
||||||
|
MOVE :6:E13,14
|
||||||
|
MOVE :6:D12,13
|
||||||
|
MOVE :6:D20,21
|
||||||
|
MOVE :6:D14,22
|
||||||
|
MOVE :6:D29,30
|
||||||
|
MOVE :6:D36,37
|
||||||
|
MOVE :6:D44,45
|
||||||
|
MOVE :6:D53,54
|
||||||
|
MOVE :4:D0,1
|
||||||
|
MOVE :4:D8,9
|
74
icons/fifteen.sav
Normal file
74
icons/fifteen.sav
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :7:Fifteen
|
||||||
|
PARAMS :3:4x4
|
||||||
|
CPARAMS :3:4x4
|
||||||
|
SEED :15:307905346810973
|
||||||
|
DESC :37:8,11,3,6,14,13,4,2,0,9,12,10,5,1,7,15
|
||||||
|
NSTATES :2:66
|
||||||
|
STATEPOS:2:47
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M1,3
|
||||||
|
MOVE :4:M0,3
|
||||||
|
MOVE :4:M0,1
|
||||||
|
MOVE :4:M1,1
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M0,2
|
||||||
|
MOVE :4:M0,0
|
||||||
|
MOVE :4:M1,0
|
||||||
|
MOVE :4:M1,1
|
||||||
|
MOVE :4:M0,1
|
||||||
|
MOVE :4:M0,0
|
||||||
|
MOVE :4:M1,0
|
||||||
|
MOVE :4:M3,0
|
||||||
|
MOVE :4:M3,1
|
||||||
|
MOVE :4:M1,1
|
||||||
|
MOVE :4:M1,0
|
||||||
|
MOVE :4:M3,0
|
||||||
|
MOVE :4:M3,1
|
||||||
|
MOVE :4:M1,1
|
||||||
|
MOVE :4:M1,0
|
||||||
|
MOVE :4:M2,0
|
||||||
|
MOVE :4:M2,1
|
||||||
|
MOVE :4:M1,1
|
||||||
|
MOVE :4:M1,3
|
||||||
|
MOVE :4:M0,3
|
||||||
|
MOVE :4:M0,1
|
||||||
|
MOVE :4:M1,1
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M0,2
|
||||||
|
MOVE :4:M0,1
|
||||||
|
MOVE :4:M2,1
|
||||||
|
MOVE :4:M3,1
|
||||||
|
MOVE :4:M3,2
|
||||||
|
MOVE :4:M2,2
|
||||||
|
MOVE :4:M2,3
|
||||||
|
MOVE :4:M3,3
|
||||||
|
MOVE :4:M3,1
|
||||||
|
MOVE :4:M2,1
|
||||||
|
MOVE :4:M2,2
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M1,3
|
||||||
|
MOVE :4:M2,3
|
||||||
|
MOVE :4:M2,2
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M0,2
|
||||||
|
MOVE :4:M0,3
|
||||||
|
MOVE :4:M1,3
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M2,2
|
||||||
|
MOVE :4:M2,3
|
||||||
|
MOVE :4:M0,3
|
||||||
|
MOVE :4:M0,2
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M2,2
|
||||||
|
MOVE :4:M2,3
|
||||||
|
MOVE :4:M1,3
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M3,2
|
||||||
|
MOVE :4:M3,3
|
||||||
|
MOVE :4:M1,3
|
||||||
|
MOVE :4:M1,2
|
||||||
|
MOVE :4:M2,2
|
||||||
|
MOVE :4:M2,3
|
||||||
|
MOVE :4:M3,3
|
20
icons/flip.sav
Normal file
20
icons/flip.sav
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :4:Flip
|
||||||
|
PARAMS :4:5x5c
|
||||||
|
CPARAMS :4:5x5c
|
||||||
|
SEED :15:158897339725978
|
||||||
|
DESC :165:c400007100001c4000071000018400043100011c400047100011c400046100010c400047100011c4000471000118400043100011c400047100011c400046100010c000047000011c0000470000118,5c18b48
|
||||||
|
NSTATES :2:12
|
||||||
|
STATEPOS:1:4
|
||||||
|
MOVE :4:M4,3
|
||||||
|
MOVE :4:M3,0
|
||||||
|
MOVE :4:M2,2
|
||||||
|
MOVE :4:M3,2
|
||||||
|
MOVE :4:M2,3
|
||||||
|
MOVE :4:M0,2
|
||||||
|
MOVE :4:M0,3
|
||||||
|
MOVE :4:M1,4
|
||||||
|
MOVE :4:M0,0
|
||||||
|
MOVE :4:M1,0
|
||||||
|
MOVE :4:M1,1
|
15
icons/guess.sav
Normal file
15
icons/guess.sav
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :5:Guess
|
||||||
|
PARAMS :9:c6p4g10Bm
|
||||||
|
CPARAMS :9:c6p4g10Bm
|
||||||
|
SEED :15:313100730915729
|
||||||
|
DESC :8:b5f3faed
|
||||||
|
UI :7:0,0,0,0
|
||||||
|
NSTATES :1:6
|
||||||
|
STATEPOS:1:6
|
||||||
|
MOVE :8:G1,1,2,2
|
||||||
|
MOVE :8:G4,3,1,1
|
||||||
|
MOVE :8:G5,5,1,1
|
||||||
|
MOVE :8:G4,2,1,6
|
||||||
|
MOVE :8:G2,3,1,6
|
30
icons/inertia.sav
Normal file
30
icons/inertia.sav
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :7:Inertia
|
||||||
|
PARAMS :3:8x8
|
||||||
|
CPARAMS :3:8x8
|
||||||
|
SEED :15:739970145068932
|
||||||
|
DESC :64:sbgwsmswwgggwggmmbwgwbssbwbsbwbbwsSmgbbsbbmsgbmssgmggbmmwmbmmwsw
|
||||||
|
UI :2:D0
|
||||||
|
NSTATES :2:21
|
||||||
|
STATEPOS:1:5
|
||||||
|
MOVE :1:6
|
||||||
|
MOVE :1:5
|
||||||
|
MOVE :1:3
|
||||||
|
MOVE :1:1
|
||||||
|
MOVE :1:6
|
||||||
|
MOVE :1:0
|
||||||
|
MOVE :1:5
|
||||||
|
MOVE :1:7
|
||||||
|
MOVE :1:5
|
||||||
|
MOVE :1:6
|
||||||
|
MOVE :1:1
|
||||||
|
MOVE :1:3
|
||||||
|
MOVE :1:4
|
||||||
|
MOVE :1:2
|
||||||
|
MOVE :1:6
|
||||||
|
MOVE :1:5
|
||||||
|
MOVE :1:3
|
||||||
|
MOVE :1:1
|
||||||
|
MOVE :1:5
|
||||||
|
MOVE :1:3
|
24
icons/lightup.sav
Normal file
24
icons/lightup.sav
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :8:Light Up
|
||||||
|
PARAMS :10:7x7b20s4d1
|
||||||
|
CPARAMS :10:7x7b25s4d1
|
||||||
|
SEED :15:538922615851330
|
||||||
|
DESC :25:b3gB0c0dBaBaBa1aBd1c01g0b
|
||||||
|
NSTATES :2:16
|
||||||
|
STATEPOS:2:16
|
||||||
|
MOVE :4:L1,0
|
||||||
|
MOVE :4:L2,1
|
||||||
|
MOVE :4:L3,0
|
||||||
|
MOVE :4:L0,3
|
||||||
|
MOVE :4:L6,1
|
||||||
|
MOVE :4:L3,4
|
||||||
|
MOVE :4:I6,5
|
||||||
|
MOVE :4:I1,5
|
||||||
|
MOVE :4:I2,6
|
||||||
|
MOVE :4:I3,6
|
||||||
|
MOVE :4:I4,5
|
||||||
|
MOVE :4:I5,6
|
||||||
|
MOVE :4:L5,5
|
||||||
|
MOVE :4:I6,4
|
||||||
|
MOVE :4:I4,2
|
121
icons/loopy.sav
Normal file
121
icons/loopy.sav
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :5:Loopy
|
||||||
|
PARAMS :7:7x7r0dh
|
||||||
|
CPARAMS :7:7x7r0dh
|
||||||
|
SEED :15:206083918429411
|
||||||
|
DESC :31:02g222b3b2e2a2b322b2a2a3a2a1d1b
|
||||||
|
NSTATES :3:113
|
||||||
|
STATEPOS:2:75
|
||||||
|
MOVE :5:0,0vn
|
||||||
|
MOVE :5:0,0hn
|
||||||
|
MOVE :5:1,0vn
|
||||||
|
MOVE :5:0,1hn
|
||||||
|
MOVE :5:1,0hn
|
||||||
|
MOVE :5:1,1hy
|
||||||
|
MOVE :5:2,0vy
|
||||||
|
MOVE :5:2,1vn
|
||||||
|
MOVE :5:2,1hn
|
||||||
|
MOVE :5:2,2hy
|
||||||
|
MOVE :5:3,1vy
|
||||||
|
MOVE :5:3,2vn
|
||||||
|
MOVE :5:3,2hn
|
||||||
|
MOVE :5:3,3hy
|
||||||
|
MOVE :5:4,2vy
|
||||||
|
MOVE :5:4,3vn
|
||||||
|
MOVE :5:4,3hn
|
||||||
|
MOVE :5:4,4hy
|
||||||
|
MOVE :5:5,3vy
|
||||||
|
MOVE :5:5,4vn
|
||||||
|
MOVE :5:5,4hn
|
||||||
|
MOVE :5:5,5hy
|
||||||
|
MOVE :5:6,4vy
|
||||||
|
MOVE :5:6,5vn
|
||||||
|
MOVE :5:6,5hn
|
||||||
|
MOVE :5:7,6vy
|
||||||
|
MOVE :5:6,7hy
|
||||||
|
MOVE :5:0,6vy
|
||||||
|
MOVE :5:0,7hy
|
||||||
|
MOVE :5:0,1vn
|
||||||
|
MOVE :5:0,2vy
|
||||||
|
MOVE :5:0,2hy
|
||||||
|
MOVE :5:1,1vy
|
||||||
|
MOVE :5:1,2hn
|
||||||
|
MOVE :5:1,2vn
|
||||||
|
MOVE :5:0,3hy
|
||||||
|
MOVE :5:0,3vn
|
||||||
|
MOVE :5:0,4vy
|
||||||
|
MOVE :5:0,4hy
|
||||||
|
MOVE :5:2,2vy
|
||||||
|
MOVE :5:2,0hy
|
||||||
|
MOVE :5:3,5vy
|
||||||
|
MOVE :5:2,6hy
|
||||||
|
MOVE :5:3,6vn
|
||||||
|
MOVE :5:3,6hn
|
||||||
|
MOVE :5:1,3vn
|
||||||
|
MOVE :5:1,3hy
|
||||||
|
MOVE :5:2,3vn
|
||||||
|
MOVE :5:3,0vn
|
||||||
|
MOVE :5:3,0hy
|
||||||
|
MOVE :5:3,1hy
|
||||||
|
MOVE :5:4,1vn
|
||||||
|
MOVE :5:4,2hy
|
||||||
|
MOVE :5:4,0vn
|
||||||
|
MOVE :5:4,0hy
|
||||||
|
MOVE :5:4,1hy
|
||||||
|
MOVE :5:5,0vn
|
||||||
|
MOVE :5:5,0hy
|
||||||
|
MOVE :5:5,1vn
|
||||||
|
MOVE :5:5,1hy
|
||||||
|
MOVE :5:6,0vn
|
||||||
|
MOVE :5:6,0hy
|
||||||
|
MOVE :5:7,0vy
|
||||||
|
MOVE :5:6,1hn
|
||||||
|
MOVE :5:6,1vy
|
||||||
|
MOVE :5:7,1vy
|
||||||
|
MOVE :5:6,2hn
|
||||||
|
MOVE :5:7,2vy
|
||||||
|
MOVE :5:2,3hn
|
||||||
|
MOVE :5:3,3vy
|
||||||
|
MOVE :5:2,4hy
|
||||||
|
MOVE :5:3,4vn
|
||||||
|
MOVE :5:3,4hn
|
||||||
|
MOVE :5:4,4vy
|
||||||
|
MOVE :5:4,6vy
|
||||||
|
MOVE :5:4,6hn
|
||||||
|
MOVE :5:5,6vn
|
||||||
|
MOVE :5:4,7hn
|
||||||
|
MOVE :5:4,5vy
|
||||||
|
MOVE :5:4,5hn
|
||||||
|
MOVE :5:3,5hn
|
||||||
|
MOVE :5:2,5hy
|
||||||
|
MOVE :5:2,5vn
|
||||||
|
MOVE :5:2,4vn
|
||||||
|
MOVE :5:1,4hy
|
||||||
|
MOVE :5:1,4vn
|
||||||
|
MOVE :5:1,5hy
|
||||||
|
MOVE :5:0,5hy
|
||||||
|
MOVE :5:0,5vn
|
||||||
|
MOVE :5:1,5vn
|
||||||
|
MOVE :5:0,6hy
|
||||||
|
MOVE :5:1,6vn
|
||||||
|
MOVE :5:1,6hy
|
||||||
|
MOVE :5:1,7hy
|
||||||
|
MOVE :5:2,6vn
|
||||||
|
MOVE :5:2,7hy
|
||||||
|
MOVE :5:3,7hy
|
||||||
|
MOVE :5:5,7hn
|
||||||
|
MOVE :5:6,6vy
|
||||||
|
MOVE :5:6,6hn
|
||||||
|
MOVE :5:7,5vy
|
||||||
|
MOVE :5:7,4vy
|
||||||
|
MOVE :5:5,6hy
|
||||||
|
MOVE :5:5,5vy
|
||||||
|
MOVE :5:6,4hn
|
||||||
|
MOVE :5:7,3vy
|
||||||
|
MOVE :5:6,3vy
|
||||||
|
MOVE :5:6,3hn
|
||||||
|
MOVE :5:5,2vn
|
||||||
|
MOVE :5:5,2hy
|
||||||
|
MOVE :5:6,2vn
|
||||||
|
MOVE :5:5,3hy
|
27
icons/map.sav
Normal file
27
icons/map.sav
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :3:Map
|
||||||
|
PARAMS :10:20x20n30dn
|
||||||
|
CPARAMS :10:20x20n30dn
|
||||||
|
SEED :15:794003990129265
|
||||||
|
DESC :264:dcbakatgcaaedaccabfabadbaaaagaiaaaeaiadcaaaafabccbdcaaecabggedfaebqbadgbngcblabdaadaaaeagabaaaacaacacbcaebabaabaebaafaaakabdhcdanaaceagakacbbajaaadbacbaaccbcbicdafbadgbaccbkcdaafbacbcaaabcddacaaaaddbabcdbbacabbhagajabbobcdjaecaafabahaaaffead,23a01c3c1a3d2a20b01a3a
|
||||||
|
AUXINFO :282:738e7a68c5d32445002968f3726646962b3604ef27a3657e0fdc0fd8180d5b747febd4619487bbc8bec5a48c709b154eb8da39c9b49be1e312a381fc2394e53126714079bd82e8444dad92419429635d1c816c53774b8c77b4ce03884c94d12bfb757cd93b5600471cb9726b3f2afe74d9932abeaa2efd6a496cad793ce5b221f943d620e883794f9d56741908
|
||||||
|
NSTATES :2:18
|
||||||
|
STATEPOS:2:12
|
||||||
|
MOVE :4:3:20
|
||||||
|
MOVE :4:0:24
|
||||||
|
MOVE :4:3:10
|
||||||
|
MOVE :4:1:18
|
||||||
|
MOVE :4:2:11
|
||||||
|
MOVE :4:3:17
|
||||||
|
MOVE :4:1:23
|
||||||
|
MOVE :4:3:27
|
||||||
|
MOVE :4:1:29
|
||||||
|
MOVE :4:0:16
|
||||||
|
MOVE :4:2:13
|
||||||
|
MOVE :3:1:6
|
||||||
|
MOVE :3:2:2
|
||||||
|
MOVE :3:0:7
|
||||||
|
MOVE :3:2:9
|
||||||
|
MOVE :4:0:15
|
||||||
|
MOVE :3:3:5
|
67
icons/mines.sav
Normal file
67
icons/mines.sav
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :5:Mines
|
||||||
|
PARAMS :6:9x9n35
|
||||||
|
CPARAMS :6:9x9n35
|
||||||
|
SEED :15:698938038698621
|
||||||
|
DESC :26:0,0,me0691ca8a278f3c371688
|
||||||
|
PRIVDESC:22:me0691ca8a278f3c371688
|
||||||
|
UI :3:D0C
|
||||||
|
TIME :7:75.2958
|
||||||
|
NSTATES :2:56
|
||||||
|
STATEPOS:2:41
|
||||||
|
MOVE :4:O0,0
|
||||||
|
MOVE :4:F1,2
|
||||||
|
MOVE :4:F0,2
|
||||||
|
MOVE :4:O2,2
|
||||||
|
MOVE :4:F2,1
|
||||||
|
MOVE :4:F3,1
|
||||||
|
MOVE :4:F3,2
|
||||||
|
MOVE :4:F3,3
|
||||||
|
MOVE :4:F1,3
|
||||||
|
MOVE :4:F2,3
|
||||||
|
MOVE :4:C1,0
|
||||||
|
MOVE :4:C2,0
|
||||||
|
MOVE :4:C3,0
|
||||||
|
MOVE :4:F5,0
|
||||||
|
MOVE :4:F5,1
|
||||||
|
MOVE :4:C4,1
|
||||||
|
MOVE :4:O6,1
|
||||||
|
MOVE :4:O6,2
|
||||||
|
MOVE :4:O6,3
|
||||||
|
MOVE :4:F7,1
|
||||||
|
MOVE :4:O7,4
|
||||||
|
MOVE :4:O5,4
|
||||||
|
MOVE :4:F5,3
|
||||||
|
MOVE :4:F5,5
|
||||||
|
MOVE :4:F6,6
|
||||||
|
MOVE :4:C6,5
|
||||||
|
MOVE :4:F8,6
|
||||||
|
MOVE :4:C6,3
|
||||||
|
MOVE :4:F8,2
|
||||||
|
MOVE :4:C7,2
|
||||||
|
MOVE :4:F8,0
|
||||||
|
MOVE :4:F7,0
|
||||||
|
MOVE :4:F6,0
|
||||||
|
MOVE :4:C4,2
|
||||||
|
MOVE :4:F4,4
|
||||||
|
MOVE :4:F4,5
|
||||||
|
MOVE :4:F3,4
|
||||||
|
MOVE :4:C5,6
|
||||||
|
MOVE :4:F7,7
|
||||||
|
MOVE :4:F8,7
|
||||||
|
MOVE :4:F7,8
|
||||||
|
MOVE :4:O4,8
|
||||||
|
MOVE :4:F3,6
|
||||||
|
MOVE :4:C4,6
|
||||||
|
MOVE :4:F3,8
|
||||||
|
MOVE :4:F5,8
|
||||||
|
MOVE :4:C6,7
|
||||||
|
MOVE :4:C3,7
|
||||||
|
MOVE :4:F2,5
|
||||||
|
MOVE :4:F2,4
|
||||||
|
MOVE :4:F1,8
|
||||||
|
MOVE :4:F1,7
|
||||||
|
MOVE :4:C2,7
|
||||||
|
MOVE :4:C2,6
|
||||||
|
MOVE :4:C1,6
|
53
icons/net.sav
Normal file
53
icons/net.sav
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :3:Net
|
||||||
|
PARAMS :3:5x5
|
||||||
|
CPARAMS :3:5x5
|
||||||
|
DESC :25:1115337157375775157135131
|
||||||
|
UI :9:O0,0;C2,2
|
||||||
|
NSTATES :2:45
|
||||||
|
STATEPOS:2:45
|
||||||
|
MOVE :4:C0,0
|
||||||
|
MOVE :4:L0,0
|
||||||
|
MOVE :4:L0,1
|
||||||
|
MOVE :4:C0,2
|
||||||
|
MOVE :4:L0,2
|
||||||
|
MOVE :4:A0,3
|
||||||
|
MOVE :4:L0,3
|
||||||
|
MOVE :4:L0,4
|
||||||
|
MOVE :4:L1,4
|
||||||
|
MOVE :4:A2,4
|
||||||
|
MOVE :4:A2,4
|
||||||
|
MOVE :4:L2,4
|
||||||
|
MOVE :4:C1,0
|
||||||
|
MOVE :4:L1,0
|
||||||
|
MOVE :4:L3,0
|
||||||
|
MOVE :4:L2,0
|
||||||
|
MOVE :4:A4,0
|
||||||
|
MOVE :4:A4,0
|
||||||
|
MOVE :4:L4,0
|
||||||
|
MOVE :4:A4,1
|
||||||
|
MOVE :4:L4,1
|
||||||
|
MOVE :4:L3,1
|
||||||
|
MOVE :4:A3,2
|
||||||
|
MOVE :4:A3,2
|
||||||
|
MOVE :4:L3,2
|
||||||
|
MOVE :4:L2,2
|
||||||
|
MOVE :4:A2,1
|
||||||
|
MOVE :4:A2,1
|
||||||
|
MOVE :4:A1,1
|
||||||
|
MOVE :4:A1,1
|
||||||
|
MOVE :4:A1,1
|
||||||
|
MOVE :4:A1,1
|
||||||
|
MOVE :4:A1,1
|
||||||
|
MOVE :4:A1,1
|
||||||
|
MOVE :4:A1,2
|
||||||
|
MOVE :4:A1,2
|
||||||
|
MOVE :4:A1,3
|
||||||
|
MOVE :4:C2,3
|
||||||
|
MOVE :4:A3,3
|
||||||
|
MOVE :4:A4,4
|
||||||
|
MOVE :4:A4,4
|
||||||
|
MOVE :4:A4,3
|
||||||
|
MOVE :4:A4,2
|
||||||
|
MOVE :4:A4,2
|
47
icons/netslide.sav
Normal file
47
icons/netslide.sav
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :8:Netslide
|
||||||
|
PARAMS :3:4x4
|
||||||
|
CPARAMS :3:4x4
|
||||||
|
SEED :15:344208514520242
|
||||||
|
DESC :16:49b59aca247714b4
|
||||||
|
AUXINFO :34:60d28a22f68cdb6078d67a4d6069b9ff54
|
||||||
|
NSTATES :2:38
|
||||||
|
STATEPOS:2:31
|
||||||
|
MOVE :4:R0,1
|
||||||
|
MOVE :4:C1,1
|
||||||
|
MOVE :4:R1,1
|
||||||
|
MOVE :4:R1,1
|
||||||
|
MOVE :4:C3,1
|
||||||
|
MOVE :4:C1,1
|
||||||
|
MOVE :4:R1,1
|
||||||
|
MOVE :4:R1,1
|
||||||
|
MOVE :4:R3,1
|
||||||
|
MOVE :4:R0,1
|
||||||
|
MOVE :4:C1,1
|
||||||
|
MOVE :5:R3,-1
|
||||||
|
MOVE :5:R0,-1
|
||||||
|
MOVE :4:R0,1
|
||||||
|
MOVE :4:R0,1
|
||||||
|
MOVE :4:C0,1
|
||||||
|
MOVE :5:R0,-1
|
||||||
|
MOVE :5:R0,-1
|
||||||
|
MOVE :5:C1,-1
|
||||||
|
MOVE :4:R1,1
|
||||||
|
MOVE :4:C1,1
|
||||||
|
MOVE :5:R1,-1
|
||||||
|
MOVE :5:C0,-1
|
||||||
|
MOVE :5:C0,-1
|
||||||
|
MOVE :4:R3,1
|
||||||
|
MOVE :4:C0,1
|
||||||
|
MOVE :4:C0,1
|
||||||
|
MOVE :5:R3,-1
|
||||||
|
MOVE :4:C0,1
|
||||||
|
MOVE :5:R3,-1
|
||||||
|
MOVE :5:C1,-1
|
||||||
|
MOVE :4:R0,1
|
||||||
|
MOVE :4:C0,1
|
||||||
|
MOVE :5:R0,-1
|
||||||
|
MOVE :5:C0,-1
|
||||||
|
MOVE :4:C1,1
|
||||||
|
MOVE :4:R3,1
|
30
icons/pattern.sav
Normal file
30
icons/pattern.sav
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :7:Pattern
|
||||||
|
PARAMS :5:10x10
|
||||||
|
CPARAMS :5:10x10
|
||||||
|
DESC :67:4.3/2.2/1.4/3.2/2.3.2/4/6/6/3.1/1/1.1.4/1.1.3/3.3/2.3/6/5/4/1.1/5/5
|
||||||
|
NSTATES :2:23
|
||||||
|
STATEPOS:2:23
|
||||||
|
MOVE :8:F6,4,1,2
|
||||||
|
MOVE :8:F7,4,1,2
|
||||||
|
MOVE :8:F4,4,2,1
|
||||||
|
MOVE :8:E0,4,2,1
|
||||||
|
MOVE :8:F0,0,1,4
|
||||||
|
MOVE :8:F5,5,1,1
|
||||||
|
MOVE :8:E0,5,3,1
|
||||||
|
MOVE :8:F2,6,1,4
|
||||||
|
MOVE :8:E1,7,1,1
|
||||||
|
MOVE :8:E3,7,1,1
|
||||||
|
MOVE :8:F3,6,1,1
|
||||||
|
MOVE :8:E6,6,4,1
|
||||||
|
MOVE :8:F6,0,1,4
|
||||||
|
MOVE :8:F7,0,1,5
|
||||||
|
MOVE :8:E6,6,1,3
|
||||||
|
MOVE :8:E7,7,1,3
|
||||||
|
MOVE :8:E6,9,1,1
|
||||||
|
MOVE :8:F0,7,1,2
|
||||||
|
MOVE :8:F1,8,4,1
|
||||||
|
MOVE :8:E5,8,1,1
|
||||||
|
MOVE :8:F3,9,1,1
|
||||||
|
MOVE :8:F4,9,1,1
|
16
icons/pegs.sav
Normal file
16
icons/pegs.sav
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :4:Pegs
|
||||||
|
PARAMS :8:7x7cross
|
||||||
|
CPARAMS :8:7x7cross
|
||||||
|
SEED :15:103342250484448
|
||||||
|
DESC :49:OOPPPOOOOPPPOOPPPPPPPPPPHPPPPPPPPPPOOPPPOOOOPPPOO
|
||||||
|
NSTATES :1:8
|
||||||
|
STATEPOS:1:8
|
||||||
|
MOVE :7:3,1-3,3
|
||||||
|
MOVE :7:5,2-3,2
|
||||||
|
MOVE :7:5,4-5,2
|
||||||
|
MOVE :7:3,4-5,4
|
||||||
|
MOVE :7:6,4-4,4
|
||||||
|
MOVE :7:4,0-4,2
|
||||||
|
MOVE :7:2,0-4,0
|
17
icons/rect.sav
Normal file
17
icons/rect.sav
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :10:Rectangles
|
||||||
|
PARAMS :3:7x7
|
||||||
|
CPARAMS :3:7x7
|
||||||
|
DESC :33:a3d2b2a3_2a4a8h2a3c4_2b2c3a3_3c3b
|
||||||
|
NSTATES :2:10
|
||||||
|
STATEPOS:2:10
|
||||||
|
MOVE :8:R0,6,3,1
|
||||||
|
MOVE :8:R6,4,1,3
|
||||||
|
MOVE :8:R3,6,3,1
|
||||||
|
MOVE :8:R4,4,2,1
|
||||||
|
MOVE :8:R3,5,3,1
|
||||||
|
MOVE :8:R6,1,1,3
|
||||||
|
MOVE :8:R5,0,2,1
|
||||||
|
MOVE :8:R5,1,1,2
|
||||||
|
MOVE :8:R4,3,2,1
|
34
icons/samegame.sav
Normal file
34
icons/samegame.sav
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :9:Same Game
|
||||||
|
PARAMS :9:10x10c3s2
|
||||||
|
CPARAMS :9:10x10c3s2
|
||||||
|
SEED :15:785412408200083
|
||||||
|
DESC :199:1,1,3,1,2,2,1,2,3,2,2,2,3,3,2,1,1,1,3,2,3,3,2,3,1,3,2,1,1,3,1,2,2,2,3,2,3,2,3,2,1,3,1,2,1,2,3,2,1,3,2,3,1,1,3,3,1,3,3,3,1,1,3,2,2,1,1,2,1,2,2,2,3,1,3,2,2,1,2,3,3,1,2,3,1,3,3,2,1,3,3,1,3,1,2,2,1,3,1,2
|
||||||
|
NSTATES :2:26
|
||||||
|
STATEPOS:2:13
|
||||||
|
MOVE :6:M94,95
|
||||||
|
MOVE :6:M83,84
|
||||||
|
MOVE :9:M83,93,94
|
||||||
|
MOVE :6:M93,94
|
||||||
|
MOVE :6:M20,21
|
||||||
|
MOVE :15:M20,21,22,31,32
|
||||||
|
MOVE :6:M70,71
|
||||||
|
MOVE :6:M80,90
|
||||||
|
MOVE :9:M73,82,83
|
||||||
|
MOVE :18:M72,73,74,82,83,92
|
||||||
|
MOVE :12:M51,61,62,72
|
||||||
|
MOVE :9:M35,36,46
|
||||||
|
MOVE :12:M49,57,58,59
|
||||||
|
MOVE :6:M59,69
|
||||||
|
MOVE :9:M69,79,89
|
||||||
|
MOVE :12:M78,79,89,99
|
||||||
|
MOVE :24:M45,46,47,54,55,57,64,67
|
||||||
|
MOVE :36:M36,46,55,56,57,66,67,68,77,78,88,98
|
||||||
|
MOVE :9:M76,77,87
|
||||||
|
MOVE :6:M97,98
|
||||||
|
MOVE :6:M94,95
|
||||||
|
MOVE :45:M50,60,61,70,71,81,82,83,84,85,90,91,92,93,94
|
||||||
|
MOVE :12:M73,81,82,83
|
||||||
|
MOVE :6:M92,93
|
||||||
|
MOVE :9:M81,90,91
|
34
icons/screenshot.sh
Executable file
34
icons/screenshot.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Generate a screenshot from a puzzle save file. Takes the
|
||||||
|
# following arguments, in order:
|
||||||
|
#
|
||||||
|
# - the name of the puzzle binary
|
||||||
|
# - the name of the save file
|
||||||
|
# - the name of the output image file
|
||||||
|
# - (optionally) the proportion of the next move to redo before
|
||||||
|
# taking the screenshot.
|
||||||
|
#
|
||||||
|
# This script requires access to an X server in order to run, but
|
||||||
|
# seems to work fine under xvfb-run if you haven't got a real one
|
||||||
|
# available (or if you don't want to use it for some reason).
|
||||||
|
|
||||||
|
binary="$1"
|
||||||
|
save="$2"
|
||||||
|
image="$3"
|
||||||
|
if test "x$4" != "x"; then
|
||||||
|
redo="--redo $4"
|
||||||
|
else
|
||||||
|
redo=
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$binary" $redo --windowid --load "$save" 2>/dev/null | {
|
||||||
|
read windowid
|
||||||
|
# I'm not sure why I have to do this sleep, since gtk.c does
|
||||||
|
# carefully redraw the window _before_ outputting the window ID,
|
||||||
|
# but nonetheless this script doesn't seem to be reliable without
|
||||||
|
# it :-/
|
||||||
|
sleep 1
|
||||||
|
xwd -silent -id $windowid | convert xwd:- "$image"
|
||||||
|
xkill -id $windowid >/dev/null
|
||||||
|
}
|
39
icons/sixteen.sav
Normal file
39
icons/sixteen.sav
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :7:Sixteen
|
||||||
|
PARAMS :3:4x4
|
||||||
|
CPARAMS :3:4x4
|
||||||
|
SEED :15:601798566229573
|
||||||
|
DESC :38:2,16,3,10,13,8,7,4,9,14,12,11,15,1,5,6
|
||||||
|
NSTATES :2:31
|
||||||
|
STATEPOS:2:24
|
||||||
|
MOVE :5:C3,-1
|
||||||
|
MOVE :4:R0,1
|
||||||
|
MOVE :4:C1,1
|
||||||
|
MOVE :5:R0,-1
|
||||||
|
MOVE :5:C1,-1
|
||||||
|
MOVE :5:C3,-1
|
||||||
|
MOVE :4:R2,1
|
||||||
|
MOVE :4:R2,1
|
||||||
|
MOVE :4:C3,1
|
||||||
|
MOVE :5:C2,-1
|
||||||
|
MOVE :5:C2,-1
|
||||||
|
MOVE :4:R1,1
|
||||||
|
MOVE :4:R1,1
|
||||||
|
MOVE :4:C2,1
|
||||||
|
MOVE :4:C2,1
|
||||||
|
MOVE :4:R3,1
|
||||||
|
MOVE :4:R3,1
|
||||||
|
MOVE :4:C1,1
|
||||||
|
MOVE :5:R2,-1
|
||||||
|
MOVE :5:R2,-1
|
||||||
|
MOVE :5:C1,-1
|
||||||
|
MOVE :4:R2,1
|
||||||
|
MOVE :4:C0,1
|
||||||
|
MOVE :4:R3,1
|
||||||
|
MOVE :5:R2,-1
|
||||||
|
MOVE :5:C1,-1
|
||||||
|
MOVE :4:R2,1
|
||||||
|
MOVE :4:C1,1
|
||||||
|
MOVE :5:R3,-1
|
||||||
|
MOVE :5:C0,-1
|
51
icons/slant.sav
Normal file
51
icons/slant.sav
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :5:Slant
|
||||||
|
PARAMS :5:8x8de
|
||||||
|
CPARAMS :5:8x8de
|
||||||
|
DESC :47:a10h23a32a02b22e3a2c1g3a20d32a0c221a210i0a101b0
|
||||||
|
NSTATES :2:44
|
||||||
|
STATEPOS:2:44
|
||||||
|
MOVE :4:/7,0
|
||||||
|
MOVE :4:\7,1
|
||||||
|
MOVE :4:\1,0
|
||||||
|
MOVE :4:/2,0
|
||||||
|
MOVE :4:\0,4
|
||||||
|
MOVE :4:/0,5
|
||||||
|
MOVE :4:\0,6
|
||||||
|
MOVE :4:/0,7
|
||||||
|
MOVE :4:\1,7
|
||||||
|
MOVE :4:/7,7
|
||||||
|
MOVE :4:/3,7
|
||||||
|
MOVE :4:\4,7
|
||||||
|
MOVE :4:\5,7
|
||||||
|
MOVE :4:/2,7
|
||||||
|
MOVE :4:/7,4
|
||||||
|
MOVE :4:\7,5
|
||||||
|
MOVE :4:\7,3
|
||||||
|
MOVE :4:\7,2
|
||||||
|
MOVE :4:/6,2
|
||||||
|
MOVE :4:\6,3
|
||||||
|
MOVE :4:\7,6
|
||||||
|
MOVE :4:/3,0
|
||||||
|
MOVE :4:/2,1
|
||||||
|
MOVE :4:\3,1
|
||||||
|
MOVE :4:/2,2
|
||||||
|
MOVE :4:\3,2
|
||||||
|
MOVE :4:/2,3
|
||||||
|
MOVE :4:\3,3
|
||||||
|
MOVE :4:\1,1
|
||||||
|
MOVE :4:/0,1
|
||||||
|
MOVE :4:\0,2
|
||||||
|
MOVE :4:\1,2
|
||||||
|
MOVE :4:\1,3
|
||||||
|
MOVE :4:/0,3
|
||||||
|
MOVE :4:\1,4
|
||||||
|
MOVE :4:\0,0
|
||||||
|
MOVE :4:\5,3
|
||||||
|
MOVE :4:\6,4
|
||||||
|
MOVE :4:/5,4
|
||||||
|
MOVE :4:/5,5
|
||||||
|
MOVE :4:\6,5
|
||||||
|
MOVE :4:/4,5
|
||||||
|
MOVE :4:\4,6
|
36
icons/solo.sav
Normal file
36
icons/solo.sav
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :4:Solo
|
||||||
|
PARAMS :3:3x3
|
||||||
|
CPARAMS :3:3x3
|
||||||
|
DESC :73:a2e9a5b6a2b3_7a1_4a9_6a2b4_1a7_2b1_7e6_9b2_5a8_1b6a5_9a3_8a7_2b8a6b1a1e4a
|
||||||
|
NSTATES :2:29
|
||||||
|
STATEPOS:2:29
|
||||||
|
MOVE :6:R7,1,1
|
||||||
|
MOVE :6:R4,6,1
|
||||||
|
MOVE :6:R5,0,1
|
||||||
|
MOVE :6:R0,0,4
|
||||||
|
MOVE :6:R2,0,6
|
||||||
|
MOVE :6:R1,2,3
|
||||||
|
MOVE :6:R0,3,9
|
||||||
|
MOVE :6:R1,3,5
|
||||||
|
MOVE :6:R2,4,8
|
||||||
|
MOVE :6:R0,5,3
|
||||||
|
MOVE :6:R1,5,6
|
||||||
|
MOVE :6:R1,6,4
|
||||||
|
MOVE :6:R4,7,4
|
||||||
|
MOVE :6:R7,6,2
|
||||||
|
MOVE :6:R7,7,5
|
||||||
|
MOVE :6:R8,8,6
|
||||||
|
MOVE :6:R7,3,3
|
||||||
|
MOVE :6:R8,3,7
|
||||||
|
MOVE :6:R8,3,8
|
||||||
|
MOVE :6:R6,4,5
|
||||||
|
MOVE :6:R7,5,7
|
||||||
|
MOVE :6:R8,5,4
|
||||||
|
MOVE :6:R7,2,8
|
||||||
|
MOVE :6:R8,0,5
|
||||||
|
MOVE :6:R4,2,5
|
||||||
|
MOVE :6:R4,3,6
|
||||||
|
MOVE :6:R5,4,4
|
||||||
|
MOVE :6:R4,5,9
|
86
icons/square.pl
Executable file
86
icons/square.pl
Executable file
@ -0,0 +1,86 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# Read an input image, crop its border to a standard width, and
|
||||||
|
# convert it into a square output image. Parameters are:
|
||||||
|
#
|
||||||
|
# - the required total image size
|
||||||
|
# - the output border thickness
|
||||||
|
# - the input image file name
|
||||||
|
# - the output image file name.
|
||||||
|
|
||||||
|
($osize, $oborder, $infile, $outfile) = @ARGV;
|
||||||
|
|
||||||
|
# Determine the input image's size.
|
||||||
|
$ident = `identify -format "%w %h" $infile`;
|
||||||
|
$ident =~ /(\d+) (\d+)/ or die "unable to get size for $infile\n";
|
||||||
|
($w, $h) = ($1, $2);
|
||||||
|
|
||||||
|
# Read the input image data.
|
||||||
|
$data = [];
|
||||||
|
open IDATA, "convert $infile rgb:- |";
|
||||||
|
push @$data, $rgb while (read IDATA,$rgb,3,0) == 3;
|
||||||
|
close IDATA;
|
||||||
|
# Check we have the right amount of data.
|
||||||
|
$xl = $w * $h;
|
||||||
|
$al = scalar @$data;
|
||||||
|
die "wrong amount of image data ($al, expected $xl) from $img\n"
|
||||||
|
unless $al == $xl;
|
||||||
|
|
||||||
|
# Find the background colour. We assume the image already has a
|
||||||
|
# border, so this is just the pixel colour of the top left corner.
|
||||||
|
$back = $data->[0];
|
||||||
|
|
||||||
|
# Crop rows and columns off the image to find the central rectangle
|
||||||
|
# of non-background stuff.
|
||||||
|
$ystart = 0;
|
||||||
|
$ystart++ while $ystart < $h and scalar(grep { $_ ne $back } map { $data->[$ystart*$w+$_] } 0 .. ($w-1)) == 0;
|
||||||
|
$yend = $h-1;
|
||||||
|
$yend-- while $yend >= $ystart and scalar(grep { $_ ne $back } map { $data->[$yend*$w+$_] } 0 .. ($w-1)) == 0;
|
||||||
|
$xstart = 0;
|
||||||
|
$xstart++ while $xstart < $w and scalar(grep { $_ ne $back } map { $data->[$_*$w+$xstart] } 0 .. ($h-1)) == 0;
|
||||||
|
$xend = $w-1;
|
||||||
|
$xend-- while $xend >= $xstart and scalar(grep { $_ ne $back } map { $data->[$_*$w+$xend] } 0 .. ($h-1)) == 0;
|
||||||
|
|
||||||
|
# Decide how much border we're going to put back on to make the
|
||||||
|
# image perfectly square.
|
||||||
|
$hexpand = ($yend-$ystart) - ($xend-$xstart);
|
||||||
|
if ($hexpand > 0) {
|
||||||
|
$left = int($hexpand / 2);
|
||||||
|
$xstart -= $left;
|
||||||
|
$xend += $hexpand - $left;
|
||||||
|
} elsif ($hexpand < 0) {
|
||||||
|
$vexpand = -$hexpand;
|
||||||
|
$top = int($vexpand / 2);
|
||||||
|
$ystart -= $top;
|
||||||
|
$yend += $vexpand - $top;
|
||||||
|
}
|
||||||
|
$ow = $xend - $xstart + 1;
|
||||||
|
$oh = $yend - $ystart + 1;
|
||||||
|
die "internal computation problem" if $ow != $oh; # should be square
|
||||||
|
|
||||||
|
# And decide how much _more_ border goes on to add the bit around
|
||||||
|
# the edge.
|
||||||
|
$realow = int($ow * ($osize / ($osize - 2*$oborder)));
|
||||||
|
$extra = $realow - $ow;
|
||||||
|
$left = int($extra / 2);
|
||||||
|
$xstart -= $left;
|
||||||
|
$xend += $extra - $left;
|
||||||
|
$top = int($extra / 2);
|
||||||
|
$ystart -= $top;
|
||||||
|
$yend += $extra - $top;
|
||||||
|
$ow = $xend - $xstart + 1;
|
||||||
|
$oh = $yend - $ystart + 1;
|
||||||
|
die "internal computation problem" if $ow != $oh; # should be square
|
||||||
|
|
||||||
|
# Now write out the resulting image, and resize it appropriately.
|
||||||
|
open IDATA, "| convert -size ${ow}x${oh} -depth 8 -resize ${osize}x${osize}! rgb:- $outfile";
|
||||||
|
for ($y = $ystart; $y <= $yend; $y++) {
|
||||||
|
for ($x = $xstart; $x <= $xend; $x++) {
|
||||||
|
if ($x >= 0 && $x < $w && $y >= 0 && $y < $h) {
|
||||||
|
print IDATA $data->[$y*$w+$x];
|
||||||
|
} else {
|
||||||
|
print IDATA $back;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close IDATA;
|
32
icons/tents.sav
Normal file
32
icons/tents.sav
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :5:Tents
|
||||||
|
PARAMS :5:8x8de
|
||||||
|
CPARAMS :5:8x8de
|
||||||
|
DESC :45:ea_ddidfaabkd,3,0,2,1,2,2,1,1,3,1,1,1,1,1,3,1
|
||||||
|
NSTATES :2:25
|
||||||
|
STATEPOS:2:25
|
||||||
|
MOVE :9:N5,6;N6,6
|
||||||
|
MOVE :14:N5,7;N6,7;N7,7
|
||||||
|
MOVE :9:N0,7;N1,7
|
||||||
|
MOVE :4:N1,6
|
||||||
|
MOVE :14:N6,2;N6,3;N6,4
|
||||||
|
MOVE :9:N7,2;N7,3
|
||||||
|
MOVE :14:N1,0;N2,0;N3,0
|
||||||
|
MOVE :4:N3,1
|
||||||
|
MOVE :4:N0,3
|
||||||
|
MOVE :4:N3,4
|
||||||
|
MOVE :4:N5,4
|
||||||
|
MOVE :4:T6,0
|
||||||
|
MOVE :4:T4,0
|
||||||
|
MOVE :4:T0,0
|
||||||
|
MOVE :4:N1,1
|
||||||
|
MOVE :4:N4,1
|
||||||
|
MOVE :9:N6,1;N7,1
|
||||||
|
MOVE :4:T2,1
|
||||||
|
MOVE :9:N1,2;N3,2
|
||||||
|
MOVE :4:T5,2
|
||||||
|
MOVE :4:N4,2
|
||||||
|
MOVE :4:N5,3
|
||||||
|
MOVE :4:N0,2
|
||||||
|
MOVE :9:N1,3;N1,5
|
35
icons/twiddle.sav
Normal file
35
icons/twiddle.sav
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :7:Twiddle
|
||||||
|
PARAMS :5:3x3n2
|
||||||
|
CPARAMS :5:3x3n2
|
||||||
|
SEED :15:635499951462226
|
||||||
|
DESC :17:3,7,2,6,5,1,8,4,9
|
||||||
|
NSTATES :2:27
|
||||||
|
STATEPOS:2:22
|
||||||
|
MOVE :7:M0,0,-1
|
||||||
|
MOVE :7:M1,0,-1
|
||||||
|
MOVE :6:M1,1,1
|
||||||
|
MOVE :6:M0,1,1
|
||||||
|
MOVE :6:M0,0,1
|
||||||
|
MOVE :6:M0,0,1
|
||||||
|
MOVE :7:M1,1,-1
|
||||||
|
MOVE :7:M0,1,-1
|
||||||
|
MOVE :7:M0,1,-1
|
||||||
|
MOVE :7:M1,1,-1
|
||||||
|
MOVE :6:M0,1,1
|
||||||
|
MOVE :7:M0,1,-1
|
||||||
|
MOVE :6:M1,1,1
|
||||||
|
MOVE :6:M1,1,1
|
||||||
|
MOVE :6:M0,1,1
|
||||||
|
MOVE :6:M0,1,1
|
||||||
|
MOVE :7:M0,1,-1
|
||||||
|
MOVE :7:M1,1,-1
|
||||||
|
MOVE :7:M0,1,-1
|
||||||
|
MOVE :7:M1,1,-1
|
||||||
|
MOVE :6:M0,1,1
|
||||||
|
MOVE :7:M1,0,-1
|
||||||
|
MOVE :7:M0,1,-1
|
||||||
|
MOVE :6:M1,0,1
|
||||||
|
MOVE :6:M1,1,1
|
||||||
|
MOVE :6:M1,1,1
|
16
icons/untangle.sav
Normal file
16
icons/untangle.sav
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
|
||||||
|
VERSION :1:1
|
||||||
|
GAME :8:Untangle
|
||||||
|
PARAMS :2:10
|
||||||
|
CPARAMS :2:10
|
||||||
|
SEED :15:761628688787632
|
||||||
|
DESC :63:0-1,0-5,0-8,0-9,1-4,1-8,2-6,2-7,3-5,3-6,3-9,4-5,4-7,5-7,6-7,8-9
|
||||||
|
AUXINFO :182:01bee8258e3164fe966f294b2837b6584b965b8d8e97571ba48f26c9bc0a91ac4b49fb4652bfaa5c340c82c57afbaa4620f2f6d49d7a7b330a66594d2b88c499d57c4093379b7dc322f2afa1ebab81004585751c39c19f8f9930c4
|
||||||
|
NSTATES :1:7
|
||||||
|
STATEPOS:1:6
|
||||||
|
MOVE :12:P8:168,16/64
|
||||||
|
MOVE :12:P0:186,85/64
|
||||||
|
MOVE :12:P2:47,254/64
|
||||||
|
MOVE :13:P5:131,153/64
|
||||||
|
MOVE :12:P3:75,126/64
|
||||||
|
MOVE :12:P7:93,303/64
|
11
midend.c
11
midend.c
@ -740,6 +740,17 @@ void midend_redraw(midend *me)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Nasty hacky function used to implement the --redo option in
|
||||||
|
* gtk.c. Only used for generating the puzzles' icons.
|
||||||
|
*/
|
||||||
|
void midend_freeze_timer(midend *me, float tprop)
|
||||||
|
{
|
||||||
|
me->anim_pos = me->anim_time * tprop;
|
||||||
|
midend_redraw(me);
|
||||||
|
deactivate_timer(me->frontend);
|
||||||
|
}
|
||||||
|
|
||||||
void midend_timer(midend *me, float tplus)
|
void midend_timer(midend *me, float tplus)
|
||||||
{
|
{
|
||||||
int need_redraw = (me->anim_time > 0 || me->flash_time > 0);
|
int need_redraw = (me->anim_time > 0 || me->flash_time > 0);
|
||||||
|
@ -215,6 +215,7 @@ int midend_process_key(midend *me, int x, int y, int button);
|
|||||||
void midend_force_redraw(midend *me);
|
void midend_force_redraw(midend *me);
|
||||||
void midend_redraw(midend *me);
|
void midend_redraw(midend *me);
|
||||||
float *midend_colours(midend *me, int *ncolours);
|
float *midend_colours(midend *me, int *ncolours);
|
||||||
|
void midend_freeze_timer(midend *me, float tprop);
|
||||||
void midend_timer(midend *me, float tplus);
|
void midend_timer(midend *me, float tplus);
|
||||||
int midend_num_presets(midend *me);
|
int midend_num_presets(midend *me);
|
||||||
void midend_fetch_preset(midend *me, int n,
|
void midend_fetch_preset(midend *me, int n,
|
||||||
|
Reference in New Issue
Block a user