X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/ef57b17d968689e10ea3b2b6a75d360365645556..818752113d2ba0ab8661365c5e81665e8fc6d15f:/puzzles.but diff --git a/puzzles.but b/puzzles.but index 8e99a31..5f8bff4 100644 --- a/puzzles.but +++ b/puzzles.but @@ -82,6 +82,10 @@ 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 +actions are situated on the \I{File menu}\q{File} and \I{Edit +menu}\q{Edit} menus instead.) + \dt \ii\e{New game} (\q{N}, Ctrl+\q{N}) \dd Starts a new game, with a random initial state. @@ -99,6 +103,40 @@ game.) \dd Redoes a previous undone move. +\dt \ii\e{Copy} + +\dd Copies the current state of your game to the clipboard in text +format, so that you can paste it into (say) an e-mail client or a +web message board if you're discussing the game with someone else. +(Not all games support this feature.) + +\dt \ii\e{Solve} + +\dd Transforms the puzzle instantly into its solved state. For some +games (Cube) this feature is not supported at all because it is of +no particular use. For other games (such as Pattern), the solved +state can be used to give you information, if you can't see how a +solution can exist at all or you want to know where you made a +mistake. For still other games (such as Sixteen), automatic solution +tells you nothing about how to \e{get} to the solution, but it does +provide a useful way to get there quickly so that you can experiment +with set-piece moves and transformations. + +\lcont{ + +Some games (such as Solo) are capable of solving a game ID you have +typed in from elsewhere. Other games (such as Rectangles) cannot +solve a game ID they didn't invent themself, but when they did +invent the game ID they know what the solution is already. Still +other games (Pattern) can solve \e{some} external game IDs, but only +if they aren't too difficult. + +The \q{Solve} command adds the solved state to the end of the undo +chain for the puzzle. In other words, if you want to go back to +solving it yourself after seeing the answer, you can just press Undo. + +} + \dt \I{exit}\ii\e{Quit} (\q{Q}, Ctrl+\q{Q}) \dd Closes the application entirely. @@ -106,8 +144,8 @@ game.) \H{common-id} Recreating games with the \ii{game ID} The \q{\i{Specific...}} option from the \I{Game menu}\q{Game} menu -lets you see a short string (the \q{game ID}) that captures the -initial state of the current game. +(or the \q{File} menu, on Mac OS X) lets you see a short string (the +\q{game ID}) that captures the initial state of the current game. The precise \I{ID format}format of the ID is specific to each game. It consists of two parts delimited by a colon (e.g., \c{c4x4:4F01,0}); @@ -151,11 +189,11 @@ 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 -\q{Specific} from the \q{Game} menu (see \k{common-id}). The text in -the \q{Game ID} box will be composed of two parts, separated by a -colon. The first of these parts represents the game parameters (the -size of the playing area, for example, and anything else you set -using the \q{Type} menu). +\q{Specific} from the \q{Game} or \q{File} menu (see \k{common-id}). +The text in the \q{Game ID} box will be composed of two parts, +separated by a colon. The first of these parts represents the game +parameters (the size of the playing area, for example, and anything +else you set using the \q{Type} menu). If you run the game with just that parameter text on the command line, it will start up with the settings you specified. @@ -377,10 +415,128 @@ Right-clicking will move it in the opposite direction. \H{sixteen-params} \I{parameters, for Sixteen}Sixteen parameters -The only parameters available from the \q{Custom...} option on the -\q{Type} menu are \e{Width} and \e{Height}, which are -self-explanatory. +The parameters available from the \q{Custom...} option on the +\q{Type} menu are: + +\b \e{Width} and \e{Height}, which are self-explanatory. + +\b You can ask for a limited shuffling operation to be performed on +the grid. By default, Sixteen will shuffle the grid in such a way +that any arrangement is about as probable as any other. You can +override this by requesting a precise number of shuffling moves to +be performed. Typically your aim is then to determine the precise +set of shuffling moves and invert them exactly, so that you answer +(say) a four-move shuffle with a four-move solution. Note that the +more moves you ask for, the more likely it is that solutions shorter +than the target length will turn out to be possible. + +\H{sixteen-cmdline} \I{command line, for Sixteen}Additional +command-line configuration + +The limited shuffle parameter, described in \k{sixteen-params}, is +not mentioned by default in the game ID (see \k{common-id}). So if +you set your shuffling move count to (say) 4, and then you generate +a normal 4\by\.4 grid, then the game ID will simply say +\c{4x4:}\e{numbers}. This means that if you send the game ID to +another player and they paste it into their copy of Sixteen, their +game will not be automatically configured to use the same shuffle +limit 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 +shuffle limit, you can do it by suffixing the letter \cq{m} to the +parameters, followed by the move count as a decimal number. For +example, \cq{sixteen 4x4m4} will start up Sixteen with a problem +guaranteed to be soluble in four moves or fewer. + + +\C{twiddle} \i{Twiddle} + +\cfg{winhelp-topic}{games.twiddle} + +Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen +(see \k{sixteen}): you are given a grid of square tiles, each +containing a number, and your aim is to arrange the numbers into +ascending order. + +In basic Twiddle, your move is to rotate a square group of four +tiles about their common centre. (Orientation is not significant in +the basic puzzle, although you can select it.) On more advanced +settings, you can rotate a larger square group of tiles. + +I first saw this type of puzzle in the GameCube game \q{Metroid +Prime 2}. In the Main Gyro Chamber in that game, there is a puzzle +you solve to unlock a door, which is a special case of Twiddle. I +developed this game as a generalisation of that puzzle. + +\H{twiddle-controls} \I{controls, for Twiddle}Twiddle controls + +To play Twiddle, click the mouse in the centre of the square group +you wish to rotate. In the basic mode, you rotate a 2\by\.2 square, +which means you have to click at a corner point where four tiles +meet. +In more advanced modes you might be rotating 3\by\.3 or even more at +a time; if the size of the square is odd then you simply click in +the centre tile of the square you want to rotate. + +Clicking with the left mouse button rotates the group anticlockwise. +Clicking with the right button rotates it clockwise. + +(All the actions described in \k{common-actions} are also available.) + +\H{twiddle-parameters} \I{parameters, for Twiddle}Twiddle parameters + +Twiddle provides several configuration options via the \q{Custom} +option on the \q{Type} menu: + +\b You can configure the width and height of the puzzle grid. + +\b You can configure the size of square block that rotates at a time. + +\b You can ask for every square in the grid to be distinguishable +(the default), or you can ask for a simplified puzzle in which there +are groups of identical numbers. In the simplified puzzle your aim +is just to arrange all the 1s into the first row, all the 2s into +the second row, and so on. + +\b You can configure whether the orientation of tiles matters. If +you ask for an orientable puzzle, each tile will have a triangle +drawn in it. All the triangles must be pointing upwards to complete +the puzzle. + +\b You can ask for a limited shuffling operation to be performed on +the grid. By default, Twiddle will shuffle the grid so much that any +arrangement is about as probable as any other. You can override this +by requesting a precise number of shuffling moves to be performed. +Typically your aim is then to determine the precise set of shuffling +moves and invert them exactly, so that you answer (say) a four-move +shuffle with a four-move solution. Note that the more moves you ask +for, the more likely it is that solutions shorter than the target +length will turn out to be possible. + +\H{twiddle-cmdline} \I{command line, for Twiddle}Additional +command-line configuration + +The limited shuffle parameter, described in \k{twiddle-parameters}, +is not mentioned by default in the game ID (see \k{common-id}). So +if you set your shuffling move count to (say) 4, and then you +generate a normal 3\by\.3 grid, then the game ID will simply say +\c{3x3n2:}\e{numbers}. This means that if you send the game ID to +another player and they paste it into their copy of Twiddle, their +game will not be automatically configured to use the same shuffle +limit 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 +shuffle limit, you can do it by suffixing the letter \cq{m} to the +parameters, followed by the move count as a decimal number. For +example, \cq{twiddle 3x3n2m4} will start up Twiddle with a problem +guaranteed to be soluble in four moves or fewer. \C{rectangles} \i{Rectangles} @@ -589,19 +745,40 @@ 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). 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. + \H{solo-cmdline} \I{command line, for Solo}Additional command-line configuration -The symmetry parameter, described in \k{solo-parameters}, is not -mentioned by default in the game ID (see \k{common-id}). So if you -set your symmetry to (say) 4-way rotational, 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 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.) +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 @@ -616,9 +793,20 @@ parameters: \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 + +\b \cq{du} for Unreasonable 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}. +running \cq{solo 2x3r4}, or \q{Advanced}-level 2x3 grids by running +\cq{solo 2x3da}. \A{licence} \I{MIT licence}\ii{Licence}