Added a `--generate' command-line option in the GTK port of every
[sgt/puzzles] / puzzles.but
index 15f73c5..8d592b5 100644 (file)
@@ -5,41 +5,47 @@
 
 \cfg{text-filename}{puzzles.txt}
 
-\cfg{xhtml-contents-filename}{index.html}
-\cfg{xhtml-leaf-level}{1}
-\cfg{xhtml-contents-depth-0}{1}
-\cfg{xhtml-contents-depth-1}{2}
-\cfg{xhtml-leaf-contains-contents}{true}
+\cfg{html-contents-filename}{index.html}
+\cfg{html-template-filename}{%k.html}
+\cfg{html-index-filename}{docindex.html}
+\cfg{html-leaf-level}{1}
+\cfg{html-contents-depth-0}{1}
+\cfg{html-contents-depth-1}{2}
+\cfg{html-leaf-contains-contents}{true}
 
 \cfg{info-filename}{puzzles.info}
 
 \cfg{ps-filename}{puzzles.ps}
 \cfg{pdf-filename}{puzzles.pdf}
 
+\define{by} \u00D7{x}
+
 This is a collection of small one-player puzzle games.
 
 \copyright This manual is copyright 2004 Simon Tatham. All rights
 reserved. You may distribute this documentation under the MIT licence.
 See \k{licence} for the licence text in full.
 
-\versionid $Id$
+\cfg{html-local-head}{<meta name="AppleTitle" content="Puzzles Help">}
 
+\versionid $Id$
 
 \C{intro} Introduction
 
 I wrote this collection because I thought there should be more small
 desktop toys available: little games you can pop up in a window and
 play for two or three minutes while you take a break from whatever
-else you were doing. And I was also annoyed that every time I found a
-good game on (say) \i{Unix}, it wasn't available the next time I was
-sitting at a \i{Windows} machine, or vice versa; so I arranged that
-everything in my personal puzzle collection will happily run on both.
-When I find (or perhaps invent) further puzzle games that I like,
-they'll be added to this collection and will immediately be available
-on both platforms. And if anyone feels like writing any other front
-ends - Mac OS, PocketPC, or whatever it might be - then all the games
-in this framework will immediately become available on another
-platform as well.
+else you were doing. And I was also annoyed that every time I found
+a good game on (say) \i{Unix}, it wasn't available the next time I
+was sitting at a \i{Windows} machine, or vice versa; so I arranged
+that everything in my personal puzzle collection will happily run on
+both, and have more recently done a port to Mac OS X as well. When I
+find (or perhaps invent) further puzzle games that I like, they'll
+be added to this collection and will immediately be available on
+both platforms. And if anyone feels like writing any other front
+ends - PocketPC, Mac OS pre-10, or whatever it might be - then all
+the games in this framework will immediately become available on
+another platform as well.
 
 The actual games in this collection were mostly not my invention; I
 saw them elsewhere, and rewrote them in a form that was more
@@ -131,6 +137,8 @@ are specific to each game and are described in the following sections.
 
 \H{common-cmdline} Specifying game parameters on the \i{command line}
 
+(This section does not apply to the Mac OS X version.)
+
 The games in this collection deliberately do not ever save
 information on to the computer they run on: they have no high score
 tables and no saved preferences. (This is because I expect at least
@@ -203,6 +211,11 @@ controls are:
 also unlock it again, but while it's locked you can't accidentally
 turn it.
 
+\dt \e{Jumble tiles}: \q{J} key
+
+\dd This key turns all tiles that are not locked to random
+orientations.
+
 (All the actions described in \k{common-actions} are also available.)
 
 \H{net-params} \I{parameters, for Net}Net parameters
@@ -300,13 +313,13 @@ respectively.
 
 \cfg{winhelp-topic}{games.fifteen}
 
-The old ones are the best: this is the good old \q{\i{15-puzzle}} with
-sliding tiles. You have a 4x4 square grid; 15 squares contain numbered
-tiles, and the sixteenth is empty. Your move is to choose a tile next
-to the empty space, and slide it into the space. The aim is to end up
-with the tiles in numerical order, with the space in the bottom right
-(so that the top row reads 1,2,3,4 and the bottom row reads
-13,14,15,\e{space}).
+The old ones are the best: this is the good old \q{\i{15-puzzle}}
+with sliding tiles. You have a 4\by\.4 square grid; 15 squares
+contain numbered tiles, and the sixteenth is empty. Your move is to
+choose a tile next to the empty space, and slide it into the space.
+The aim is to end up with the tiles in numerical order, with the
+space in the bottom right (so that the top row reads 1,2,3,4 and the
+bottom row reads 13,14,15,\e{space}).
 
 \H{fifteen-controls} \i{Fifteen controls}
 
@@ -380,17 +393,17 @@ numbered square, and (b) the area of each rectangle is equal to the
 number written in its numbered square.
 
 Credit for this game goes to the Japanese puzzle magazine \i{Nikoli}
-\k{nikoli}; I've also seen a Palm implementation at \i{Puzzle Palace}
-\k{puzzle-palace}. Unlike Puzzle Palace's implementation, my version
+\k{nikoli-rect}; I've also seen a Palm implementation at \i{Puzzle Palace}
+\k{puzzle-palace-rect}. Unlike Puzzle Palace's implementation, my version
 automatically generates random grids of any size you like. The quality
 of puzzle design is therefore not quite as good as hand-crafted
 puzzles would be (in particular, a unique solution cannot be
 guaranteed), but on the plus side you get an inexhaustible supply of
 puzzles tailored to your own specification.
 
-\B{nikoli} \W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}
+\B{nikoli-rect} \W{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/7/index_text-e.htm}
 
-\B{puzzle-palace} \W{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\cw{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}
+\B{puzzle-palace-rect} \W{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\cw{http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}
 
 \H{rectangles-controls} \I{controls, for Rectangles}Rectangles controls
 
@@ -435,7 +448,7 @@ command-line configuration
 The expansion factor parameter, described in \k{rectangles-params},
 is not mentioned by default in the game ID (see \k{common-id}). So
 if you set your expansion factor to (say) 0.75, and then you
-generate an 11x11 grid, then the game ID will simply say
+generate an 11\by\.11 grid, then the game ID will simply say
 \c{11x11:}\e{numbers}. This means that if you send the game ID to
 another player and they paste it into their copy of Rectangles,
 their game will not be automatically configured to use the same
@@ -457,6 +470,7 @@ number. For example:
 starts Rectangles with a grid size of 11\u00d7{x}11, an expansion
 factor of 0.75, \e{and} a specific game selected.
 
+
 \C{netslide} \i{Netslide}
 
 \cfg{winhelp-topic}{games.netslide}
@@ -473,6 +487,7 @@ See \k{sixteen-controls}.
 \I{parameters, for Netslide}Game parameters are the same as for Net
 (see \k{net-params}).
 
+
 \C{pattern} \i{Pattern}
 
 \cfg{winhelp-topic}{games.pattern}
@@ -484,7 +499,7 @@ lengths of the runs of black squares in that column. Your aim is to
 fill in the entire grid black or white.
 
 I first saw this puzzle form around 1995, under the name
-\q{nonograms}. I've seen it in various places since then, under
+\q{\i{nonograms}}. I've seen it in various places since then, under
 different names.
 
 Normally, puzzles of this type turn out to be a meaningful picture
@@ -495,7 +510,7 @@ a \e{good} thing, since it prevents you from guessing the colour of
 squares based on the picture, and forces you to use logic instead.)
 The advantage, though, is that you never run out of them.
 
-\H{pattern-controls} \i{Pattern controls}
+\H{pattern-controls} \I{controls, for Pattern}Pattern controls
 
 This game is played with the mouse.
 
@@ -510,14 +525,134 @@ a vertical or horizontal line of squares black or white at a time
 with Shift held down, you can colour a whole rectangle of squares
 grey.
 
+(All the actions described in \k{common-actions} are also available.)
+
 \H{pattern-parameters} \I{parameters, for Pattern}Pattern parameters
 
 The only options available from the \q{Custom...} option on the \q{Type}
 menu are \e{Width} and \e{Height}, which are self-explanatory.
 
+
+\C{solo} \i{Solo}
+
+\cfg{winhelp-topic}{games.solo}
+
+You have a square grid, which is divided into square or rectangular
+blocks. Each square must be filled in with a digit from 1 to the
+size of the grid, in such a way that
+
+\b every row contains only one occurrence of each digit
+
+\b every column contains only one occurrence of each digit
+
+\b every block contains only one occurrence of each digit.
+
+You are given some of the numbers as clues; your aim is to place the
+rest of the numbers correctly.
+
+The default puzzle size is 3\by\.3 (a 9\by\.9 actual grid, divided
+into nine 3\by\.3 blocks). You can also select sizes with
+rectangular blocks instead of square ones, such as 2\by\.3 (a
+6\by\.6 grid divided into six 3\by\.2 blocks).
+
+If you select a puzzle size which requires more than 9 digits, the
+additional digits will be letters of the alphabet. For example, if
+you select 3\by\.4 then the digits which go in your grid will be 1
+to 9, plus \cq{a}, \cq{b} and \cq{c}.
+
+I first saw this puzzle in \i{Nikoli} \k{nikoli-solo}, although it's also
+been popularised by various newspapers under the name \q{Sudoku} or
+\q{Su Doku}.
+
+\B{nikoli-solo} \W{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}\cw{http://www.nikoli.co.jp/puzzles/1/index_text-e.htm}
+
+\H{solo-controls} \I{controls, for Solo}Solo controls
+
+To play Solo, simply click the mouse in any empty square and then
+type a digit or letter on the keyboard to fill that square. If you
+make a mistake, click the mouse in the incorrect square and press
+Space to clear it again (or use the Undo feature).
+
+(All the actions described in \k{common-actions} are also available.)
+
+\H{solo-parameters} \I{parameters, for Solo}Solo parameters
+
+Solo allows you to configure two separate dimensions of the puzzle
+grid on the \q{Type} menu: the number of columns, and the number of
+rows, into which the main grid is divided. (The size of a block is
+the inverse of this: for example, if you select 2 columns and 3 rows,
+each actual block will have 3 columns and 2 rows.)
+
+You can also configure the type of symmetry shown in the generated
+puzzles. More symmetry makes the puzzles look prettier but may also
+make them easier, since the symmetry constraints can force more
+clues than necessary to be present. Completely asymmetric puzzles
+have the freedom to contain as few clues as possible.
+
+Finally, you can configure the difficulty of the generated puzzles.
+Difficulty levels are judged by the complexity of the techniques of
+deduction required to solve the puzzle: each level requires a mode
+of reasoning which was not necessary in the previous one. In
+particular, on difficulty levels \q{Trivial} and \q{Basic} there
+will be a square you can fill in with a single number at all times,
+whereas at \q{Intermediate} level and beyond you will have to make
+partial deductions about the \e{set} of squares a number could be in
+(or the set of numbers that could be in a square). None of the
+difficulty levels generated by this program ever requires making a
+guess and backtracking if it turns out to be wrong.
+
+Generating difficult puzzles is itself difficult: if you select
+\q{Intermediate} or \q{Advanced} difficulty, Solo may have to make
+many attempts at generating a puzzle before it finds one hard enough
+for you. Be prepared to wait, especially if you have also configured
+a large puzzle size.
+
+\H{solo-cmdline} \I{command line, for Solo}Additional command-line
+configuration
+
+The symmetry and difficulty parameters (described in
+\k{solo-parameters}) are not mentioned by default in the game ID
+(see \k{common-id}). So if (for example) you set your symmetry to
+4-way rotational and your difficulty to \q{Advanced}, and then you
+generate a 3\by\.4 grid, then the game ID will simply say
+\c{3x4:}\e{numbers}. This means that if you send the game ID to
+another player and they paste it into their copy of Solo, their game
+will not be automatically configured to use the same symmetry and
+difficulty settings in any subsequent grids it generates. (I don't
+think the average person examining a single grid sent to them by
+another player would want their configuration modified to that
+extent.)
+
+If you are specifying a game ID or game parameters on the command
+line (see \k{common-cmdline}) and you do want to configure the
+symmetry, you can do it by suffixing additional text to the
+parameters:
+
+\b \cq{m4} for 4-way mirror symmetry
+
+\b \cq{r4} for 4-way rotational symmetry
+
+\b \cq{r2} for 2-way rotational symmetry
+
+\b \cq{a} for no symmetry at all (stands for \q{asymmetric})
+
+\b \cq{dt} for Trivial difficulty level
+
+\b \cq{db} for Basic difficulty level
+
+\b \cq{di} for Intermediate difficulty level
+
+\b \cq{da} for Advanced difficulty level
+
+So, for example, you can make Solo generate asymmetric 3x4 grids by
+running \cq{solo 3x4a}, or 4-way rotationally symmetric 2x3 grids by
+running \cq{solo 2x3r4}, or \q{Advanced}-level 2x3 grids by running
+\cq{solo 2x3da}.
+
+
 \A{licence} \I{MIT licence}\ii{Licence}
 
-This software is \i{copyright} 2004 Simon Tatham.
+This software is \i{copyright} 2004-2005 Simon Tatham.
 
 Portions copyright Richard Boulton.