Add James Harvey's excellent new puzzle, `Galaxies'.

[originally from svn r7304]
This commit is contained in:
Simon Tatham
2007-02-22 09:31:43 +00:00
parent aa6fb75072
commit e137ad8b1a
7 changed files with 3566 additions and 4 deletions

24
galaxies.R Normal file
View File

@ -0,0 +1,24 @@
# -*- makefile -*-
GALAXIES = galaxies dsf
galaxies : [X] GTK COMMON GALAXIES galaxies-icon|no-icon
galaxies : [G] WINDOWS COMMON GALAXIES galaxies.res?
galaxiessolver : [U] galaxies[STANDALONE_SOLVER] dsf STANDALONE m.lib
galaxiessolver : [C] galaxies[STANDALONE_SOLVER] dsf STANDALONE
ALL += galaxies
!begin gtk
GAMES += galaxies
!end
!begin >list.c
A(galaxies) \
!end
!begin >wingames.lst
galaxies.exe
!end

3416
galaxies.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# 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 unequal untangle
PUZZLES = blackbox bridges cube dominosa fifteen flip galaxies guess inertia \
lightup loopy map mines net netslide pattern pegs rect samegame \
sixteen slant solo tents twiddle unequal untangle
BASE = $(patsubst %,%-base.png,$(PUZZLES))
WEB = $(patsubst %,%-web.png,$(PUZZLES))
@ -56,6 +56,7 @@ bridges-ibase.png : override CROP=264x264 107x107+157+157
dominosa-ibase.png : override CROP=304x272 152x152+152+0
fifteen-ibase.png : override CROP=240x240 120x120+0+120
flip-ibase.png : override CROP=288x288 145x145+120+72
galaxies-ibase.png : override CROP=288x288 165x165+0+0
guess-ibase.png : override CROP=263x420 178x178+75+17
inertia-ibase.png : override CROP=321x321 128x128+193+0
lightup-ibase.png : override CROP=256x256 112x112+144+0

51
icons/galaxies.sav Normal file
View File

@ -0,0 +1,51 @@
SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
VERSION :1:1
GAME :8:Galaxies
PARAMS :5:7x7dh
CPARAMS :5:7x7dh
SEED :15:483644862786314
DESC :13:ikrqfedzljjsp
NSTATES :2:43
STATEPOS:2:37
MOVE :5:E12,9
MOVE :5:E8,11
MOVE :5:E5,12
MOVE :5:E7,12
MOVE :5:E4,13
MOVE :5:E2,11
MOVE :5:E3,10
MOVE :4:E2,5
MOVE :4:E4,5
MOVE :4:E6,7
MOVE :4:E8,1
MOVE :5:E10,1
MOVE :4:E9,2
MOVE :4:E6,3
MOVE :4:E7,4
MOVE :5:E10,3
MOVE :5:E10,5
MOVE :5:E11,6
MOVE :5:E13,6
MOVE :5:E8,13
MOVE :5:E12,7
MOVE :6:E12,11
MOVE :6:E13,12
MOVE :4:E8,9
MOVE :4:E7,8
MOVE :4:E7,6
MOVE :4:E9,6
MOVE :4:E8,5
MOVE :4:E9,4
MOVE :4:E5,2
MOVE :4:E4,1
MOVE :4:E3,6
MOVE :4:E2,7
MOVE :4:E3,8
MOVE :4:E3,4
MOVE :4:E4,9
MOVE :4:E2,9
MOVE :5:E5,10
MOVE :5:E6,11
MOVE :4:E2,3
MOVE :4:E2,1
MOVE :5:E1,12

View File

@ -27,6 +27,7 @@ void blitter_free(drawing *dr, blitter *bl) {}
void blitter_save(drawing *dr, blitter *bl, int x, int y) {}
void blitter_load(drawing *dr, blitter *bl, int x, int y) {}
int print_mono_colour(drawing *dr, int grey) { return 0; }
int print_grey_colour(drawing *dr, int hatch, float grey) { return 0; }
int print_rgb_colour(drawing *dr, int hatch, float r, float g, float b)
{ return 0; }
void print_line_width(drawing *dr, int width) {}
@ -47,3 +48,12 @@ void fatal(char *fmt, ...)
exit(1);
}
#ifdef DEBUGGING
void debug_printf(char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
vfprintf(stdout, fmt, ap);
va_end(ap);
}
#endif

View File

@ -2143,6 +2143,66 @@ Latin square only); at Recursive level backtracking will be required
require increasingly complex reasoning to avoid having to backtrack.
\C{galaxies} \i{Galaxies}
\cfg{winhelp-topic}{games.galaxies}
You have a rectangular grid containing a number of dots. Your aim is
to draw edges along the grid lines which divide the rectangle into
regions in such a way that every region is 180\u00b0{-degree}
rotationally symmetric, and contains exactly one dot which is
located at its centre of symmetry.
This puzzle was invented by \i{Nikoli} \k{nikoli-galaxies}, under
the name 'Tentai Show'; its name is commonly translated into English
as 'Spiral Galaxies'.
\B{nikoli-galaxies} \W{http://www.nikoli.co.jp/en/puzzles/astronomical_show/}\cw{http://www.nikoli.co.jp/en/puzzles/astronomical_show/}
\H{galaxies-controls} \i{Galaxies controls}
\IM{Galaxies controls} controls, for Galaxies
Left-click on any grid line to draw an edge if there isn't one
already, or to remove one if there is. When you create a valid
region (one which is closed, contains exactly one dot, is
180\u00b0{-degree} symmetric about that dot, and contains no
extraneous edges inside it) it will be highlighted automatically; so
your aim is to have the whole grid highlighted in that way.
During solving, you might know that a particular grid square belongs
to a specific dot, but not be sure of where the edges go and which
other squares are connected to the dot. In order to mark this so you
don't forget, you can right-click on the dot and drag, which will
create an arrow marker pointing at the dot. Drop that in a square of
your choice and it will remind you which dot it's associated with.
You can also right-click on existing arrows to pick them up and move
them, or destroy them by dropping them off the edge of the grid.
(Also, if you're not sure which dot an arrow is pointing at, you can
pick it up and move it around to make it clearer. It will swivel
constantly as you drag it, to stay pointed at its parent dot.)
(All the actions described in \k{common-actions} are also available.)
\H{galaxies-parameters} \I{parameters, for Galaxies}Galaxies parameters
These parameters are available from the \q{Custom...} option on the
\q{Type} menu.
\dt \e{Width}, \e{Height}
\dd Size of grid in squares.
\dt \e{Difficulty}
\dd Controls the difficulty of the generated puzzle. More difficult
puzzles require more complex deductions, and the 'Recursive' difficulty
level may require backtracking.
\A{licence} \I{MIT licence}\ii{Licence}
This software is \i{copyright} 2004-2007 Simon Tatham.

View File

@ -84,7 +84,7 @@ void debug_printf(char *fmt, ...)
va_list ap;
va_start(ap, fmt);
vsprintf(buf, fmt, ap);
_vsnprintf(buf, 4095, fmt, ap);
dputs(buf);
va_end(ap);
}