X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/11d31eb99ed1bf0b51153a71e0a339168ae982a6..e8b58d59f9e1c77093c4082b7c1ea3f88049be5c:/puzzles.but diff --git a/puzzles.but b/puzzles.but index e171c7f..f044670 100644 --- a/puzzles.but +++ b/puzzles.but @@ -20,9 +20,11 @@ \define{by} \u00D7{x} +\define{dash} \u2013{-} + This is a collection of small one-player puzzle games. -\copyright This manual is copyright 2004 Simon Tatham. All rights +\copyright This manual is copyright 2004-2006 Simon Tatham. All rights reserved. You may distribute this documentation under the MIT licence. See \k{licence} for the licence text in full. @@ -39,20 +41,19 @@ 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 +both, and have more recently done a port to \i{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. +ends \dash PocketPC, Mac OS pre-10, or whatever it might be \dash +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 -convenient for me. I do not claim credit, in general, for inventing -the rules of any of these puzzles; all I claim is authorship of the -code (or at least those parts of the code that weren't contributed -by other people!). +The actual games in this collection were mostly not my invention; they +are re-implementations of existing game concepts within my portable +puzzle framework. I do not claim credit, in general, for inventing the +rules of any of these puzzles. (I don't even claim authorship of all +the code; some of the puzzles have been submitted by other authors.) This collection is distributed under the \i{MIT licence} (see \k{licence}). This means that you can do pretty much anything you like @@ -82,7 +83,7 @@ These actions are all available from the \I{Game menu}\q{Game} menu and via \I{keys}keyboard shortcuts, in addition to any game-specific actions. -(On Mac OS X, to conform with local user interface standards, these +(On \i{Mac OS X}, to conform with local user interface standards, these actions are situated on the \I{File menu}\q{File} and \I{Edit menu}\q{Edit} menus instead.) @@ -94,6 +95,31 @@ menu}\q{Edit} menus instead.) \dd Resets the current game to its initial state. (This can be undone.) +\dt \ii\e{Load} + +\dd Loads a saved game from a file on disk. + +\dt \ii\e{Save} + +\dd Saves the current state of your game to a file on disk. + +\lcont{ + +The Load and Save operations should preserve your entire game +history (so you can save, reload, and still Undo and Redo things you +had done before saving). + +} + +\dt \I{printing, on Windows}\e{Print} + +\dd Where supported (currently only on Windows), brings up a dialog +allowing you to print an arbitrary number of puzzles randomly +generated from the current parameters, optionally including the +current puzzle. (Only for puzzles which make sense to print, of +course - it's hard to think of a sensible printable representation +of Fifteen!) + \dt \ii\e{Undo} (\q{U}, Ctrl+\q{Z}, Ctrl+\q{_}) \dd Undoes a single move. (You can undo moves back to the start of the @@ -148,7 +174,7 @@ recreate it later, or recreate it in somebody else's copy of the same puzzle. The \q{\i{Specific}} and \q{\i{Random Seed}} options from the -\I{Game menu}\q{Game} menu (or the \q{File} menu, on Mac OS X) each +\I{Game menu}\q{Game} menu (or the \q{File} menu, on \i{Mac OS X}) each show a piece of text (a \q{game ID}) which is sufficient to reconstruct precisely the same game at a later date. @@ -239,7 +265,7 @@ following sections. \H{common-cmdline} Specifying game parameters on the \i{command line} -(This section does not apply to the Mac OS X version.) +(This section does not apply to the \i{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 @@ -247,9 +273,9 @@ tables and no saved preferences. (This is because I expect at least some people to play them at work, and those people will probably appreciate leaving as little evidence as possible!) -However, if you do want to arrange for one of these games to default -to a particular set of parameters, you can specify them on the -command line. +However, if you do want to arrange for one of these games to +\I{default parameters, specifying}default to a particular set of +parameters, you can specify them on the command line. The easiest way to do this is to set up the parameters you want using the \q{Type} menu (see \k{common-type}), and then to select @@ -278,6 +304,84 @@ than by pasting it into the game ID selection box. then some options, such as the difficulty level in Solo, will be missing. See \k{common-id} for more details on this.) +\H{common-unix-cmdline} \i{Unix} \i{command-line} options + +(This section only applies to the Unix port.) + +In addition to specifying game parameters on the command line (see +\k{common-cmdline}), you can also specify various options: + +\dt \cw{--generate }\e{n} + +\dd If this option is specified, instead of a puzzle being displayed, +a number of descriptive game IDs will be \I{generating game IDs}invented +and printed on standard output. This is useful for gaining access to +the game generation algorithms without necessarily using the frontend. + +\lcont{ + +If game parameters are specified on the command-line, they will be +used to generate the game IDs; otherwise a default set of parameters +will be used. + +The most common use of this option is in conjunction with \c{--print}, +in which case its behaviour is slightly different; see below. + +} + +\dt \I{printing, on Unix}\cw{--print }\e{w}\cw{x}\e{h} + +\dd If this option is specified, instead of a puzzle being displayed, +a printed representation of one or more unsolved puzzles is sent to +standard output, in \i{PostScript} format. + +\lcont{ + +On each page of puzzles, there will be \e{w} across and \e{h} down. If +there are more puzzles than \e{w}\by\e{h}, more than one page will be +printed. + +If \c{--generate} has also been specified, the invented game IDs will +be used to generate the printed output. Otherwise, a list of game IDs +is expected on standard input (which can be descriptive or random +seeds; see \k{common-id}), in the same format produced by +\c{--generate}. + +For example: + +\c net --generate 12 --print 2x3 7x7w | lpr + +will generate two pages of printed Net puzzles (each of which will +have a 7\by\.7 wrapping grid), and pipe the output to the \c{lpr} +command, which on many systems will send them to an actual printer. + +There are various other options which affect printing; see below. + +} + +\dt \cw{--version} + +\dd Prints version information about the game, and then quits. + +The following options are only meaningful if \c{--print} is also +specified: + +\dt \cw{--with-solutions} + +\dd The set of pages filled with unsolved puzzles will be followed by +the solutions to those puzzles. + +\dt \cw{--scale }\e{n} + +\dd Adjusts how big each puzzle is when printed. Larger numbers make +puzzles bigger; the default is 1.0. + +\dt \cw{--colour} + +\dd Puzzles will be printed in colour, rather than in black and white +(if supported by the puzzle). + + \C{net} \i{Net} \cfg{winhelp-topic}{games.net} @@ -314,6 +418,8 @@ controls are: \dt \e{Rotate tile clockwise}: right mouse button, \q{D} key +\dt \e{Rotate tile by 180 degrees}: \q{F} key + \dt \e{Lock (or unlock) tile}: middle mouse button, shift-click, \q{S} key \dd You can lock a tile once you're sure of its orientation. You can @@ -387,6 +493,7 @@ feature and risk having ambiguous puzzles. (Also, finding \e{all} the possible solutions can be an additional challenge for an advanced player.) + \C{cube} \i{Cube} \cfg{winhelp-topic}{games.cube} @@ -681,11 +788,10 @@ player. Turning off this option can also speed up puzzle generation. \cfg{winhelp-topic}{games.netslide} -This game was submitted by Richard Boulton. It combines the grid -generation of Net (see \k{net}) with the movement of Sixteen (see -\k{sixteen}): you have a Net grid, but instead of rotating tiles back -into place you have to slide them into place by moving a whole row at -a time. +This game combines the grid generation of Net (see \k{net}) with the +movement of Sixteen (see \k{sixteen}): you have a Net grid, but +instead of rotating tiles back into place you have to slide them +into place by moving a whole row at a time. As in Sixteen, \I{controls, for Netslide}control is with the mouse. See \k{sixteen-controls}. @@ -694,6 +800,8 @@ See \k{sixteen-controls}. meanings to those in Net (see \k{net-params}) and Sixteen (see \k{sixteen-params}). +Netslide was contributed to this collection by Richard Boulton. + \C{pattern} \i{Pattern} @@ -767,12 +875,18 @@ 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}. +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}. Howard Garns is considered the inventor +of the modern form of the puzzle, and it was first published in +\e{Dell Pencil Puzzles and Word Games}. A more elaborate treatment +of the history of the puzzle can be found on Wikipedia +\k{wikipedia-solo}. \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} +\B{wikipedia-solo} \W{http://en.wikipedia.org/wiki/Sudoku}\cw{http://en.wikipedia.org/wiki/Sudoku} + \H{solo-controls} \I{controls, for Solo}Solo controls To play Solo, simply click the mouse in any empty square and then @@ -821,16 +935,17 @@ 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). At -\q{Unreasonable} level, even this is not enough, and you will +(or the set of numbers that could be in a square). +\#{Advanced, Extreme?} +At \q{Unreasonable} level, even this is not enough, and you will eventually have to make a guess, and then backtrack 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. +Generating difficult puzzles is itself difficult: if you select one +of the higher difficulty levels, 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. \C{mines} \i{Mines} @@ -925,11 +1040,1035 @@ initial open space. If you prefer the riskier grids generated by other implementations, you can switch off this option. +\C{samegame} \i{Same Game} + +\cfg{winhelp-topic}{games.samegame} + +You have a grid of coloured squares, which you have to clear by +highlighting contiguous regions of more than one coloured square; +the larger the region you highlight, the more points you get (and +the faster you clear the arena). + +If you clear the grid you win. If you end up with nothing but +single squares (i.e., there are no more clickable regions left) you +lose. + +Removing a region causes the rest of the grid to shuffle up: +blocks that are suspended will fall down (first), and then empty +columns are filled from the right. + +Same Game was contributed to this collection by James Harvey. + +\H{samegame-controls} \i{Same Game controls} + +\IM{Same Game controls} controls, for Same Game +\IM{Same Game controls} keys, for Same Game +\IM{Same Game controls} shortcuts (keyboard), for Same Game + +This game can be played with either the keyboard or the mouse. + +If you left-click an unselected region, it becomes selected (possibly +clearing the current selection). + +If you left-click the selected region, it will be removed (and the +rest of the grid shuffled immediately). + +If you right-click the selected region, it will be unselected. + +The cursor keys move a cursor around the grid. Pressing the Space or +Enter keys while the cursor is in an unselected region selects it; +pressing Space or Enter again removes it as above. + +(All the actions described in \k{common-actions} are also available.) + +\H{samegame-parameters} \I{parameters, for Same Game}Same Game 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{No. of colours} + +\dd Number of different colours used to fill the grid; the more colours, +the fewer large regions of colour and thus the more difficult it is to +successfully clear the grid. + +\dt \e{Scoring system} + +\dd Controls the precise mechanism used for scoring. With the default +system, \q{(n-2)^2}, only regions of three squares or more will score +any points at all. With the alternative \q{(n-1)^2} system, regions of +two squares score a point each, and larger regions score relatively +more points. + +\dt \e{Ensure solubility} + +\dd If this option is ticked (the default state), generated grids +will be guaranteed to have at least one solution. + +\lcont{ + +If you turn it off, the game generator will not try to guarantee +soluble grids; it will, however, still ensure that there are at +least 2 squares of each colour on the grid at the start (since a +grid with exactly one square of a given colour is \e{definitely} +insoluble). Grids generated with this option disabled may contain +more large areas of contiguous colour, leading to opportunities for +higher scores; they can also take less time to generate. + +} + + +\C{flip} \i{Flip} + +\cfg{winhelp-topic}{games.flip} + +You have a grid of squares, some light and some dark. Your aim is to +light all the squares up at the same time. You can choose any square +and flip its state from light to dark or dark to light, but when you +do so, other squares around it change state as well. + +Each square contains a small diagram showing which other squares +change when you flip it. + +\H{flip-controls} \i{Flip controls} + +\IM{Flip controls} controls, for Flip +\IM{Flip controls} keys, for Flip +\IM{Flip controls} shortcuts (keyboard), for Flip + +This game can be played with either the keyboard or the mouse. + +Left-click in a square to flip it and its associated squares, or +use the cursor keys to choose a square and the space bar or Enter +key to flip. + +If you use the \q{Solve} function on this game, it will mark some of +the squares in red. If you click once in every square with a red +mark, the game should be solved. (If you click in a square +\e{without} a red mark, a red mark will appear in it to indicate +that you will need to reverse that operation to reach the solution.) + +(All the actions described in \k{common-actions} are also available.) + +\H{flip-parameters} \I{parameters, for flip}Flip 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{Shape type} + +\dd This control determines the shape of the region which is flipped +by clicking in any given square. The default setting, \q{Crosses}, +causes every square to flip itself and its four immediate neighbours +(or three or two if it's at an edge or corner). The other setting, +\q{Random}, causes a random shape to be chosen for every square, so +the game is different every time. + + +\C{guess} \i{Guess} + +\cfg{winhelp-topic}{games.guess} + +You have a set of coloured pegs, and have to reproduce a +predetermined sequence of them (chosen by the computer) within a +certain number of guesses. + +Each guess gets marked with the number of correctly-coloured pegs +in the correct places (in black), and also the number of +correctly-coloured pegs in the wrong places (in white). + +This game is also known (and marketed, by Hasbro, mainly) as +a board game \q{\i{Mastermind}}, with 6 colours, 4 pegs per row, +and 10 guesses. However, this version allows custom settings of number +of colours (up to 10), number of pegs per row, and number of guesses. + +Guess was contributed to this collection by James Harvey. + +\H{guess-controls} \i{Guess controls} + +\IM{Guess controls} controls, for Guess +\IM{Guess controls} keys, for Guess +\IM{Guess controls} shortcuts (keyboard), for Guess + +This game can be played with either the keyboard or the mouse. + +With the mouse, drag a coloured peg from the tray on the left-hand +side to its required position in the current guess; pegs may also be +dragged from current and past guesses to copy them elsewhere. To +remove a peg, drag it off its current position to somewhere invalid. + +Right-clicking in the current guess adds a \q{hold} marker; pegs +that have hold markers will be automatically added to the next guess +after marking. + +Alternatively, with the keyboard, the up and down cursor keys can be +used to select a peg colour, the left and right keys to select a +peg position, and the space bar or Enter key to place a peg of the +selected colour in the chosen position. \q{D} or Backspace removes a +peg, and \q{H} adds a hold marker. + +When the guess is complete, the smaller feedback pegs will be highlighted; +clicking on these (or moving the peg cursor to them with the arrow keys +and pressing the space bar or Enter key) will mark the current guess, +copy any held pegs to the next guess, and move the \q{current guess} +marker. + +If you correctly position all the pegs the solution will be displayed +below; if you run out of guesses (or select \q{Solve...}) the solution +will also be revealed. + +(All the actions described in \k{common-actions} are also available.) + +\H{guess-parameters} \I{parameters, for Guess}Guess parameters + +These parameters are available from the \q{Custom...} option on the +\q{Type} menu. The default game matches the parameters for the +board game \q{Mastermind}. + +\dt \e{Colours} + +\dd Number of colours the solution is chosen from; from 2 to 10 +(more is harder). + +\dt \e{Pegs per guess} + +\dd Number of pegs per guess (more is harder). + +\dt \e{Guesses} + +\dd Number of guesses you have to find the solution in (fewer is harder). + +\dt \e{Allow blanks} + +\dd Allows blank pegs to be given as part of a guess (makes it easier, because +you know that those will never be counted as part of the solution). This +is turned off by default. + +Note that this doesn't allow blank pegs in the solution; if you really wanted +that, use one extra colour. + +\dt \e{Allow duplicates} + +\dd Allows the solution (and the guesses) to contain colours more than once; +this increases the search space (making things harder), and is turned on by +default. + + +\C{pegs} \i{Pegs} + +\cfg{winhelp-topic}{games.pegs} + +A number of pegs are placed in holes on a board. You can remove a +peg by jumping an adjacent peg over it (horizontally or vertically) +to a vacant hole on the other side. Your aim is to remove all but one +of the pegs initially present. + +This game, best known as \I{Solitaire, Peg}\q{Peg Solitaire}, is +possibly one of the oldest puzzle games still commonly known. + +\H{pegs-controls} \i{Pegs controls} + +\IM{Pegs controls} controls, for Pegs + +To move a peg, drag it with the mouse from its current position to +its final position. If the final position is exactly two holes away +from the initial position, is currently unoccupied by a peg, and +there is a peg in the intervening square, the move will be permitted +and the intervening peg will be removed. + +Vacant spaces which you can move a peg into are marked with holes. A +space with no peg and no hole is not available for moving at all: it +is an obstacle which you must work around. + +(All the actions described in \k{common-actions} are also available.) + +\H{pegs-parameters} \I{parameters, for Pegs}Pegs 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 holes. + +\dt \e{Board type} + +\dd Controls whether you are given a board of a standard shape or a +randomly generated shape. The two standard shapes currently +supported are \q{Cross} and \q{Octagon} (also commonly known as the +English and European traditional board layouts respectively). +Selecting \q{Random} will give you a different board shape every +time (but always one that is known to have a solution). + + +\C{dominosa} \i{Dominosa} + +\cfg{winhelp-topic}{games.dominosa} + +A normal set of dominoes \dash that is, one instance of every +(unordered) pair of numbers from 0 to 6 \dash has been arranged +irregularly into a rectangle; then the number in each square has +been written down and the dominoes themselves removed. Your task is +to reconstruct the pattern by arranging the set of dominoes to match +the provided array of numbers. + +This puzzle is widely credited to O. S. Adler, and takes part of its +name from those initials. + +\H{dominosa-controls} \i{Dominosa controls} + +\IM{Dominosa controls} controls, for Dominosa + +Left-clicking between any two adjacent numbers places a domino +covering them, or removes one if it is already present. Trying to +place a domino which overlaps existing dominoes will remove the ones +it overlaps. + +Right-clicking between two adjacent numbers draws a line between +them, which you can use to remind yourself that you know those two +numbers are \e{not} covered by a single domino. Right-clicking again +removes the line. + +(All the actions described in \k{common-actions} are also available.) + +\H{dominosa-parameters} \I{parameters, for Dominosa}Dominosa parameters + +These parameters are available from the \q{Custom...} option on the +\q{Type} menu. + +\dt \e{Maximum number on dominoes} + +\dd Controls the size of the puzzle, by controlling the size of the +set of dominoes used to make it. Dominoes with numbers going up to N +will give rise to an (N+2) \by (N+1) rectangle; so, in particular, +the default value of 6 gives an 8\by\.7 grid. + +\dt \e{Ensure unique solution} + +\dd Normally, Dominosa will make sure that the puzzles it presents +have only one solution. Puzzles with ambiguous sections can be more +difficult and sometimes more subtle, so if you like you can turn off +this feature. Also, finding \e{all} the possible solutions can be an +additional challenge for an advanced player. Turning off this option +can also speed up puzzle generation. + + +\C{untangle} \i{Untangle} + +\cfg{winhelp-topic}{games.untangle} + +You are given a number of points, some of which have lines drawn +between them. You can move the points about arbitrarily; your aim is +to position the points so that no line crosses another. + +I originally saw this in the form of a Flash game called \i{Planarity} +\k{Planarity}, written by John Tantalo. + +\B{Planarity} \W{http://home.cwru.edu/~jnt5/Planarity}\cw{http://home.cwru.edu/~jnt5/Planarity} + +\H{untangle-controls} \i{Untangle controls} + +\IM{Untangle controls} controls, for Untangle + +To move a point, click on it with the left mouse button and drag it +into a new position. + +(All the actions described in \k{common-actions} are also available.) + +\H{untangle-parameters} \I{parameters, for Untangle}Untangle parameters + +There is only one parameter available from the \q{Custom...} option +on the \q{Type} menu: + +\dt \e{Number of points} + +\dd Controls the size of the puzzle, by specifying the number of +points in the generated graph. + + +\C{blackbox} \i{Black Box} + +\cfg{winhelp-topic}{games.blackbox} + +A number of balls are hidden in a rectangular arena. You have to +deduce the positions of the balls by firing lasers from positions +on the edge of the arena and observing how they are deflected. + +Lasers will fire straight until they hit the opposite side of the +arena (at which point they emerge), unless affected by balls in one of +the following ways: + +\b A laser that hits a ball head-on is absorbed and will never re-emerge. + This includes lasers that meet a ball on the first rank of the arena. + +\b A laser with a ball to its front-left square gets deflected 90 degrees + to the right. + +\b A laser with a ball to its front-right square gets similarly deflected + to the left. + +\b A laser that would re-emerge from the entry location is considered to be + \q{reflected}. + +\b A laser which would get deflected before entering the arena (down the + \q{firing range}) by a ball to the front-left or front-right of its + entry point is also considered to be \q{reflected}. + +Lasers that are reflected appear as a \q{R}; lasers that hit balls +dead-on appear as \q{H}. Otherwise, a number appears at the firing point +and the location where the laser emerges (this number is unique to +that shot). + +You can place guesses as to the location of the balls, based on the +entry and exit patterns of the lasers; once you have placed enough +balls a button appears enabling you to have your guesses checked. + +Here is a diagram showing how the positions of balls can create each +of the laser behaviours shown above: + +\c 1RHR---- +\c |..O.O...| +\c 2........3 +\c |........| +\c |........| +\c 3........| +\c |......O.| +\c H........| +\c |.....O..| +\c 12-RH--- + +As shown, it is possible for a ball to receive multiple reflections +before re-emerging (see turn 3). Similarly, a ball may be reflected +(possibly more than once) before receiving a hit (the \q{H} on the +left side of the example). + +Note that any layout with more that 4 balls may have a non-unique +solution. The following diagram illustrates this; if you know the +board contains 5 balls, it is impossible to determine where the fifth +ball is (possible positions marked with an x): + +\c -------- +\c |........| +\c |........| +\c |..O..O..| +\c |...xx...| +\c |...xx...| +\c |..O..O..| +\c |........| +\c |........| +\c -------- + +For this reason when you have your guesses checked the game will +check that your solution \e{produces the same results} as the +computer's, rather than that your solution is identical to the +computer's. So in the above example, you could put the fifth ball at +\e{any} of the locations marked with an x, and you would still win. + +Black Box was contributed to this collection by James Harvey. + +\H{blackbox-controls} \i{Black Box controls} + +\IM{Black Box controls}controls, for Black Box + +To fire a laser, left-click in a square around the side of the arena. +The results will be displayed immediately. Lasers may not be fired +twice (because the results will never change). Holding down the left +button will highlight the current go (or a previous go) to confirm the +exit point for that laser, if applicable. + +To guess the location of a ball, left-click within the arena and a +black circle will appear marking the guess; to remove the guessed ball +click again. + +Locations in the arena may be locked against modification by +right-clicking; whole rows and columns may be similarly locked by +right-clicking in the laser firing range above/below that column, or +to the left/right of that row. + +When an appropriate number of balls have been guessed a button will +appear at the top-left corner of the grid; clicking that will mark +your guesses. + +If you click the \q{mark} button and your guesses are not correct, +the game will show you as little information as possible to +demonstrate this to you, so you can try again. If your ball +positions are not consistent with the laser paths you already know +about, one laser path will be circled to indicate that it proves you +wrong. If your positions match all the existing laser paths but are +still wrong, one new laser path will be revealed (written in red) +which is not consistent with your current guesses. + +If you decide to give up completely, you can select Solve to reveal +the actual ball positions. At this point, correctly-placed balls +will be displayed as filled black circles; incorrectly-placed balls +are displayed as filled black circles with red crosses, and missing +balls are filled red circles. In addition, a red circle marks any +laser you had already fired which is not consistent with your ball +layout (just as when you press the mark button), and red text marks +any laser you \e{could} have fired in order to distinguish your ball +layout from the right one. + +(All the actions described in \k{common-actions} are also available.) + +\H{blackbox-parameters} \I{parameters, for Black Box}Black Box 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. There are 2 \by \e{Width} \by \e{Height} lasers +per grid, two per row and two per column. + +\dt \e{No. of balls} + +\dd Number of balls to place in the grid. This can be a single number, +or a range (separated with a hyphen, like \q{2-6}), and determines the +number of balls to place on the grid. The \q{reveal} button is only +enabled if you have guessed an appropriate number of balls; a guess +using a different number to the original solution is still acceptable, +if all the laser inputs and outputs match. + + +\C{slant} \i{Slant} + +\cfg{winhelp-topic}{games.slant} + +You have a grid of squares. Your aim is to draw a diagonal line +through each square, and choose which way each line slants so that +the following conditions are met: + +\b The diagonal lines never form a loop. + +\b Any point with a circled number has precisely that many lines +meeting at it. (Thus, a 4 is the centre of a cross shape, whereas a +zero is the centre of a diamond shape \dash or rather, a partial +diamond shape, because a zero can never appear in the middle of the +grid because that would immediately cause a loop.) + +Credit for this puzzle goes to \i{Nikoli} \k{nikoli-slant}. + +\B{nikoli-slant} +\W{http://www.nikoli.co.jp/puzzles/39/index.htm}\cw{http://www.nikoli.co.jp/puzzles/39/index.htm} +(in Japanese) + +\H{slant-controls} \i{Slant controls} + +\IM{Slant controls} controls, for Slant + +Left-clicking in a blank square will place a \cw{\\} in it (a line +leaning to the left, i.e. running from the top left of the square to +the bottom right). Right-clicking in a blank square will place a +\cw{/} in it (leaning to the right, running from top right to bottom +left). + +Continuing to click either button will cycle between the three +possible square contents. Thus, if you left-click repeatedly in a +blank square it will change from blank to \cw{\\} to \cw{/} back to +blank, and if you right-click repeatedly the square will change from +blank to \cw{/} to \cw{\\} back to blank. (Therefore, you can play +the game entirely with one button if you need to.) + +(All the actions described in \k{common-actions} are also available.) + +\H{slant-parameters} \I{parameters, for Slant}Slant 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. At Hard level, +you are required to do deductions based on knowledge of +\e{relationships} between squares rather than always being able to +deduce the exact contents of one square at a time. (For example, you +might know that two squares slant in the same direction, even if you +don't yet know what that direction is, and this might enable you to +deduce something about still other squares.) Even at Hard level, +guesswork and backtracking should never be necessary. + + +\C{lightup} \i{Light Up} + +\cfg{winhelp-topic}{games.lightup} + +You have a grid of squares. Some are filled in black; some of the +black squares are numbered. Your aim is to \q{light up} all the +empty squares by placing light bulbs in some of them. + +Each light bulb illuminates the square it is on, plus all squares in +line with it horizontally or vertically unless a black square is +blocking the way. + +To win the game, you must satisfy the following conditions: + +\b All non-black squares are lit. + +\b No light is lit by another light. + +\b All numbered black squares have exactly that number of lights adjacent to + them (in the four squares above, below, and to the side). + +Non-numbered black squares may have any number of lights adjacent to them. + +Credit for this puzzle goes to \i{Nikoli} \k{nikoli-lightup}. + +Light Up was contributed to this collection by James Harvey. + +\B{nikoli-lightup} +\W{http://www.nikoli.co.jp/puzzles/32/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/32/index-e.htm} +(beware of Flash) + +\H{lightup-controls} \i{Light Up controls} + +\IM{Light Up controls} controls, for Light Up + +Left-clicking in a non-black square will toggle the presence of a light +in that square. Right-clicking in a non-black square toggles a mark there to aid +solving; it can be used to highlight squares that cannot be lit, for example. + +You may not place a light in a marked square, nor place a mark in a lit square. + +The game will highlight obvious errors in red. Lights lit by other +lights are highlighted in this way, as are numbered squares which +do not (or cannot) have the right number of lights next to them. + +Thus, the grid is solved when all non-black squares have yellow +highlights and there are no red lights. + +(All the actions described in \k{common-actions} are also available.) + +\H{lightup-parameters} \I{parameters, for Light Up}Light Up 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{%age of black squares} + +\dd Rough percentage of black squares in the grid. + +\lcont{ + +This is a hint rather than an instruction. If the grid generator is +unable to generate a puzzle to this precise specification, it will +increase the proportion of black squares until it can. + +} + +\dt \e{Symmetry} + +\dd Allows you to specify the required symmetry of the black squares +in the grid. (This does not affect the difficulty of the puzzles +noticeably.) + +\dt \e{Difficulty} + +\dd \q{Easy} means that the puzzles should be soluble without +backtracking or guessing, \q{Hard} means that some guesses will +probably be necessary. + + +\C{map} \i{Map} + +\cfg{winhelp-topic}{games.map} + +You are given a map consisting of a number of regions. Your task is +to colour each region with one of four colours, in such a way that +no two regions sharing a boundary have the same colour. You are +provided with some regions already coloured, sufficient to make the +remainder of the solution unique. + +Only regions which share a length of border are required to be +different colours. Two regions which meet at only one \e{point} +(i.e. are diagonally separated) may be the same colour. + +I believe this puzzle is original; I've never seen an implementation +of it anywhere else. The concept of a \i{four-colouring} puzzle was +suggested by Owen Dunn; credit must also go to Nikoli and to Verity +Allan for inspiring the train of thought that led to me realising +Owen's suggestion was a viable puzzle. Thanks also to Gareth Taylor +for many detailed suggestions. + +\H{map-controls} \i{Map controls} + +\IM{Map controls} controls, for Map + +To colour a region, click the left mouse button on an existing +region of the desired colour and drag that colour into the new +region. + +(The program will always ensure the starting puzzle has at least one +region of each colour, so that this is always possible!) + +If you need to clear a region, you can drag from an empty region, or +from the puzzle boundary if there are no empty regions left. + +Dragging a colour using the \e{right} mouse button will stipple the +region in that colour, which you can use as a note to yourself that +you think the region \e{might} be that colour. A region can contain +stipples in multiple colours at once. (This is often useful at the +harder difficulty levels.) + +If you press L during play, the game will toggle display of a number +in each region of the map. This is useful if you want to discuss a +particular puzzle instance with a friend \dash having an unambiguous +name for each region is much easier than trying to refer to them all +by names such as \q{the one down and right of the brown one on the +top border}. + +(All the actions described in \k{common-actions} are also available.) + +\H{map-parameters} \I{parameters, for Map}Map 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{Regions} + +\dd Number of regions in the generated map. + +\dt \e{Difficulty} + +\dd In \q{Easy} mode, there should always be at least one region +whose colour can be determined trivially. In \q{Normal} and \q{Hard} +modes, you will have to use increasingly complex logic to deduce the +colour of some regions. However, it will always be possible without +having to guess or backtrack. + +\lcont{ + +In \q{Unreasonable} mode, the program will feel free to generate +puzzles which are as hard as it can possibly make them: the only +constraint is that they should still have a unique solution. Solving +Unreasonable puzzles may require guessing and backtracking. + +} + + +\C{loopy} \i{Loopy} + +\cfg{winhelp-topic}{games.loopy} + +You are given a grid of dots. Your aim is to draw a single unbroken +loop from dot to dot within the grid. + +Some of the square spaces between the dots contain numbers. These +numbers indicate how many of the four edges of that square are part +of the loop. The loop you draw must correctly satisfy all of these +clues to be considered a correct solution. + +Credit for this puzzle goes to \i{Nikoli} \k{nikoli-loopy}. + +Loopy was contributed to this collection by Mike Pinna. + +\B{nikoli-loopy} +\W{http://www.nikoli.co.jp/puzzles/3/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/3/index-e.htm} +(beware of Flash) + +\H{loopy-controls} \i{Loopy controls} + +\IM{Loopy controls} controls, for Loopy + +Click the left mouse button between two dots to add a line segment +connecting them. Click again to remove that line segment. + +If you are sure that a particular line segment is \e{not} part of +the loop, you can click the right mouse button to add a small cross +indicating this. Click again to remove the cross. + +(All the actions described in \k{common-actions} are also available.) + +\H{loopy-parameters} \I{parameters, for Loopy}Loopy 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. +\#{FIXME: what distinguishes Easy, Medium, and Hard? In particular, +when are backtracking/guesswork required, if ever?} + + +\C{inertia} \i{Inertia} + +\cfg{winhelp-topic}{games.inertia} + +You are a small green ball sitting in a grid full of obstacles. Your +aim is to collect all the gems without running into any mines. + +You can move the ball in any orthogonal \e{or diagonal} direction. +Once the ball starts moving, it will continue until something stops +it. A wall directly in its path will stop it (but if it is moving +diagonally, it will move through a diagonal gap between two other +walls without stopping). Also, some of the squares are \q{stops}; +when the ball moves on to a stop, it will stop moving no matter what +direction it was going in. Gems do \e{not} stop the ball; it picks +them up and keeps on going. + +Running into a mine is fatal. Even if you picked up the last gem in +the same move which then hit a mine, the game will count you as dead +rather than victorious. + +This game was originally implemented for Windows by Ben Olmstead +\k{bem}, who was kind enough to release his source code on request +so that it could be re-implemented for this collection. + +\B{bem} \W{http://xn13.com/}\cw{http://xn13.com/} + +\H{inertia-controls} \i{Inertia controls} + +\IM{Inertia controls} controls, for Inertia +\IM{Inertia controls} keys, for Inertia +\IM{Inertia controls} shortcuts (keyboard), for Inertia + +You can move the ball in any of the eight directions using the +numeric keypad. Alternatively, if you click the left mouse button on +the grid, the ball will begin a move in the general direction of +where you clicked. + +If you use the \q{Solve} function on this game, the program will +compute a path through the grid which collects all the remaining +gems and returns to the current position. A hint arrow will appear +on the ball indicating the direction in which you should move to +begin on this path. If you then move in that direction, the arrow +will update to indicate the next direction on the path. You can also +press Space to automatically move in the direction of the hint +arrow. If you move in a different direction from the one shown by +the arrow, the hint arrows will stop appearing because you have +strayed from the provided path; you can then use \q{Solve} again to +generate a new path if you want to. + +All the actions described in \k{common-actions} are also available. +In particular, if you do run into a mine and die, you can use the +Undo function and resume playing from before the fatal move. The +game will keep track of the number of times you have done this. + +\H{inertia-parameters} \I{parameters, for Inertia}Inertia 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. + + +\C{tents} \i{Tents} + +\cfg{winhelp-topic}{games.tents} + +You have a grid of squares, some of which contain trees. Your aim is +to place tents in some of the remaining squares, in such a way that +the following conditions are met: + +\b There are exactly as many tents as trees. + +\b The tents and trees can be matched up in such a way that each +tent is directly adjacent (horizontally or vertically, but not +diagonally) to its own tree. However, a tent may be adjacent to +other trees as well as its own. + +\b No two tents are adjacent horizontally, vertically \e{or +diagonally}. + +\b The number of tents in each row, and in each column, matches the +numbers given round the sides of the grid. + +This puzzle can be found in several places on the Internet, and was +brought to my attention by e-mail. I don't know who I should credit +for inventing it. + +\H{tents-controls} \i{Tents controls} + +\IM{Tents controls} controls, for Tents + +Left-clicking in a blank square will place a tent in it. +Right-clicking in a blank square will colour it green, indicating +that you are sure it \e{isn't} a tent. Clicking either button in an +occupied square will clear it. + +If you \e{drag} with the right button along a row or column, every +blank square in the region you cover will be turned green, and no +other squares will be affected. (This is useful for clearing the +remainder of a row once you have placed all its tents.) + +(All the actions described in \k{common-actions} are also available.) + +\H{tents-parameters} \I{parameters, for Tents}Tents 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, but at present none of the +available difficulty levels requires guesswork or backtracking. + + +\C{bridges} \i{Bridges} + +\cfg{winhelp-topic}{games.bridges} + +You have a set of islands distributed across the playing area. Each +island contains a number. Your aim is to connect the islands +together with bridges, in such a way that: + +\b Bridges run horizontally or vertically. + +\b The number of bridges terminating at any island is equal to the +number written in that island. + +\b Two bridges may run in parallel between the same two islands, but +no more than two may do so. + +\b No bridge crosses another bridge. + +\b All the islands are connected together. + +There are some configurable alternative modes, which involve +changing the parallel-bridge limit to something other than 2, and +introducing the additional constraint that no sequence of bridges +may form a loop from one island back to the same island. The rules +stated above are the default ones. + +Credit for this puzzle goes to \i{Nikoli} \k{nikoli-bridges}. + +Bridges was contributed to this collection by James Harvey. + +\B{nikoli-bridges} +\W{http://www.nikoli.co.jp/puzzles/14/index-e.htm}\cw{http://www.nikoli.co.jp/puzzles/14/index-e.htm} + +\H{bridges-controls} \i{Bridges controls} + +\IM{Bridges controls} controls, for Bridges + +To place a bridge between two islands, click the mouse down on one +island and drag it towards the other. You do not need to drag all +the way to the other island; you only need to move the mouse far +enough for the intended bridge direction to be unambiguous. (So you +can keep the mouse near the starting island and conveniently throw +bridges out from it in many directions.) + +Doing this again when a bridge is already present will add another +parallel bridge. If there are already as many bridges between the +two islands as permitted by the current game rules (i.e. two by +default), the same dragging action will remove all of them. + +If you want to remind yourself that two islands definitely \e{do +not} have a bridge between them, you can right-drag between them in +the same way to draw a \q{non-bridge} marker. + +If you think you have finished with an island (i.e. you have placed +all its bridges and are confident that they are in the right +places), you can mark the island as finished by left-clicking on it. +This will highlight it and all the bridges connected to it, and you +will be prevented from accidentally modifying any of those bridges +in future. Left-clicking again on a highlighted island will unmark +it and restore your ability to modify it. + +Violations of the puzzle rules will be marked in red: + +\b An island with too many bridges will be highlighted in red. + +\b An island with too few bridges will be highlighted in red if it +is definitely an error (as opposed to merely not being finished +yet): if adding enough bridges would involve having to cross another +bridge or remove a non-bridge marker, or if the island has been +highlighted as complete. + +\b A group of islands and bridges may be highlighted in red if it is +a closed subset of the puzzle with no way to connect it to the rest +of the islands. For example, if you directly connect two 1s together +with a bridge and they are not the only two islands on the grid, +they will light up red to indicate that such a group cannot be +contained in any valid solution. + +\b If you have selected the (non-default) option to disallow loops +in the solution, a group of bridges which forms a loop will be +highlighted. + +(All the actions described in \k{common-actions} are also available.) + +\H{bridges-parameters} \I{parameters, for Bridges}Bridges 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 Difficulty level of puzzle. + +\dt \e{Allow loops} + +\dd This is set by default. If cleared, puzzles will be generated in +such a way that they are always soluble without creating a loop, and +solutions which do involve a loop will be disallowed. + +\dt \e{Max. bridges per direction} + +\dd Maximum number of bridges in any particular direction. The +default is 2, but you can change it to 1, 3 or 4. In general, fewer +is easier. + +\dt \e{%age of island squares} + +\dd Gives a rough percentage of islands the generator will try and +lay before finishing the puzzle. Certain layouts will not manage to +lay enough islands; this is an upper bound. + +\dt \e{Expansion factor (%age)} + +\dd The grid generator works by picking an existing island at random +(after first creating an initial island somewhere). It then decides +on a direction (at random), and then works out how far it could +extend before creating another island. This parameter determines how +likely it is to extend as far as it can, rather than choosing +somewhere closer. + +High expansion factors usually mean easier puzzles with fewer +possible islands; low expansion factors can create lots of +tightly-packed islands. + + \A{licence} \I{MIT licence}\ii{Licence} -This software is \i{copyright} 2004-2005 Simon Tatham. +This software is \i{copyright} 2004-2006 Simon Tatham. -Portions copyright Richard Boulton. +Portions copyright Richard Boulton, James Harvey and Mike Pinna. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files @@ -951,6 +2090,17 @@ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +\IM{command-line}{command line} command line + +\IM{default parameters, specifying} default parameters, specifying +\IM{default parameters, specifying} preferences, specifying default + +\IM{Unix} Unix +\IM{Unix} Linux + +\IM{generating game IDs} generating game IDs +\IM{generating game IDs} game ID, generating + \IM{specific} \q{Specific}, menu option \IM{custom} \q{Custom}, menu option