diff --git a/apps/plugins/puzzles/SOURCES b/apps/plugins/puzzles/SOURCES index af43fd5616..5745a67c68 100644 --- a/apps/plugins/puzzles/SOURCES +++ b/apps/plugins/puzzles/SOURCES @@ -2,10 +2,7 @@ rockbox.c rbwrappers.c rbmalloc.c -#ifndef SANSA_C200V2 help.c -helpcontent.c -#endif src/combi.c src/divvy.c diff --git a/apps/plugins/puzzles/genhelp.sh b/apps/plugins/puzzles/genhelp.sh index f243a1d5f6..293c58bd2b 100755 --- a/apps/plugins/puzzles/genhelp.sh +++ b/apps/plugins/puzzles/genhelp.sh @@ -1,5 +1,5 @@ #!/bin/bash -# usage: ./genhelp.sh > helpcontent.sh +# usage: ./genhelp.sh # # expects halibut to be installed in $PATH: # http://www.chiark.greenend.org.uk/~sgtatham/halibut @@ -16,37 +16,37 @@ cat puzzles.txt.tmp | awk 'BEGIN { a=1; } /Appendix A/ { a = 0; } a==1' > puzzle rm puzzles.txt.tmp -cat <= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' +cat puzzles.txt | awk 'BEGIN { file = "none"; } + /#Chapter/ { + if($0 !~ / 1:/ && $0 !~ / 2:/) + { + if(file != "none") + print ";" > file; + file = "help/"tolower($3$4)".c"; + if($3 ~ "Rectangles") + file = "help/rect.c"; + print "/* auto-generated by genhelp.sh */" > file; + print "/* DO NOT EDIT! */" > file; + print "const char help_text[] = " > file; } + } + file != "none" { + gsub(/\\/,"\\\\"); + if($0 !~ /Chapter/ && substr($0, 1, 1) == "#") + begin = "\\n"; + else begin = ""; + last = substr($0, length($0), 1); + if(length($0) == 0 || last == "|" || last == "-" || (term == "\\n" && last == "3")) + term="\\n"; + else term = " "; + print "\"" begin $0 term "\"" > file; + } + END { + print ";" > file; + } +' -cat <= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | head -n 1` - -# generate content -cat puzzles.txt | tail -c +$start | awk '{gsub(/\\/,"\\\\"); if($0 !~ /Chapter/ && substr($0, 1, 1) == "#") begin = "\\n"; else begin = ""; last = substr($0, length($0), 1); if(length($0) == 0 || last == "|" || last == "-" || (term == "\\n" && last == "3")) term="\\n"; else term = " "; print "\"" begin $0 term "\"";}' - -cat <= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | awk 'BEGIN { max = 0; last = 0; } { if($0 - last > max) max = $0 - last; last = $0; } END { print max }'` - -# remember number of chapters -num=`cat puzzles.txt | awk 'BEGIN { x = -1; n = 0; } /#Chapter/ { if($0 !~ / 1:/ && $0 !~ / 2:/) { if( x == -1 ) { x = n; } print n - x","; }} {n += length($0) + 1; if(x >= 0 && $0 !~ /Chapter/ && substr($0, 1, 1) == "#") n += 1;}' | wc -l` - -echo "const int help_maxlen = "$maxlen";" -echo "const int help_numchapters = "$num";" +# generate quick help from gamedesc.txt +cat src/gamedesc.txt | awk -F ":" '{print "const char quick_help_text[] = \""$5"\";" >> "help/"$1".c" }' diff --git a/apps/plugins/puzzles/help.c b/apps/plugins/puzzles/help.c index 4a2560e4c4..c45f50e65e 100644 --- a/apps/plugins/puzzles/help.c +++ b/apps/plugins/puzzles/help.c @@ -3,51 +3,12 @@ void full_help(const char *name) { - int ch_num = -1; - - /* dirty hack */ - if(!strcmp(name, "Train Tracks")) - name = "Tracks"; - - /* search the help text for a chapter with this name */ - for(int ch = 0; ch < help_numchapters; ++ch) - { - char *str = help_text + help_chapteroffsets[ch]; - char *ptr = strchr(str, ':') + 1; - const char *namep = name; - if(*ptr++ != ' ') - continue; - - while(*ptr == *namep && *ptr && *namep) - { - ptr++; - namep++; - } - if(*namep == '\0' && (*ptr == '\n' || *ptr == ' ')) /* full match */ - { - ch_num = ch; - break; - } - } - if(ch_num < 0) - { - rb->splashf(HZ * 2, "No topic found for `%s' (REPORT ME!)", name); - return; - } - char *buf = smalloc(help_maxlen + 1); - rb->memset(buf, 0, help_maxlen + 1); - if(ch_num < help_numchapters - 1) - { - /* safe to look ahead */ - memcpy(buf, help_text + help_chapteroffsets[ch_num], help_chapteroffsets[ch_num + 1] - help_chapteroffsets[ch_num]); - } - else - rb->strlcpy(buf, help_text + help_chapteroffsets[ch_num], help_maxlen + 1); + unsigned old_bg = rb->lcd_get_background(); rb->lcd_set_foreground(LCD_WHITE); - unsigned old_bg = rb->lcd_get_background(); rb->lcd_set_background(LCD_BLACK); - view_text(name, buf); + + view_text(name, help_text); + rb->lcd_set_background(old_bg); - sfree(buf); } diff --git a/apps/plugins/puzzles/help.h b/apps/plugins/puzzles/help.h index e97fe870bf..29fcb8271c 100644 --- a/apps/plugins/puzzles/help.h +++ b/apps/plugins/puzzles/help.h @@ -1,7 +1,7 @@ -/* defined in helpcontent.c */ +/* defined in help/ */ -extern int help_chapteroffsets[], help_maxlen, help_numchapters; extern const char help_text[]; +extern const char quick_help_text[]; /* in help.c */ void full_help(const char *name); diff --git a/apps/plugins/puzzles/help/blackbox.c b/apps/plugins/puzzles/help/blackbox.c new file mode 100644 index 0000000000..359dd61220 --- /dev/null +++ b/apps/plugins/puzzles/help/blackbox.c @@ -0,0 +1,150 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 19: Black Box " +"\n" +"A number of balls are hidden in a rectangular arena. You have to " +"deduce the positions of the balls by firing lasers positioned at the " +"edges of the arena and observing how their beams are deflected. " +"\n" +"Beams will travel straight from their origin until they hit the " +"opposite side of the arena (at which point they emerge), unless " +"affected by balls in one of the following ways: " +"\n" +"- A beam that hits a ball head-on is absorbed and will never re-\n" +"emerge. This includes beams that meet a ball on the first rank " +"of the arena. " +"\n" +"- A beam with a ball in its front-left square and no ball ahead of " +"it gets deflected 90 degrees to the right. " +"\n" +"- A beam with a ball in its front-right square and no ball ahead " +"of it gets similarly deflected to the left. " +"\n" +"- A beam that would re-emerge from its entry location is " +"considered to be `reflected'. " +"\n" +"- A beam which would get deflected before entering the arena by a " +"ball to the front-left or front-right of its entry point is also " +"considered to be `reflected'. " +"\n" +"Beams that are reflected appear as a `R'; beams that hit balls head-\n" +"on appear as `H'. Otherwise, a number appears at the firing point " +"and the location where the beam emerges (this number is unique to " +"that shot). " +"\n" +"You can place guesses as to the location of the balls, based on the " +"entry and exit patterns of the beams; once you have placed enough " +"balls a button appears enabling you to have your guesses checked. " +"\n" +"Here is a diagram showing how the positions of balls can create each " +"of the beam behaviours shown above: " +"\n" +"1RHR----\n" +"|..O.O...|\n" +"2........3\n" +"|........|\n" +"|........|\n" +"3........|\n" +"|......O.|\n" +"H........|\n" +"|.....O..|\n" +"12-RR---\n" +"\n" +"As shown, it is possible for a beam to receive multiple reflections " +"before re-emerging (see turn 3). Similarly, a beam may be reflected " +"(possibly more than once) before receiving a hit (the `H' on the " +"left side of the example). " +"\n" +"Note that any layout with more than 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): " +"\n" +"--------\n" +"|........|\n" +"|........|\n" +"|..O..O..|\n" +"|...xx...|\n" +"|...xx...|\n" +"|..O..O..|\n" +"|........|\n" +"|........|\n" +"--------\n" +"\n" +"For this reason, when you have your guesses checked, the game " +"will check that your solution _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 " +"_any_ of the locations marked with an x, and you would still win. " +"\n" +"Black Box was contributed to this collection by James Harvey. " +"\n" +"\n#19.1 Black Box controls " +"\n" +"To fire a laser beam, left-click in a square around the edge of " +"the arena. The results will be displayed immediately. Clicking or " +"holding the left button on one of these squares will highlight the " +"current go (or a previous go) to confirm the exit point for that " +"laser, if applicable. " +"\n" +"To guess the location of a ball, left-click within the arena and a " +"black circle will appear marking the guess; click again to remove " +"the guessed ball. " +"\n" +"Locations in the arena may be locked against modification by right-\n" +"clicking; whole rows and columns may be similarly locked by right-\n" +"clicking in the laser square above/below that column, or to the " +"left/right of that row. " +"\n" +"The cursor keys may also be used to move around the grid. Pressing " +"the Enter key will fire a laser or add a new ball-location guess, " +"and pressing Space will lock a cell, row, or column. " +"\n" +"When an appropriate number of balls have been guessed, a button will " +"appear at the top-left corner of the grid; clicking that (with mouse " +"or cursor) will check your guesses. " +"\n" +"If you click the `check' button and your guesses are not correct, " +"the game will show you the minimum information necessary to " +"demonstrate this to you, so you can try again. If your ball " +"positions are not consistent with the beam paths you already know " +"about, one beam path will be circled to indicate that it proves you " +"wrong. If your positions match all the existing beam paths but are " +"still wrong, one new beam path will be revealed (written in red) " +"which is not consistent with your current guesses. " +"\n" +"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 " +"as filled black circles with red crosses, and missing balls as " +"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 `check' button), and red text marks " +"any laser you _could_ have fired in order to distinguish your ball " +"layout from the correct one. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#19.2 Black Box parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. There are 2 x _Width_ x _Height_ lasers " +"per grid, two per row and two per column. " +"\n" +"_No. of balls_ " +"\n" +"Number of balls to place in the grid. This can be a single " +"number, or a range (separated with a hyphen, like `2-6'), " +"and determines the number of balls to place on the grid. " +"The `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 beam " +"inputs and outputs match. " +"\n" +; +const char quick_help_text[] = "Find the hidden balls in the box by bouncing laser beams off them."; diff --git a/apps/plugins/puzzles/help/bridges.c b/apps/plugins/puzzles/help/bridges.c new file mode 100644 index 0000000000..6a7f301f1a --- /dev/null +++ b/apps/plugins/puzzles/help/bridges.c @@ -0,0 +1,144 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 26: Bridges " +"\n" +"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: " +"\n" +"- Bridges run horizontally or vertically. " +"\n" +"- The number of bridges terminating at any island is equal to the " +"number written in that island. " +"\n" +"- Two bridges may run in parallel between the same two islands, " +"but no more than two may do so. " +"\n" +"- No bridge crosses another bridge. " +"\n" +"- All the islands are connected together. " +"\n" +"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. " +"\n" +"Credit for this puzzle goes to Nikoli [12]. " +"\n" +"Bridges was contributed to this collection by James Harvey. " +"\n" +"[12] http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html (beware " +"of Flash) " +"\n" +"\n#26.1 Bridges controls " +"\n" +"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.) " +"\n" +"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. " +"\n" +"If you want to remind yourself that two islands definitely _do not_ " +"have a bridge between them, you can right-drag between them in the " +"same way to draw a `non-bridge' marker. " +"\n" +"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. " +"\n" +"You can also use the cursor keys to move around the grid: if " +"possible the cursor will always move orthogonally, otherwise it " +"will move towards the nearest island to the indicated direction. " +"Holding Control and pressing a cursor key will lay a bridge in that " +"direction (if available); Shift and a cursor key will lay a `non-\n" +"bridge' marker. Pressing the return key followed by a cursor key " +"will also lay a bridge in that direction. " +"\n" +"You can mark an island as finished by pressing the space bar or by " +"pressing the return key twice. " +"\n" +"By pressing a number key, you can jump to the nearest island with " +"that number. Letters `a', ..., `f' count as 10, ..., 15 and `0' as " +"16. " +"\n" +"Violations of the puzzle rules will be marked in red: " +"\n" +"- An island with too many bridges will be highlighted in red. " +"\n" +"- 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. " +"\n" +"- 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. " +"\n" +"- 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. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#26.2 Bridges parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Difficulty_ " +"\n" +"Difficulty level of puzzle. " +"\n" +"_Allow loops_ " +"\n" +"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. " +"\n" +"_Max. bridges per direction_ " +"\n" +"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. " +"\n" +"_%age of island squares_ " +"\n" +"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. " +"\n" +"_Expansion factor (%age)_ " +"\n" +"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. " +"\n" +"High expansion factors usually mean easier puzzles with fewer " +"possible islands; low expansion factors can create lots of " +"tightly-packed islands. " +"\n" +; +const char quick_help_text[] = "Connect all the islands with a network of bridges."; diff --git a/apps/plugins/puzzles/help/cube.c b/apps/plugins/puzzles/help/cube.c new file mode 100644 index 0000000000..86ffbb681d --- /dev/null +++ b/apps/plugins/puzzles/help/cube.c @@ -0,0 +1,58 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 4: Cube " +"\n" +"This is another one I originally saw as a web game. This one was a " +"Java game [2], by Paul Scott. You have a grid of 16 squares, six of " +"which are blue; on one square rests a cube. Your move is to use the " +"arrow keys to roll the cube through 90 degrees so that it moves to " +"an adjacent square. If you roll the cube on to a blue square, the " +"blue square is picked up on one face of the cube; if you roll a blue " +"face of the cube on to a non-blue square, the blueness is put down " +"again. (In general, whenever you roll the cube, the two faces that " +"come into contact swap colours.) Your job is to get all six blue " +"squares on to the six faces of the cube at the same time. Count your " +"moves and try to do it in as few as possible. " +"\n" +"Unlike the original Java game, my version has an additional feature: " +"once you've mastered the game with a cube rolling on a square grid, " +"you can change to a triangular grid and roll any of a tetrahedron, " +"an octahedron or an icosahedron. " +"\n" +"[2] http://www3.sympatico.ca/paulscott/cube/cube.htm " +"\n" +"\n#4.1 Cube controls " +"\n" +"This game can be played with either the keyboard or the mouse. " +"\n" +"Left-clicking anywhere on the window will move the cube (or other " +"solid) towards the mouse pointer. " +"\n" +"The arrow keys can also used to roll the cube on its square grid in " +"the four cardinal directions. On the triangular grids, the mapping " +"of arrow keys to directions is more approximate. Vertical movement " +"is disallowed where it doesn't make sense. The four keys surrounding " +"the arrow keys on the numeric keypad (`7', `9', `1', `3') can be " +"used for diagonal movement. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#4.2 Cube parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Type of solid_ " +"\n" +"Selects the solid to roll (and hence the shape of the grid): " +"tetrahedron, cube, octahedron, or icosahedron. " +"\n" +"_Width / top_, _Height / bottom_ " +"\n" +"On a square grid, horizontal and vertical dimensions. On a " +"triangular grid, the number of triangles on the top and bottom " +"rows respectively. " +"\n" +; +const char quick_help_text[] = "Pick up all the blue squares by rolling the cube over them."; diff --git a/apps/plugins/puzzles/help/dominosa.c b/apps/plugins/puzzles/help/dominosa.c new file mode 100644 index 0000000000..e9387250ba --- /dev/null +++ b/apps/plugins/puzzles/help/dominosa.c @@ -0,0 +1,62 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 17: Dominosa " +"\n" +"A normal set of dominoes - that is, one instance of every " +"(unordered) pair of numbers from 0 to 6 - 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. " +"\n" +"This puzzle is widely credited to O. S. Adler, and takes part of its " +"name from those initials. " +"\n" +"\n#17.1 Dominosa controls " +"\n" +"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. " +"\n" +"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 _not_ covered by a single domino. Right-clicking again " +"removes the line. " +"\n" +"You can also use the cursor keys to move a cursor around the grid. " +"When the cursor is half way between two adjacent numbers, pressing " +"the return key will place a domino covering those numbers, or " +"pressing the space bar will lay a line between the two squares. " +"Repeating either action removes the domino or line. " +"\n" +"Pressing a number key will highlight all occurrences of that number. " +"Pressing that number again will clear the highlighting. Up to two " +"different numbers can be highlighted at any given time. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#17.2 Dominosa parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Maximum number on dominoes_ " +"\n" +"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) x (N+1) rectangle; so, in " +"particular, the default value of 6 gives an 8x7 grid. " +"\n" +"_Ensure unique solution_ " +"\n" +"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 _all_ the possible " +"solutions can be an additional challenge for an advanced player. " +"Turning off this option can also speed up puzzle generation. " +"\n" +; +const char quick_help_text[] = "Tile the rectangle with a full set of dominoes."; diff --git a/apps/plugins/puzzles/help/fifteen.c b/apps/plugins/puzzles/help/fifteen.c new file mode 100644 index 0000000000..dfe7ed11da --- /dev/null +++ b/apps/plugins/puzzles/help/fifteen.c @@ -0,0 +1,38 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 5: Fifteen " +"\n" +"The old ones are the best: this is the good old `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,_space_). " +"\n" +"\n#5.1 Fifteen controls " +"\n" +"This game can be controlled with the mouse or the keyboard. " +"\n" +"A left-click with the mouse in the row or column containing the " +"empty space will move as many tiles as necessary to move the space " +"to the mouse pointer. " +"\n" +"The arrow keys will move a tile adjacent to the space in the " +"direction indicated (moving the space in the _opposite_ direction). " +"\n" +"Pressing `h' will make a suggested move. Pressing `h' enough times " +"will solve the game, but it may scramble your progress while doing " +"so. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#5.2 Fifteen parameters " +"\n" +"The only options available from the `Custom...' option on the `Type' " +"menu are _Width_ and _Height_, which are self-explanatory. (Once " +"you've changed these, it's not a `15-puzzle' any more, of course!) " +"\n" +; +const char quick_help_text[] = "Slide the tiles around to arrange them into order."; diff --git a/apps/plugins/puzzles/help/filling.c b/apps/plugins/puzzles/help/filling.c new file mode 100644 index 0000000000..16dfbbd6fc --- /dev/null +++ b/apps/plugins/puzzles/help/filling.c @@ -0,0 +1,50 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 29: Filling " +"\n" +"You have a grid of squares, some of which contain digits, and the " +"rest of which are empty. Your job is to fill in digits in the empty " +"squares, in such a way that each connected region of squares all " +"containing the same digit has an area equal to that digit. " +"\n" +"(`Connected region', for the purposes of this game, does not count " +"diagonally separated squares as adjacent.) " +"\n" +"For example, it follows that no square can contain a zero, and that " +"two adjacent squares can not both contain a one. No region has an " +"area greater than 9 (because then its area would not be a single " +"digit). " +"\n" +"Credit for this puzzle goes to Nikoli [14]. " +"\n" +"Filling was contributed to this collection by Jonas Koelker. " +"\n" +"[14] http://www.nikoli.co.jp/en/puzzles/fillomino.html " +"\n" +"\n#29.1 Filling controls " +"\n" +"To play Filling, simply click the mouse in any empty square and " +"then type a digit on the keyboard to fill that square. By dragging " +"the mouse, you can select multiple squares to fill with a single " +"keypress. If you make a mistake, click the mouse in the incorrect " +"square and press 0, Space, Backspace or Enter to clear it again (or " +"use the Undo feature). " +"\n" +"You can also move around the grid with the cursor keys; typing a " +"digit will fill the square containing the cursor with that number; " +"typing 0 will clear it. You can also select multiple squares for " +"numbering or clearing with the return and arrow keys, before typing " +"a digit to fill or clear the highlighted squares (as above). The " +"space bar adds and removes single squares to and from the selection. " +"Backspace and escape remove all squares from the selection. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#29.2 Filling parameters " +"\n" +"Filling allows you to configure the number of rows and columns of " +"the grid, through the `Type' menu. " +"\n" +; +const char quick_help_text[] = "Mark every square with the area of its containing region."; diff --git a/apps/plugins/puzzles/help/flip.c b/apps/plugins/puzzles/help/flip.c new file mode 100644 index 0000000000..5a207b612b --- /dev/null +++ b/apps/plugins/puzzles/help/flip.c @@ -0,0 +1,49 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 14: Flip " +"\n" +"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. " +"\n" +"Each square contains a small diagram showing which other squares " +"change when you flip it. " +"\n" +"\n#14.1 Flip controls " +"\n" +"This game can be played with either the keyboard or the mouse. " +"\n" +"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. " +"\n" +"If you use the `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 _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.) " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#14.2 Flip parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Shape type_ " +"\n" +"This control determines the shape of the region which is flipped " +"by clicking in any given square. The default setting, `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, `Random', causes a random shape to be chosen for " +"every square, so the game is different every time. " +"\n" +; +const char quick_help_text[] = "Flip groups of squares to light them all up at once."; diff --git a/apps/plugins/puzzles/help/flood.c b/apps/plugins/puzzles/help/flood.c new file mode 100644 index 0000000000..7f010ee232 --- /dev/null +++ b/apps/plugins/puzzles/help/flood.c @@ -0,0 +1,66 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 39: Flood " +"\n" +"You are given a grid of squares, coloured at random in multiple " +"colours. In each move, you can flood-fill the top left square in a " +"colour of your choice (i.e. every square reachable from the starting " +"square by an orthogonally connected path of squares all the same " +"colour will be filled in the new colour). As you do this, more and " +"more of the grid becomes connected to the starting square. " +"\n" +"Your aim is to make the whole grid the same colour, in as few moves " +"as possible. The game will set a limit on the number of moves, based " +"on running its own internal solver. You win if you can make the " +"whole grid the same colour in that many moves or fewer. " +"\n" +"I saw this game (with a fixed grid size, fixed number of colours, " +"and fixed move limit) at http://floodit.appspot.com (no longer " +"accessible). " +"\n" +"\n#39.1 Flood controls " +"\n" +"To play Flood, click the mouse in a square. The top left corner and " +"everything connected to it will be flood-filled with the colour of " +"the square you clicked. Clicking a square the same colour as the top " +"left corner has no effect, and therefore does not count as a move. " +"\n" +"You can also use the cursor keys to move a cursor (outline black " +"square) around the grid. Pressing the return key will fill the top " +"left corner in the colour of the square under the cursor. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#39.2 Flood parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of the grid, in squares. " +"\n" +"_Colours_ " +"\n" +"Number of colours used to fill the grid. Must be at least 3\n" +"(with two colours there would only be one legal move at any " +"stage, hence no choice to make at all), and at most 10. " +"\n" +"_Extra moves permitted_ " +"\n" +"Controls the difficulty of the puzzle, by increasing the move " +"limit. In each new grid, Flood will run an internal solver to " +"generate its own solution, and then the value in this field " +"will be added to the length of Flood's solution to generate the " +"game's move limit. So a value of 0 requires you to be just as " +"efficient as Flood's automated solver, and a larger value makes " +"it easier. " +"\n" +"(Note that Flood's internal solver will not necessarily find the " +"shortest possible solution, though I believe it's pretty close. " +"For a real challenge, set this value to 0 and then try to solve " +"a grid in _strictly fewer_ moves than the limit you're given!) " +"\n" +; +const char quick_help_text[] = "Turn the grid the same colour in as few flood fills as possible."; diff --git a/apps/plugins/puzzles/help/galaxies.c b/apps/plugins/puzzles/help/galaxies.c new file mode 100644 index 0000000000..6e455bc0f9 --- /dev/null +++ b/apps/plugins/puzzles/help/galaxies.c @@ -0,0 +1,66 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 28: Galaxies " +"\n" +"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-degree rotationally " +"symmetric, and contains exactly one dot which is located at its " +"centre of symmetry. " +"\n" +"This puzzle was invented by Nikoli [13], under the name `Tentai " +"Show'; its name is commonly translated into English as `Spiral " +"Galaxies'. " +"\n" +"Galaxies was contributed to this collection by James Harvey. " +"\n" +"[13] http://www.nikoli.co.jp/en/puzzles/astronomical_show.html " +"\n" +"\n#28.1 Galaxies controls " +"\n" +"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-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. " +"\n" +"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.) " +"\n" +"You can also use the cursor keys to move around the grid squares and " +"lines. Pressing the return key when over a grid line will draw or " +"clear its edge, as above. Pressing the return key when over a dot " +"will pick up an arrow, to be dropped the next time the return key " +"is pressed; this can also be used to move existing arrows around, " +"removing them by dropping them on a dot or another arrow. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#28.2 Galaxies parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. More difficult " +"puzzles require more complex deductions, and the `Unreasonable' " +"difficulty level may require backtracking. " +"\n" +; +const char quick_help_text[] = "Divide the grid into rotationally symmetric regions each centred on a dot."; diff --git a/apps/plugins/puzzles/help/guess.c b/apps/plugins/puzzles/help/guess.c new file mode 100644 index 0000000000..2d1be2d977 --- /dev/null +++ b/apps/plugins/puzzles/help/guess.c @@ -0,0 +1,92 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 15: Guess " +"\n" +"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. " +"\n" +"Each guess gets marked with the number of correctly-coloured pegs " +"in the correct places (in black), and also the number of correctly-\n" +"coloured pegs in the wrong places (in white). " +"\n" +"This game is also known (and marketed, by Hasbro, mainly) as a board " +"game `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. " +"\n" +"Guess was contributed to this collection by James Harvey. " +"\n" +"\n#15.1 Guess controls " +"\n" +"This game can be played with either the keyboard or the mouse. " +"\n" +"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. " +"\n" +"Right-clicking in the current guess adds a `hold' marker; pegs that " +"have hold markers will be automatically added to the next guess " +"after marking. " +"\n" +"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. `D' or Backspace removes a " +"peg, and Space adds a hold marker. " +"\n" +"Pressing `h' or `?' will fill the current guess with a suggested " +"guess. Using this is not recommended for 10 or more pegs as it is " +"slow. " +"\n" +"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 `current guess' marker. " +"\n" +"If you correctly position all the pegs the solution will be " +"displayed below; if you run out of guesses (or select `Solve...') " +"the solution will also be revealed. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#15.2 Guess parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. The default game matches the parameters for the board " +"game `Mastermind'. " +"\n" +"_Colours_ " +"\n" +"Number of colours the solution is chosen from; from 2 to 10 " +"(more is harder). " +"\n" +"_Pegs per guess_ " +"\n" +"Number of pegs per guess (more is harder). " +"\n" +"_Guesses_ " +"\n" +"Number of guesses you have to find the solution in (fewer is " +"harder). " +"\n" +"_Allow blanks_ " +"\n" +"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. " +"\n" +"Note that this doesn't allow blank pegs in the solution; if you " +"really wanted that, use one extra colour. " +"\n" +"_Allow duplicates_ " +"\n" +"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. " +"\n" +; +const char quick_help_text[] = "Guess the hidden combination of colours."; diff --git a/apps/plugins/puzzles/help/inertia.c b/apps/plugins/puzzles/help/inertia.c new file mode 100644 index 0000000000..46c4b43cba --- /dev/null +++ b/apps/plugins/puzzles/help/inertia.c @@ -0,0 +1,61 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 24: Inertia " +"\n" +"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. " +"\n" +"You can move the ball in any orthogonal _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 `stops'; when " +"the ball moves on to a stop, it will stop moving no matter what " +"direction it was going in. Gems do _not_ stop the ball; it picks " +"them up and keeps on going. " +"\n" +"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. " +"\n" +"This game was originally implemented for Windows by Ben Olmstead " +"[11], who was kind enough to release his source code on request so " +"that it could be re-implemented for this collection. " +"\n" +"[11] http://xn13.com/ " +"\n" +"\n#24.1 Inertia controls " +"\n" +"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. " +"\n" +"If you use the `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, arrows will be shown only if the puzzle is still " +"solvable. " +"\n" +"All the actions described in section 2.1 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. " +"\n" +"\n#24.2 Inertia parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +; +const char quick_help_text[] = "Collect all the gems without running into any of the mines."; diff --git a/apps/plugins/puzzles/help/keen.c b/apps/plugins/puzzles/help/keen.c new file mode 100644 index 0000000000..5532b2fb12 --- /dev/null +++ b/apps/plugins/puzzles/help/keen.c @@ -0,0 +1,108 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 30: Keen " +"\n" +"You have a square grid; each square may contain a digit from 1 to " +"the size of the grid. The grid is divided into blocks of varying " +"shape and size, with arithmetic clues written in them. Your aim is " +"to fully populate the grid with digits such that: " +"\n" +"- Each row contains only one occurrence of each digit " +"\n" +"- Each column contains only one occurrence of each digit " +"\n" +"- The digits in each block can be combined to form the number " +"stated in the clue, using the arithmetic operation given in the " +"clue. That is: " +"\n" +"- An addition clue means that the sum of the digits in the " +"block must be the given number. For example, `15+' means the " +"contents of the block adds up to fifteen. " +"\n" +"- A multiplication clue (e.g. `60*'), similarly, means that " +"the product of the digits in the block must be the given " +"number. " +"\n" +"- A subtraction clue will always be written in a block of " +"size two, and it means that one of the digits in the block " +"is greater than the other by the given amount. For example, " +"`2-' means that one of the digits in the block is 2 more " +"than the other, or equivalently that one digit minus the " +"other one is 2. The two digits could be either way round, " +"though. " +"\n" +"- A division clue (e.g. `3/'), similarly, is always in a block " +"of size two and means that one digit divided by the other is " +"equal to the given amount. " +"\n" +"Note that a block may contain the same digit more than once " +"(provided the identical ones are not in the same row and " +"column). This rule is precisely the opposite of the rule in " +"Solo's `Killer' mode (see chapter 11). " +"\n" +"This puzzle appears in the Times under the name `KenKen'. " +"\n" +"\n#30.1 Keen controls " +"\n" +"Keen shares much of its control system with Solo (and Unequal). " +"\n" +"To play Keen, simply click the mouse in any empty square and then " +"type a digit 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). " +"\n" +"If you _right_-click in a square and then type a number, that " +"number will be entered in the square as a `pencil mark'. You can " +"have pencil marks for multiple numbers in the same square. Squares " +"containing filled-in numbers cannot also contain pencil marks. " +"\n" +"The game pays no attention to pencil marks, so exactly what you " +"use them for is up to you: you can use them as reminders that a " +"particular square needs to be re-examined once you know more about " +"a particular number, or you can use them as lists of the possible " +"numbers in a given square, or anything else you feel like. " +"\n" +"To erase a single pencil mark, right-click in the square and type " +"the same number again. " +"\n" +"All pencil marks in a square are erased when you left-click and type " +"a number, or when you left-click and press space. Right-clicking and " +"pressing space will also erase pencil marks. " +"\n" +"As for Solo, the cursor keys can be used in conjunction with the " +"digit keys to set numbers or pencil marks. Use the cursor keys to " +"move a highlight around the grid, and type a digit to enter it in " +"the highlighted square. Pressing return toggles the highlight into a " +"mode in which you can enter or remove pencil marks. " +"\n" +"Pressing M will fill in a full set of pencil marks in every square " +"that does not have a main digit in it. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#30.2 Keen parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Grid size_ " +"\n" +"Specifies the size of the grid. Lower limit is 3; upper limit is " +"9 (because the user interface would become more difficult with " +"`digits' bigger than 9!). " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. At Unreasonable " +"level, some backtracking will be required, but the solution " +"should still be unique. The remaining levels require " +"increasingly complex reasoning to avoid having to backtrack. " +"\n" +"_Multiplication only_ " +"\n" +"If this is enabled, all boxes will be multiplication boxes. With " +"this rule, the puzzle is known as `Inshi No Heya'. " +"\n" +; +const char quick_help_text[] = "Complete the latin square in accordance with the arithmetic clues."; diff --git a/apps/plugins/puzzles/help/lightup.c b/apps/plugins/puzzles/help/lightup.c new file mode 100644 index 0000000000..a75a88997a --- /dev/null +++ b/apps/plugins/puzzles/help/lightup.c @@ -0,0 +1,82 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 21: Light Up " +"\n" +"You have a grid of squares. Some are filled in black; some of the " +"black squares are numbered. Your aim is to `light up' all the empty " +"squares by placing light bulbs in some of them. " +"\n" +"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. " +"\n" +"To win the game, you must satisfy the following conditions: " +"\n" +"- All non-black squares are lit. " +"\n" +"- No light is lit by another light. " +"\n" +"- All numbered black squares have exactly that number of lights " +"adjacent to them (in the four squares above, below, and to the " +"side). " +"\n" +"Non-numbered black squares may have any number of lights adjacent to " +"them. " +"\n" +"Credit for this puzzle goes to Nikoli [9]. " +"\n" +"Light Up was contributed to this collection by James Harvey. " +"\n" +"[9] http://www.nikoli.co.jp/en/puzzles/akari.html (beware of Flash) " +"\n" +"\n#21.1 Light Up controls " +"\n" +"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. " +"\n" +"You may not place a light in a marked square, nor place a mark in a " +"lit square. " +"\n" +"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. " +"\n" +"Thus, the grid is solved when all non-black squares have yellow " +"highlights and there are no red lights. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#21.2 Light Up parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_%age of black squares_ " +"\n" +"Rough percentage of black squares in the grid. " +"\n" +"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. " +"\n" +"_Symmetry_ " +"\n" +"Allows you to specify the required symmetry of the black squares " +"in the grid. (This does not affect the difficulty of the puzzles " +"noticeably.) " +"\n" +"_Difficulty_ " +"\n" +"`Easy' means that the puzzles should be soluble without " +"backtracking or guessing, `Hard' means that some guesses will " +"probably be necessary. " +"\n" +; +const char quick_help_text[] = "Place bulbs to light up all the squares."; diff --git a/apps/plugins/puzzles/help/loopy.c b/apps/plugins/puzzles/help/loopy.c new file mode 100644 index 0000000000..3933234315 --- /dev/null +++ b/apps/plugins/puzzles/help/loopy.c @@ -0,0 +1,69 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 23: Loopy " +"\n" +"You are given a grid of dots, marked with yellow lines to indicate " +"which dots you are allowed to connect directly together. Your aim is " +"to use some subset of those yellow lines to draw a single unbroken " +"loop from dot to dot within the grid. " +"\n" +"Some of the spaces between the lines contain numbers. These numbers " +"indicate how many of the lines around that space form part of the " +"loop. The loop you draw must correctly satisfy all of these clues to " +"be considered a correct solution. " +"\n" +"In the default mode, the dots are arranged in a grid of squares; " +"however, you can also play on triangular or hexagonal grids, or even " +"more exotic ones. " +"\n" +"Credit for the basic puzzle idea goes to Nikoli [10]. " +"\n" +"Loopy was originally contributed to this collection by Mike Pinna, " +"and subsequently enhanced to handle various types of non-square grid " +"by Lambros Lambrou. " +"\n" +"[10] http://www.nikoli.co.jp/en/puzzles/slitherlink.html (beware of " +"Flash) " +"\n" +"\n#23.1 Loopy controls " +"\n" +"Click the left mouse button on a yellow line to turn it black, " +"indicating that you think it is part of the loop. Click again to " +"turn the line yellow again (meaning you aren't sure yet). " +"\n" +"If you are sure that a particular line segment is _not_ part of the " +"loop, you can click the right mouse button to remove it completely. " +"Again, clicking a second time will turn the line back to yellow. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#23.2 Loopy parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid, measured in number of regions across and down. For " +"square grids, it's clear how this is counted; for other types of " +"grid you may have to think a bit to see how the dimensions are " +"measured. " +"\n" +"_Grid type_ " +"\n" +"Allows you to choose between a selection of types of tiling. " +"Some have all the faces the same but may have multiple different " +"types of vertex (e.g. the _Cairo_ or _Kites_ mode); others " +"have all the vertices the same but may have different types of " +"face (e.g. the _Great Hexagonal_). The square, triangular and " +"honeycomb grids are fully regular, and have all their vertices " +"_and_ faces the same; this makes them the least confusing to " +"play. " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. " +"\n" +; +const char quick_help_text[] = "Draw a single closed loop, given clues about number of adjacent edges."; diff --git a/apps/plugins/puzzles/help/magnets.c b/apps/plugins/puzzles/help/magnets.c new file mode 100644 index 0000000000..1dae190a6f --- /dev/null +++ b/apps/plugins/puzzles/help/magnets.c @@ -0,0 +1,76 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 33: Magnets " +"\n" +"A rectangular grid has been filled with a mixture of magnets (that " +"is, dominoes with one positive end and one negative end) and blank " +"dominoes (that is, dominoes with two neutral poles). These dominoes " +"are initially only seen in silhouette. Around the grid are placed a " +"number of clues indicating the number of positive and negative poles " +"contained in certain columns and rows. " +"\n" +"Your aim is to correctly place the magnets and blank dominoes such " +"that all the clues are satisfied, with the additional constraint " +"that no two similar magnetic poles may be orthogonally adjacent " +"(since they repel). Neutral poles do not repel, and can be adjacent " +"to any other pole. " +"\n" +"Credit for this puzzle goes to Janko [16]. " +"\n" +"Magnets was contributed to this collection by James Harvey. " +"\n" +"[16] http://www.janko.at/Raetsel/Magnete/index.htm " +"\n" +"\n#33.1 Magnets controls " +"\n" +"Left-clicking on an empty square places a magnet at that position " +"with the positive pole on the square and the negative pole on the " +"other half of the magnet; left-clicking again reverses the polarity, " +"and a third click removes the magnet. " +"\n" +"Right-clicking on an empty square places a blank domino there. " +"Right-clicking again places two question marks on the domino, " +"signifying `this cannot be blank' (which can be useful to note " +"deductions while solving), and right-clicking again empties the " +"domino. " +"\n" +"Left-clicking a clue will mark it as done (grey it out), or unmark " +"it if it is already marked. " +"\n" +"You can also use the cursor keys to move a cursor around the grid. " +"Pressing the return key will lay a domino with a positive pole at " +"that position; pressing again reverses the polarity and then removes " +"the domino, as with left-clicking. Using the space bar allows " +"placement of blank dominoes and cannot-be-blank hints, as for right-\n" +"clicking. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#33.2 Magnets parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. There will be half _Width_ x _Height_ " +"dominoes in the grid: if this number is odd then one square will " +"be blank. " +"\n" +"(Grids with at least one odd dimension tend to be easier to " +"solve.) " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. At Tricky " +"level, you are required to make more deductions about empty " +"dominoes and row/column counts. " +"\n" +"_Strip clues_ " +"\n" +"If true, some of the clues around the grid are removed at " +"generation time, making the puzzle more difficult. " +"\n" +; +const char quick_help_text[] = "Place magnets to satisfy the clues and avoid like poles touching."; diff --git a/apps/plugins/puzzles/help/map.c b/apps/plugins/puzzles/help/map.c new file mode 100644 index 0000000000..85a83c2320 --- /dev/null +++ b/apps/plugins/puzzles/help/map.c @@ -0,0 +1,90 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 22: Map " +"\n" +"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. " +"\n" +"Only regions which share a length of border are required to be " +"different colours. Two regions which meet at only one _point_ (i.e. " +"are diagonally separated) may be the same colour. " +"\n" +"I believe this puzzle is original; I've never seen an implementation " +"of it anywhere else. The concept of a 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. " +"\n" +"\n#22.1 Map controls " +"\n" +"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. " +"\n" +"(The program will always ensure the starting puzzle has at least one " +"region of each colour, so that this is always possible!) " +"\n" +"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. " +"\n" +"Dragging a colour using the _right_ mouse button will stipple the " +"region in that colour, which you can use as a note to yourself that " +"you think the region _might_ be that colour. A region can contain " +"stipples in multiple colours at once. (This is often useful at the " +"harder difficulty levels.) " +"\n" +"You can also use the cursor keys to move around the map: the colour " +"of the cursor indicates the position of the colour you would drag " +"(which is not obvious if you're on a region's boundary, since it " +"depends on the direction from which you approached the boundary). " +"Pressing the return key starts a drag of that colour, as above, " +"which you control with the cursor keys; pressing the return key " +"again finishes the drag. The space bar can be used similarly to " +"create a stippled region. Double-pressing the return key (without " +"moving the cursor) will clear the region, as a drag from an empty " +"region does: this is useful with the cursor mode if you have filled " +"the entire map in but need to correct the layout. " +"\n" +"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 - having an unambiguous " +"name for each region is much easier than trying to refer to them all " +"by names such as `the one down and right of the brown one on the top " +"border'. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#22.2 Map parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Regions_ " +"\n" +"Number of regions in the generated map. " +"\n" +"_Difficulty_ " +"\n" +"In `Easy' mode, there should always be at least one region whose " +"colour can be determined trivially. In `Normal' and `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. " +"\n" +"In `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. " +"\n" +; +const char quick_help_text[] = "Colour the map so that adjacent regions are never the same colour."; diff --git a/apps/plugins/puzzles/help/mines.c b/apps/plugins/puzzles/help/mines.c new file mode 100644 index 0000000000..d5723d67af --- /dev/null +++ b/apps/plugins/puzzles/help/mines.c @@ -0,0 +1,98 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 12: Mines " +"\n" +"You have a grid of covered squares, some of which contain mines, but " +"you don't know which. Your job is to uncover every square which does " +"_not_ contain a mine. If you uncover a square containing a mine, you " +"lose. If you uncover a square which does not contain a mine, you " +"are told how many mines are contained within the eight surrounding " +"squares. " +"\n" +"This game needs no introduction; popularised by Windows, it is " +"perhaps the single best known desktop puzzle game in existence. " +"\n" +"This version of it has an unusual property. By default, it will " +"generate its mine positions in such a way as to ensure that you " +"never need to _guess_ where a mine is: you will always be able " +"to deduce it somehow. So you will never, as can happen in other " +"versions, get to the last four squares and discover that there are " +"two mines left but you have no way of knowing for sure where they " +"are. " +"\n" +"\n#12.1 Mines controls " +"\n" +"This game is played with the mouse. " +"\n" +"If you left-click in a covered square, it will be uncovered. " +"\n" +"If you right-click in a covered square, it will place a flag which " +"indicates that the square is believed to be a mine. Left-clicking in " +"a marked square will not uncover it, for safety. You can right-click " +"again to remove a mark placed in error. " +"\n" +"If you left-click in an _uncovered_ square, it will `clear around' " +"the square. This means: if the square has exactly as many flags " +"surrounding it as it should have mines, then all the covered squares " +"next to it which are _not_ flagged will be uncovered. So once you " +"think you know the location of all the mines around a square, you " +"can use this function as a shortcut to avoid having to click on each " +"of the remaining squares one by one. " +"\n" +"If you uncover a square which has _no_ mines in the surrounding " +"eight squares, then it is obviously safe to uncover those squares in " +"turn, and so on if any of them also has no surrounding mines. This " +"will be done for you automatically; so sometimes when you uncover a " +"square, a whole new area will open up to be explored. " +"\n" +"You can also use the cursor keys to move around the minefield. " +"Pressing the return key in a covered square uncovers it, and in " +"an uncovered square will clear around it (so it acts as the left " +"button), pressing the space bar in a covered square will place a " +"flag (similarly, it acts as the right button). " +"\n" +"All the actions described in section 2.1 are also available. " +"\n" +"Even Undo is available, although you might consider it cheating to " +"use it. If you step on a mine, the program will only reveal the mine " +"in question (unlike most other implementations, which reveal all of " +"them). You can then Undo your fatal move and continue playing if you " +"like. The program will track the number of times you died (and Undo " +"will not reduce that counter), so when you get to the end of the " +"game you know whether or not you did it without making any errors. " +"\n" +"(If you really want to know the full layout of the grid, which other " +"implementations will show you after you die, you can always use the " +"Solve menu option.) " +"\n" +"\n#12.2 Mines parameters " +"\n" +"The options available from the `Custom...' option on the `Type' menu " +"are: " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Mines_ " +"\n" +"Number of mines in the grid. You can enter this as an absolute " +"mine count, or alternatively you can put a % sign on the end " +"in which case the game will arrange for that proportion of the " +"squares in the grid to be mines. " +"\n" +"Beware of setting the mine count too high. At very high " +"densities, the program may spend forever searching for a " +"solvable grid. " +"\n" +"_Ensure solubility_ " +"\n" +"When this option is enabled (as it is by default), Mines will " +"ensure that the entire grid can be fully deduced starting " +"from the initial open space. If you prefer the riskier grids " +"generated by other implementations, you can switch off this " +"option. " +"\n" +; +const char quick_help_text[] = "Find all the mines without treading on any of them."; diff --git a/apps/plugins/puzzles/help/net.c b/apps/plugins/puzzles/help/net.c new file mode 100644 index 0000000000..16ee92d27e --- /dev/null +++ b/apps/plugins/puzzles/help/net.c @@ -0,0 +1,108 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 3: Net " +"\n" +"(_Note:_ the Windows version of this game is called NETGAME.EXE to " +"avoid clashing with Windows's own NET.EXE.) " +"\n" +"I originally saw this in the form of a Flash game called " +"FreeNet [1], written by Pavils Jurjans; there are several other " +"implementations under the name NetWalk. The computer prepares a " +"network by connecting up the centres of squares in a grid, and then " +"shuffles the network by rotating every tile randomly. Your job is " +"to rotate it all back into place. The successful solution will be " +"an entirely connected network, with no closed loops. As a visual " +"aid, all tiles which are connected to the one in the middle are " +"highlighted. " +"\n" +"[1] http://www.jurjans.lv/stuff/net/FreeNet.htm " +"\n" +"\n#3.1 Net controls " +"\n" +"This game can be played with either the keyboard or the mouse. The " +"controls are: " +"\n" +"_Select tile_: mouse pointer, arrow keys " +"\n" +"_Rotate tile anticlockwise_: left mouse button, `A' key " +"\n" +"_Rotate tile clockwise_: right mouse button, `D' key " +"\n" +"_Rotate tile by 180 degrees_: `F' key " +"\n" +"_Lock (or unlock) tile_: middle mouse button, shift-click, `S' key " +"\n" +"You can lock a tile once you're sure of its orientation. You " +"can also unlock it again, but while it's locked you can't " +"accidentally turn it. " +"\n" +"The following controls are not necessary to complete the game, but " +"may be useful: " +"\n" +"_Shift grid_: Shift + arrow keys " +"\n" +"On grids that wrap, you can move the origin of the grid, so " +"that tiles that were on opposite sides of the grid can be seen " +"together. " +"\n" +"_Move centre_: Ctrl + arrow keys " +"\n" +"You can change which tile is used as the source of highlighting. " +"(It doesn't ultimately matter which tile this is, as every tile " +"will be connected to every other tile in a correct solution, " +"but it may be helpful in the intermediate stages of solving the " +"puzzle.) " +"\n" +"_Jumble tiles_: `J' key " +"\n" +"This key turns all tiles that are not locked to random " +"orientations. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#3.2 Net parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in tiles. " +"\n" +"_Walls wrap around_ " +"\n" +"If checked, flow can pass from the left edge to the right edge, " +"and from top to bottom, and vice versa. " +"\n" +"_Barrier probability_ " +"\n" +"A number between 0.0 and 1.0 controlling whether an immovable " +"barrier is placed between two tiles to prevent flow between " +"them (a higher number gives more barriers). Since barriers " +"are immovable, they act as constraints on the solution (i.e., " +"hints). " +"\n" +"The grid generation in Net has been carefully arranged so that " +"the barriers are independent of the rest of the grid. This " +"means that if you note down the random seed used to generate " +"the current puzzle (see section 2.2), change the _Barrier " +"probability_ parameter, and then re-enter the same random seed, " +"you should see exactly the same starting grid, with the only " +"change being the number of barriers. So if you're stuck on a " +"particular grid and need a hint, you could start up another " +"instance of Net, set up the same parameters but a higher barrier " +"probability, and enter the game seed from the original Net " +"window. " +"\n" +"_Ensure unique solution_ " +"\n" +"Normally, Net will make sure that the puzzles it presents have " +"only one solution. Puzzles with ambiguous sections can be more " +"difficult and more subtle, so if you like you can turn off this " +"feature and risk having ambiguous puzzles. (Also, finding _all_ " +"the possible solutions can be an additional challenge for an " +"advanced player.) " +"\n" +; +const char quick_help_text[] = "Rotate each tile to reassemble the network."; diff --git a/apps/plugins/puzzles/help/netslide.c b/apps/plugins/puzzles/help/netslide.c new file mode 100644 index 0000000000..b742e4eb53 --- /dev/null +++ b/apps/plugins/puzzles/help/netslide.c @@ -0,0 +1,20 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 9: Netslide " +"\n" +"This game combines the grid generation of Net (see chapter 3) with " +"the movement of Sixteen (see chapter 6): 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. " +"\n" +"As in Sixteen, control is with the mouse or cursor keys. See section " +"6.1. " +"\n" +"The available game parameters have similar meanings to those in Net " +"(see section 3.2) and Sixteen (see section 6.2). " +"\n" +"Netslide was contributed to this collection by Richard Boulton. " +"\n" +; +const char quick_help_text[] = "Slide a row at a time to reassemble the network."; diff --git a/apps/plugins/puzzles/help/palisade.c b/apps/plugins/puzzles/help/palisade.c new file mode 100644 index 0000000000..824eb21799 --- /dev/null +++ b/apps/plugins/puzzles/help/palisade.c @@ -0,0 +1,43 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 41: Palisade " +"\n" +"You're given a grid of squares, some of which contain numbers. Your " +"goal is to subdivide the grid into contiguous regions, all of the " +"same (given) size, such that each square containing a number is " +"adjacent to exactly that many edges (including those between the " +"inside and the outside of the grid). " +"\n" +"Credit for this puzzle goes to Nikoli, who call it `Five Cells'. " +"[22]. " +"\n" +"Palisade was contributed to this collection by Jonas Koelker. " +"\n" +"[22] http://nikoli.co.jp/en/puzzles/five_cells.html " +"\n" +"\n#41.1 Palisade controls " +"\n" +"Left-click to place an edge. Right-click to indicate `no edge'. " +"Alternatively, the arrow keys will move a keyboard cursor. Holding " +"Control while pressing an arrow key will place an edge. Press Shift-\n" +"arrowkey to switch off an edge. Repeat an action to perform its " +"inverse. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#41.2 Palisade parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Region size_ " +"\n" +"The size of the regions into which the grid must be subdivided. " +"\n" +; +const char quick_help_text[] = "Divide the grid into equal-sized areas in accordance with the clues."; diff --git a/apps/plugins/puzzles/help/pattern.c b/apps/plugins/puzzles/help/pattern.c new file mode 100644 index 0000000000..d3764c6d43 --- /dev/null +++ b/apps/plugins/puzzles/help/pattern.c @@ -0,0 +1,56 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 10: Pattern " +"\n" +"You have a grid of squares, which must all be filled in either black " +"or white. Beside each row of the grid are listed the lengths of the " +"runs of black squares on that row; above each column are listed the " +"lengths of the runs of black squares in that column. Your aim is to " +"fill in the entire grid black or white. " +"\n" +"I first saw this puzzle form around 1995, under the name " +"`nonograms'. I've seen it in various places since then, under " +"different names. " +"\n" +"Normally, puzzles of this type turn out to be a meaningful picture " +"of something once you've solved them. However, since this version " +"generates the puzzles automatically, they will just look like random " +"groupings of squares. (One user has suggested that this is actually " +"a _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. " +"\n" +"\n#10.1 Pattern controls " +"\n" +"This game is played with the mouse. " +"\n" +"Left-click in a square to colour it black. Right-click to colour it " +"white. If you make a mistake, you can middle-click, or hold down " +"Shift while clicking with any button, to colour the square in the " +"default grey (meaning `undecided') again. " +"\n" +"You can click and drag with the left or right mouse button to colour " +"a vertical or horizontal line of squares black or white at a time " +"(respectively). If you click and drag with the middle button, or " +"with Shift held down, you can colour a whole rectangle of squares " +"grey. " +"\n" +"You can also move around the grid with the cursor keys. Pressing the " +"return key will cycle the current cell through empty, then black, " +"then white, then empty, and the space bar does the same cycle in " +"reverse. " +"\n" +"Moving the cursor while holding Control will colour the moved-over " +"squares black. Holding Shift will colour the moved-over squares " +"white, and holding both will colour them grey. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#10.2 Pattern parameters " +"\n" +"The only options available from the `Custom...' option on the `Type' " +"menu are _Width_ and _Height_, which are self-explanatory. " +"\n" +; +const char quick_help_text[] = "Fill in the pattern in the grid, given only the lengths of runs of black squares."; diff --git a/apps/plugins/puzzles/help/pearl.c b/apps/plugins/puzzles/help/pearl.c new file mode 100644 index 0000000000..961c4d7db4 --- /dev/null +++ b/apps/plugins/puzzles/help/pearl.c @@ -0,0 +1,70 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 36: Pearl " +"\n" +"You have a grid of squares. Your job is to draw lines between the " +"centres of horizontally or vertically adjacent squares, so that the " +"lines form a single closed loop. In the resulting grid, some of the " +"squares that the loop passes through will contain corners, and some " +"will be straight horizontal or vertical lines. (And some squares can " +"be completely empty - the loop doesn't have to pass through every " +"square.) " +"\n" +"Some of the squares contain black and white circles, which are clues " +"that the loop must satisfy. " +"\n" +"A black circle in a square indicates that that square is a corner, " +"but neither of the squares adjacent to it in the loop is also a " +"corner. " +"\n" +"A white circle indicates that the square is a straight edge, but _at " +"least one_ of the squares adjacent to it in the loop is a corner. " +"\n" +"(In both cases, the clue only constrains the two squares adjacent " +"_in the loop_, that is, the squares that the loop passes into after " +"leaving the clue square. The squares that are only adjacent _in the " +"grid_ are not constrained.) " +"\n" +"Credit for this puzzle goes to Nikoli, who call it `Masyu'. [19] " +"\n" +"Thanks to James Harvey for assistance with the implementation. " +"\n" +"[19] http://www.nikoli.co.jp/en/puzzles/masyu.html (beware of Flash) " +"\n" +"\n#36.1 Pearl controls " +"\n" +"Click with the left button on a grid edge to draw a segment of the " +"loop through that edge, or to remove a segment once it is drawn. " +"\n" +"Drag with the left button through a series of squares to draw more " +"than one segment of the loop in one go. Alternatively, drag over an " +"existing part of the loop to undraw it, or to undraw part of it and " +"then go in a different direction. " +"\n" +"Click with the right button on a grid edge to mark it with a cross, " +"indicating that you are sure the loop does not go through that edge. " +"(For instance, if you have decided which of the squares adjacent " +"to a white clue has to be a corner, but don't yet know which way " +"the corner turns, you might mark the one way it _can't_ go with a " +"cross.) " +"\n" +"Alternatively, use the cursor keys to move the cursor. Use the Enter " +"key to begin and end keyboard `drag' operations. Use the Space, " +"Escape or Backspace keys to cancel the drag. Or, hold Control while " +"dragging with the cursor keys to toggle segments as you move between " +"squares. " +"\n" +"Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left " +"or right click, respectively, on the edge in the direction of the " +"key. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#36.2 Pearl parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +; +const char quick_help_text[] = "Draw a single closed loop, given clues about corner and straight squares."; diff --git a/apps/plugins/puzzles/help/pegs.c b/apps/plugins/puzzles/help/pegs.c new file mode 100644 index 0000000000..d5b1df6040 --- /dev/null +++ b/apps/plugins/puzzles/help/pegs.c @@ -0,0 +1,52 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 16: Pegs " +"\n" +"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. " +"\n" +"This game, best known as `Peg Solitaire', is possibly one of the " +"oldest puzzle games still commonly known. " +"\n" +"\n#16.1 Pegs controls " +"\n" +"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. " +"\n" +"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. " +"\n" +"You can also use the cursor keys to move a position indicator around " +"the board. Pressing the return key while over a peg, followed by a " +"cursor key, will jump the peg in that direction (if that is a legal " +"move). " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#16.2 Pegs parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in holes. " +"\n" +"_Board type_ " +"\n" +"Controls whether you are given a board of a standard shape or " +"a randomly generated shape. The two standard shapes currently " +"supported are `Cross' and `Octagon' (also commonly known as the " +"English and European traditional board layouts respectively). " +"Selecting `Random' will give you a different board shape every " +"time (but always one that is known to have a solution). " +"\n" +; +const char quick_help_text[] = "Jump pegs over each other to remove all but one."; diff --git a/apps/plugins/puzzles/help/range.c b/apps/plugins/puzzles/help/range.c new file mode 100644 index 0000000000..fd234d7e24 --- /dev/null +++ b/apps/plugins/puzzles/help/range.c @@ -0,0 +1,62 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 35: Range " +"\n" +"You have a grid of squares; some squares contain numbers. Your job " +"is to colour some of the squares black, such that several criteria " +"are satisfied: " +"\n" +"- no square with a number is coloured black. " +"\n" +"- no two black squares are adjacent (horizontally or vertically). " +"\n" +"- for any two white squares, there is a path between them using " +"only white squares. " +"\n" +"- for each square with a number, that number denotes the total " +"number of white squares reachable from that square going in a " +"straight line in any horizontal or vertical direction until " +"hitting a wall or a black square; the square with the number is " +"included in the total (once). " +"\n" +"For instance, a square containing the number one must have four " +"black squares as its neighbours by the last criterion; but then it's " +"impossible for it to be connected to any outside white square, which " +"violates the second to last criterion. So no square will contain the " +"number one. " +"\n" +"Credit for this puzzle goes to Nikoli, who have variously called it " +"`Kurodoko', `Kuromasu' or `Where is Black Cells'. [18]. " +"\n" +"Range was contributed to this collection by Jonas Koelker. " +"\n" +"[18] http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html " +"\n" +"\n#35.1 Range controls " +"\n" +"Click with the left button to paint a square black, or with the " +"right button to mark a square with a dot to indicate that you are " +"sure it should _not_ be painted black. Repeated clicking with either " +"button will cycle the square through the three possible states " +"(filled, dotted or empty) in opposite directions. " +"\n" +"You can also use the cursor keys to move around the grid squares. " +"Pressing Return does the same as clicking with the left button, " +"while pressing Space does the same as a right button click. Moving " +"with the cursor keys while holding Shift will place dots in all " +"squares that are moved through. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#35.2 Range parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +; +const char quick_help_text[] = "Place black squares to limit the visible distance from each numbered cell."; diff --git a/apps/plugins/puzzles/help/rect.c b/apps/plugins/puzzles/help/rect.c new file mode 100644 index 0000000000..fa1da622e2 --- /dev/null +++ b/apps/plugins/puzzles/help/rect.c @@ -0,0 +1,93 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 8: Rectangles " +"\n" +"You have a grid of squares, with numbers written in some (but " +"not all) of the squares. Your task is to subdivide the grid into " +"rectangles of various sizes, such that (a) every rectangle contains " +"exactly one numbered square, and (b) the area of each rectangle is " +"equal to the number written in its numbered square. " +"\n" +"Credit for this game goes to the Japanese puzzle magazine Nikoli [3] " +"; I've also seen a Palm implementation at Puzzle Palace [4]. 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, but on " +"the plus side you get an inexhaustible supply of puzzles tailored to " +"your own specification. " +"\n" +"[3] http://www.nikoli.co.jp/en/puzzles/shikaku.html (beware of " +"Flash) " +"\n" +"[4] " +"https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en " +"\n" +"\n#8.1 Rectangles controls " +"\n" +"This game is played with the mouse or cursor keys. " +"\n" +"Left-click any edge to toggle it on or off, or left-click and " +"drag to draw an entire rectangle (or line) on the grid in one go " +"(removing any existing edges within that rectangle). Right-clicking " +"and dragging will allow you to erase the contents of a rectangle " +"without affecting its edges. " +"\n" +"Alternatively, use the cursor keys to move the position indicator " +"around the board. Pressing the return key then allows you to use the " +"cursor keys to drag a rectangle out from that position, and pressing " +"the return key again completes the rectangle. Using the space bar " +"instead of the return key allows you to erase the contents of a " +"rectangle without affecting its edges, as above. Pressing escape " +"cancels a drag. " +"\n" +"When a rectangle of the correct size is completed, it will be " +"shaded. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#8.2 Rectangles parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid, in squares. " +"\n" +"_Expansion factor_ " +"\n" +"This is a mechanism for changing the type of grids generated by " +"the program. Some people prefer a grid containing a few large " +"rectangles to one containing many small ones. So you can ask " +"Rectangles to essentially generate a _smaller_ grid than the " +"size you specified, and then to expand it by adding rows and " +"columns. " +"\n" +"The default expansion factor of zero means that Rectangles will " +"simply generate a grid of the size you ask for, and do nothing " +"further. If you set an expansion factor of (say) 0.5, it means " +"that each dimension of the grid will be expanded to half again " +"as big after generation. In other words, the initial grid will " +"be 2/3 the size in each dimension, and will be expanded to its " +"full size without adding any more rectangles. " +"\n" +"Setting an expansion factor of around 0.5 tends to make the " +"game more difficult, and also (in my experience) rewards a " +"less deductive and more intuitive playing style. If you set it " +"_too_ high, though, the game simply cannot generate more than a " +"few rectangles to cover the entire grid, and the game becomes " +"trivial. " +"\n" +"_Ensure unique solution_ " +"\n" +"Normally, Rectangles will make sure that the puzzles it presents " +"have only one solution. Puzzles with ambiguous sections can be " +"more difficult and more subtle, so if you like you can turn off " +"this feature and risk having ambiguous puzzles. Also, finding " +"_all_ the possible solutions can be an additional challenge for " +"an advanced player. Turning off this option can also speed up " +"puzzle generation. " +"\n" +; +const char quick_help_text[] = "Divide the grid into rectangles with areas equal to the numbers."; diff --git a/apps/plugins/puzzles/help/samegame.c b/apps/plugins/puzzles/help/samegame.c new file mode 100644 index 0000000000..288493f7fd --- /dev/null +++ b/apps/plugins/puzzles/help/samegame.c @@ -0,0 +1,76 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 13: Same Game " +"\n" +"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). " +"\n" +"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. " +"\n" +"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. " +"\n" +"Same Game was contributed to this collection by James Harvey. " +"\n" +"\n#13.1 Same Game controls " +"\n" +"This game can be played with either the keyboard or the mouse. " +"\n" +"If you left-click an unselected region, it becomes selected " +"(possibly clearing the current selection). " +"\n" +"If you left-click the selected region, it will be removed (and the " +"rest of the grid shuffled immediately). " +"\n" +"If you right-click the selected region, it will be unselected. " +"\n" +"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. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#13.2 Same Game parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_No. of colours_ " +"\n" +"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. " +"\n" +"_Scoring system_ " +"\n" +"Controls the precise mechanism used for scoring. With the " +"default system, `(n-2)^2', only regions of three squares or more " +"will score any points at all. With the alternative `(n-1)^2' " +"system, regions of two squares score a point each, and larger " +"regions score relatively more points. " +"\n" +"_Ensure solubility_ " +"\n" +"If this option is ticked (the default state), generated grids " +"will be guaranteed to have at least one solution. " +"\n" +"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 _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. " +"\n" +; +const char quick_help_text[] = "Clear the grid by removing touching groups of the same colour squares."; diff --git a/apps/plugins/puzzles/help/signpost.c b/apps/plugins/puzzles/help/signpost.c new file mode 100644 index 0000000000..30885cf188 --- /dev/null +++ b/apps/plugins/puzzles/help/signpost.c @@ -0,0 +1,80 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 34: Signpost " +"\n" +"You have a grid of squares; each square (except the last one) " +"contains an arrow, and some squares also contain numbers. Your job " +"is to connect the squares to form a continuous list of numbers " +"starting at 1 and linked in the direction of the arrows - so the " +"arrow inside the square with the number 1 will point to the square " +"containing the number 2, which will point to the square containing " +"the number 3, etc. Each square can be any distance away from the " +"previous one, as long as it is somewhere in the direction of the " +"arrow. " +"\n" +"By convention the first and last numbers are shown; one or more " +"interim numbers may also appear at the beginning. " +"\n" +"Credit for this puzzle goes to Janko [17], who call it `Pfeilpfad' " +"(`arrow path'). " +"\n" +"Signpost was contributed to this collection by James Harvey. " +"\n" +"[17] http://janko.at/Raetsel/Pfeilpfad/index.htm " +"\n" +"\n#34.1 Signpost controls " +"\n" +"To play Signpost, you connect squares together by dragging from " +"one square to another, indicating that they are adjacent in the " +"sequence. Drag with the left button from a square to its successor, " +"or with the right button from a square to its predecessor. " +"\n" +"If you connect together two squares in this way and one of them has " +"a number in it, the appropriate number will appear in the other " +"square. If you connect two non-numbered squares, they will be " +"assigned temporary algebraic labels: on the first occasion, they " +"will be labelled `a' and `a+1', and then `b' and `b+1', and so on. " +"Connecting more squares on to the ends of such a chain will cause " +"them all to be labelled with the same letter. " +"\n" +"When you left-click or right-click in a square, the legal squares to " +"connect it to will be shown. " +"\n" +"The arrow in each square starts off black, and goes grey once you " +"connect the square to its successor. Also, each square which needs " +"a predecessor has a small dot in the bottom left corner, which " +"vanishes once you link a square to it. So your aim is always to " +"connect a square with a black arrow to a square with a dot. " +"\n" +"To remove any links for a particular square (both incoming and " +"outgoing), left-drag it off the grid. To remove a whole chain, " +"right-drag any square in the chain off the grid. " +"\n" +"You can also use the cursor keys to move around the grid squares " +"and lines. Pressing the return key when over a square starts a link " +"operation, and pressing the return key again over a square will " +"finish the link, if allowable. Pressing the space bar over a square " +"will show the other squares pointing to it, and allow you to form a " +"backward link, and pressing the space bar again cancels this. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#34.2 Signpost parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Force start/end to corners_ " +"\n" +"If true, the start and end squares are always placed in opposite " +"corners (the start at the top left, and the end at the bottom " +"right). If false the start and end squares are placed randomly " +"(although always both shown). " +"\n" +; +const char quick_help_text[] = "Connect the squares into a path following the arrows."; diff --git a/apps/plugins/puzzles/help/singles.c b/apps/plugins/puzzles/help/singles.c new file mode 100644 index 0000000000..2277071cb9 --- /dev/null +++ b/apps/plugins/puzzles/help/singles.c @@ -0,0 +1,51 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 32: Singles " +"\n" +"You have a grid of white squares, all of which contain numbers. Your " +"task is to colour some of the squares black (removing the number) so " +"as to satisfy all of the following conditions: " +"\n" +"- No number occurs more than once in any row or column. " +"\n" +"- No black square is horizontally or vertically adjacent to any " +"other black square. " +"\n" +"- The remaining white squares must all form one contiguous region " +"(connected by edges, not just touching at corners). " +"\n" +"Credit for this puzzle goes to Nikoli [15] who call it Hitori. " +"\n" +"Singles was contributed to this collection by James Harvey. " +"\n" +"[15] http://www.nikoli.com/en/puzzles/hitori.html (beware of Flash) " +"\n" +"\n#32.1 Singles controls " +"\n" +"Left-clicking on an empty square will colour it black; left-clicking " +"again will restore the number. Right-clicking will add a circle " +"(useful for indicating that a cell is definitely not black). " +"\n" +"You can also use the cursor keys to move around the grid. Pressing " +"the return or space keys will turn a square black or add a circle " +"respectively, and pressing the key again will restore the number or " +"remove the circle. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#32.2 Singles parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. " +"\n" +; +const char quick_help_text[] = "Black out the right set of duplicate numbers."; diff --git a/apps/plugins/puzzles/help/sixteen.c b/apps/plugins/puzzles/help/sixteen.c new file mode 100644 index 0000000000..d588c37e3a --- /dev/null +++ b/apps/plugins/puzzles/help/sixteen.c @@ -0,0 +1,62 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 6: Sixteen " +"\n" +"Another sliding tile puzzle, visually similar to Fifteen (see " +"chapter 5) but with a different type of move. This time, there is no " +"hole: all 16 squares on the grid contain numbered squares. Your move " +"is to shift an entire row left or right, or shift an entire column " +"up or down; every time you do that, the tile you shift off the grid " +"re-appears at the other end of the same row, in the space you just " +"vacated. To win, arrange the tiles into numerical order (1,2,3,4 on " +"the top row, 13,14,15,16 on the bottom). When you've done that, try " +"playing on different sizes of grid. " +"\n" +"I _might_ have invented this game myself, though only by accident " +"if so (and I'm sure other people have independently invented it). I " +"thought I was imitating a screensaver I'd seen, but I have a feeling " +"that the screensaver might actually have been a Fifteen-type puzzle " +"rather than this slightly different kind. So this might be the one " +"thing in my puzzle collection which represents creativity on my part " +"rather than just engineering. " +"\n" +"\n#6.1 Sixteen controls " +"\n" +"Left-clicking on an arrow will move the appropriate row or column in " +"the direction indicated. Right-clicking will move it in the opposite " +"direction. " +"\n" +"Alternatively, use the cursor keys to move the position indicator " +"around the edge of the grid, and use the return key to move the " +"row/column in the direction indicated. " +"\n" +"You can also move the tiles directly. Move the cursor onto a tile, " +"hold Control and press an arrow key to move the tile under the " +"cursor and move the cursor along with the tile. Or, hold Shift to " +"move only the tile. Pressing Enter simulates holding down Control " +"(press Enter again to release), while pressing Space simulates " +"holding down shift. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#6.2 Sixteen parameters " +"\n" +"The parameters available from the `Custom...' option on the `Type' " +"menu are: " +"\n" +"- _Width_ and _Height_, which are self-explanatory. " +"\n" +"- 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. " +"\n" +; +const char quick_help_text[] = "Slide a row at a time to arrange the tiles into order."; diff --git a/apps/plugins/puzzles/help/slant.c b/apps/plugins/puzzles/help/slant.c new file mode 100644 index 0000000000..c68cd7cd84 --- /dev/null +++ b/apps/plugins/puzzles/help/slant.c @@ -0,0 +1,66 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 20: Slant " +"\n" +"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: " +"\n" +"- The diagonal lines never form a loop. " +"\n" +"- 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 - 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.) " +"\n" +"Credit for this puzzle goes to Nikoli [8]. " +"\n" +"[8] http://www.nikoli.co.jp/ja/puzzles/gokigen_naname (in Japanese) " +"\n" +"\n#20.1 Slant controls " +"\n" +"Left-clicking in a blank square will place a \\ 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 / in it " +"(leaning to the right, running from top right to bottom left). " +"\n" +"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 \\ to / back to blank, and " +"if you right-click repeatedly the square will change from blank to / " +"to \\ back to blank. (Therefore, you can play the game entirely with " +"one button if you need to.) " +"\n" +"You can also use the cursor keys to move around the grid. Pressing " +"the return or space keys will place a \\ or a /, respectively, and " +"will then cycle them as above. You can also press / or \\ to place a " +"/ or \\, respectively, independent of what is already in the cursor " +"square. Backspace removes any line from the cursor square. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#20.2 Slant parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. At Hard " +"level, you are required to do deductions based on knowledge of " +"_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. " +"\n" +; +const char quick_help_text[] = "Draw a maze of slanting lines that matches the clues."; diff --git a/apps/plugins/puzzles/help/solo.c b/apps/plugins/puzzles/help/solo.c new file mode 100644 index 0000000000..5033f9131d --- /dev/null +++ b/apps/plugins/puzzles/help/solo.c @@ -0,0 +1,137 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 11: Solo " +"\n" +"You have a square grid, which is divided into as many equally sized " +"sub-blocks as the grid has rows. Each square must be filled in with " +"a digit from 1 to the size of the grid, in such a way that " +"\n" +"- every row contains only one occurrence of each digit " +"\n" +"- every column contains only one occurrence of each digit " +"\n" +"- every block contains only one occurrence of each digit. " +"\n" +"- (optionally, by default off) each of the square's two main " +"diagonals contains only one occurrence of each digit. " +"\n" +"You are given some of the numbers as clues; your aim is to place the " +"rest of the numbers correctly. " +"\n" +"Under the default settings, the sub-blocks are square or " +"rectangular. The default puzzle size is 3x3 (a 9x9 actual grid, " +"divided into nine 3x3 blocks). You can also select sizes with " +"rectangular blocks instead of square ones, such as 2x3 (a 6x6 grid " +"divided into six 3x2 blocks). Alternatively, you can select `jigsaw' " +"mode, in which the sub-blocks are arbitrary shapes which differ " +"between individual puzzles. " +"\n" +"Another available mode is `killer'. In this mode, clues are not " +"given in the form of filled-in squares; instead, the grid is divided " +"into `cages' by coloured lines, and for each cage the game tells " +"you what the sum of all the digits in that cage should be. Also, " +"no digit may appear more than once within a cage, even if the cage " +"crosses the boundaries of existing regions. " +"\n" +"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 3x4 then the digits which go in your grid will be 1 to 9, " +"plus `a', `b' and `c'. This cannot be selected for killer puzzles. " +"\n" +"I first saw this puzzle in Nikoli [5], although it's also been " +"popularised by various newspapers under the name `Sudoku' or `Su " +"Doku'. Howard Garns is considered the inventor of the modern form of " +"the puzzle, and it was first published in _Dell Pencil Puzzles and " +"Word Games_. A more elaborate treatment of the history of the puzzle " +"can be found on Wikipedia [6]. " +"\n" +"[5] http://www.nikoli.co.jp/en/puzzles/sudoku.html (beware of Flash) " +"\n" +"[6] http://en.wikipedia.org/wiki/Sudoku " +"\n" +"\n#11.1 Solo controls " +"\n" +"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). " +"\n" +"If you _right_-click in a square and then type a number, that " +"number will be entered in the square as a `pencil mark'. You can " +"have pencil marks for multiple numbers in the same square. Squares " +"containing filled-in numbers cannot also contain pencil marks. " +"\n" +"The game pays no attention to pencil marks, so exactly what you " +"use them for is up to you: you can use them as reminders that a " +"particular square needs to be re-examined once you know more about " +"a particular number, or you can use them as lists of the possible " +"numbers in a given square, or anything else you feel like. " +"\n" +"To erase a single pencil mark, right-click in the square and type " +"the same number again. " +"\n" +"All pencil marks in a square are erased when you left-click and type " +"a number, or when you left-click and press space. Right-clicking and " +"pressing space will also erase pencil marks. " +"\n" +"Alternatively, use the cursor keys to move the mark around the grid. " +"Pressing the return key toggles the mark (from a normal mark to a " +"pencil mark), and typing a number in is entered in the square in the " +"appropriate way; typing in a 0 or using the space bar will clear a " +"filled square. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#11.2 Solo parameters " +"\n" +"Solo allows you to configure two separate dimensions of the puzzle " +"grid on the `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.) " +"\n" +"If you tick the `X' checkbox, Solo will apply the optional extra " +"constraint that the two main diagonals of the grid also contain " +"one of every digit. (This is sometimes known as `Sudoku-X' in " +"newspapers.) In this mode, the squares on the two main diagonals " +"will be shaded slightly so that you know it's enabled. " +"\n" +"If you tick the `Jigsaw' checkbox, Solo will generate randomly " +"shaped sub-blocks. In this mode, the actual grid size will be taken " +"to be the product of the numbers entered in the `Columns' and `Rows' " +"boxes. There is no reason why you have to enter a number greater " +"than 1 in both boxes; Jigsaw mode has no constraint on the grid " +"size, and it can even be a prime number if you feel like it. " +"\n" +"If you tick the `Killer' checkbox, Solo will generate a set of " +"of cages, which are randomly shaped and drawn in an outline of a " +"different colour. Each of these regions contains a smaller clue " +"which shows the digit sum of all the squares in this region. " +"\n" +"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. " +"\n" +"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 `Trivial' and `Basic' there will be " +"a square you can fill in with a single number at all times, whereas " +"at `Intermediate' level and beyond you will have to make partial " +"deductions about the _set_ of squares a number could be in (or the " +"set of numbers that could be in a square). At `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. " +"\n" +"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. " +"\n" +; +const char quick_help_text[] = "Fill in the grid so that each row, column and square block contains one of every digit."; diff --git a/apps/plugins/puzzles/help/tents.c b/apps/plugins/puzzles/help/tents.c new file mode 100644 index 0000000000..28d45301d0 --- /dev/null +++ b/apps/plugins/puzzles/help/tents.c @@ -0,0 +1,66 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 25: Tents " +"\n" +"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: " +"\n" +"- There are exactly as many tents as trees. " +"\n" +"- 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. " +"\n" +"- No two tents are adjacent horizontally, vertically _or " +"diagonally_. " +"\n" +"- The number of tents in each row, and in each column, matches the " +"numbers given round the sides of the grid. " +"\n" +"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. " +"\n" +"\n#25.1 Tents controls " +"\n" +"Left-clicking in a blank square will place a tent in it. Right-\n" +"clicking in a blank square will colour it green, indicating that you " +"are sure it _isn't_ a tent. Clicking either button in an occupied " +"square will clear it. " +"\n" +"If you _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.) " +"\n" +"You can also use the cursor keys to move around the grid. Pressing " +"the return key over an empty square will place a tent, and pressing " +"the space bar over an empty square will colour it green; either key " +"will clear an occupied square. Holding Shift and pressing the cursor " +"keys will colour empty squares green. Holding Control and pressing " +"the cursor keys will colour green both empty squares and squares " +"with tents. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#25.2 Tents parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Difficulty_ " +"\n" +"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. " +"\n" +; +const char quick_help_text[] = "Place a tent next to each tree."; diff --git a/apps/plugins/puzzles/help/towers.c b/apps/plugins/puzzles/help/towers.c new file mode 100644 index 0000000000..ad42bd9447 --- /dev/null +++ b/apps/plugins/puzzles/help/towers.c @@ -0,0 +1,95 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 31: Towers " +"\n" +"You have a square grid. On each square of the grid you can build " +"a tower, with its height ranging from 1 to the size of the grid. " +"Around the edge of the grid are some numeric clues. " +"\n" +"Your task is to build a tower on every square, in such a way that: " +"\n" +"- Each row contains every possible height of tower once " +"\n" +"- Each column contains every possible height of tower once " +"\n" +"- Each numeric clue describes the number of towers that can be " +"seen if you look into the square from that direction, assuming " +"that shorter towers are hidden behind taller ones. For example, " +"in a 5x5 grid, a clue marked `5' indicates that the five tower " +"heights must appear in increasing order (otherwise you would " +"not be able to see all five towers), whereas a clue marked `1' " +"indicates that the tallest tower (the one marked 5) must come " +"first. " +"\n" +"In harder or larger puzzles, some towers will be specified for you " +"as well as the clues round the edge, and some edge clues may be " +"missing. " +"\n" +"This puzzle appears on the web under various names, particularly " +"`Skyscrapers', but I don't know who first invented it. " +"\n" +"\n#31.1 Towers controls " +"\n" +"Towers shares much of its control system with Solo, Unequal and " +"Keen. " +"\n" +"To play Towers, simply click the mouse in any empty square and then " +"type a digit on the keyboard to fill that square with a tower of " +"the given height. If you make a mistake, click the mouse in the " +"incorrect square and press Space to clear it again (or use the Undo " +"feature). " +"\n" +"If you _right_-click in a square and then type a number, that " +"number will be entered in the square as a `pencil mark'. You can " +"have pencil marks for multiple numbers in the same square. A square " +"containing a tower cannot also contain pencil marks. " +"\n" +"The game pays no attention to pencil marks, so exactly what you " +"use them for is up to you: you can use them as reminders that a " +"particular square needs to be re-examined once you know more about " +"a particular number, or you can use them as lists of the possible " +"numbers in a given square, or anything else you feel like. " +"\n" +"To erase a single pencil mark, right-click in the square and type " +"the same number again. " +"\n" +"All pencil marks in a square are erased when you left-click and type " +"a number, or when you left-click and press space. Right-clicking and " +"pressing space will also erase pencil marks. " +"\n" +"As for Solo, the cursor keys can be used in conjunction with the " +"digit keys to set numbers or pencil marks. Use the cursor keys to " +"move a highlight around the grid, and type a digit to enter it in " +"the highlighted square. Pressing return toggles the highlight into a " +"mode in which you can enter or remove pencil marks. " +"\n" +"Pressing M will fill in a full set of pencil marks in every square " +"that does not have a main digit in it. " +"\n" +"Left-clicking a clue will mark it as done (grey it out), or unmark " +"it if it is already marked. Holding Control or Shift and pressing an " +"arrow key likewise marks any clue in the given direction. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#31.2 Towers parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Grid size_ " +"\n" +"Specifies the size of the grid. Lower limit is 3; upper limit is " +"9 (because the user interface would become more difficult with " +"`digits' bigger than 9!). " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. At Unreasonable " +"level, some backtracking will be required, but the solution " +"should still be unique. The remaining levels require " +"increasingly complex reasoning to avoid having to backtrack. " +"\n" +; +const char quick_help_text[] = "Complete the latin square of towers in accordance with the clues."; diff --git a/apps/plugins/puzzles/help/tracks.c b/apps/plugins/puzzles/help/tracks.c new file mode 100644 index 0000000000..e60c71afb7 --- /dev/null +++ b/apps/plugins/puzzles/help/tracks.c @@ -0,0 +1,59 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 40: Tracks " +"\n" +"You are given a grid of squares, some of which are filled with train " +"tracks. You need to complete the track from A to B so that the " +"rows and columns contain the same number of track segments as are " +"indicated in the clues to the top and right of the grid. " +"\n" +"There are only straight and 90 degree curved rails, and the track " +"may not cross itself. " +"\n" +"Tracks was contributed to this collection by James Harvey. " +"\n" +"\n#40.1 Tracks controls " +"\n" +"Left-clicking on an edge between two squares adds a track segment " +"between the two squares. Right-clicking on an edge adds a cross on " +"the edge, indicating no track is possible there. " +"\n" +"Left-clicking in a square adds a colour indicator showing that " +"you know the square must contain a track, even if you don't know " +"which edges it crosses yet. Right-clicking in a square adds a cross " +"indicating it contains no track segment. " +"\n" +"Left- or right-dragging between squares allows you to lay a straight " +"line of is-track or is-not-track indicators, useful for filling in " +"rows or columns to match the clue. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#40.2 Tracks parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of the grid, in squares. " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle: at Tricky " +"level, you are required to make more deductions regarding " +"disregarding moves that would lead to impossible crossings " +"later. " +"\n" +"_Disallow consecutive 1 clues_ " +"\n" +"Controls whether the Tracks game generation permits two adjacent " +"rows or columns to have a 1 clue, or permits the row or column " +"of the track's endpoint to have a 1 clue. By default this is " +"not permitted, to avoid long straight boring segments of track " +"and make the games more twiddly and interesting. If you want to " +"restore the possibility, turn this option off. " +"\n" +; +const char quick_help_text[] = "Fill in the railway track according to the clues."; diff --git a/apps/plugins/puzzles/help/twiddle.c b/apps/plugins/puzzles/help/twiddle.c new file mode 100644 index 0000000000..a1684a6654 --- /dev/null +++ b/apps/plugins/puzzles/help/twiddle.c @@ -0,0 +1,75 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 7: Twiddle " +"\n" +"Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen " +"(see chapter 6): you are given a grid of square tiles, each " +"containing a number, and your aim is to arrange the numbers into " +"ascending order. " +"\n" +"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. " +"\n" +"I first saw this type of puzzle in the GameCube game `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. " +"\n" +"\n#7.1 Twiddle controls " +"\n" +"To play Twiddle, click the mouse in the centre of the square group " +"you wish to rotate. In the basic mode, you rotate a 2x2 square, " +"which means you have to click at a corner point where four tiles " +"meet. " +"\n" +"In more advanced modes you might be rotating 3x3 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. " +"\n" +"Clicking with the left mouse button rotates the group anticlockwise. " +"Clicking with the right button rotates it clockwise. " +"\n" +"You can also move an outline square around the grid with the cursor " +"keys; the square is the size above (2x2 by default, or larger). " +"Pressing the return key or space bar will rotate the current square " +"anticlockwise or clockwise respectively. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#7.2 Twiddle parameters " +"\n" +"Twiddle provides several configuration options via the `Custom' " +"option on the `Type' menu: " +"\n" +"- You can configure the width and height of the puzzle grid. " +"\n" +"- You can configure the size of square block that rotates at a " +"time. " +"\n" +"- 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. " +"\n" +"- 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. " +"\n" +"- 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. " +"\n" +; +const char quick_help_text[] = "Rotate the tiles around themselves to arrange them into order."; diff --git a/apps/plugins/puzzles/help/undead.c b/apps/plugins/puzzles/help/undead.c new file mode 100644 index 0000000000..2b8cccc9d6 --- /dev/null +++ b/apps/plugins/puzzles/help/undead.c @@ -0,0 +1,88 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 37: Undead " +"\n" +"You are given a grid of squares, some of which contain diagonal " +"mirrors. Every square which is not a mirror must be filled with one " +"of three types of undead monster: a ghost, a vampire, or a zombie. " +"\n" +"Vampires can be seen directly, but are invisible when reflected in " +"mirrors. Ghosts are the opposite way round: they can be seen in " +"mirrors, but are invisible when looked at directly. Zombies are " +"visible by any means. " +"\n" +"You are also told the total number of each type of monster in the " +"grid. Also around the edge of the grid are written numbers, which " +"indicate how many monsters can be seen if you look into the grid " +"along a row or column starting from that position. (The diagonal " +"mirrors are reflective on both sides. If your reflected line of " +"sight crosses the same monster more than once, the number will count " +"it each time it is visible, not just once.) " +"\n" +"This puzzle type was invented by David Millar, under the name " +"`Haunted Mirror Maze'. See [20] for more details. " +"\n" +"Undead was contributed to this collection by Steffen Bauer. " +"\n" +"[20] http://www.janko.at/Raetsel/Spukschloss/index.htm " +"\n" +"\n#37.1 Undead controls " +"\n" +"Undead has a similar control system to Solo, Unequal and Keen. " +"\n" +"To play Undead, click the mouse in any empty square and then type " +"a letter on the keyboard indicating the type of monster: `G' for " +"a ghost, `V' for a vampire, or `Z' for a zombie. If you make a " +"mistake, click the mouse in the incorrect square and press Space to " +"clear it again (or use the Undo feature). " +"\n" +"If you _right_-click in a square and then type a letter, the " +"corresponding monster will be shown in reduced size in that square, " +"as a `pencil mark'. You can have pencil marks for multiple monsters " +"in the same square. A square containing a full-size monster cannot " +"also contain pencil marks. " +"\n" +"The game pays no attention to pencil marks, so exactly what you " +"use them for is up to you: you can use them as reminders that a " +"particular square needs to be re-examined once you know more about " +"a particular monster, or you can use them as lists of the possible " +"monster in a given square, or anything else you feel like. " +"\n" +"To erase a single pencil mark, right-click in the square and type " +"the same letter again. " +"\n" +"All pencil marks in a square are erased when you left-click and type " +"a monster letter, or when you left-click and press Space. Right-\n" +"clicking and pressing space will also erase pencil marks. " +"\n" +"As for Solo, the cursor keys can be used in conjunction with the " +"letter keys to place monsters or pencil marks. Use the cursor keys " +"to move a highlight around the grid, and type a monster letter to " +"enter it in the highlighted square. Pressing return toggles the " +"highlight into a mode in which you can enter or remove pencil marks. " +"\n" +"If you prefer plain letters of the alphabet to cute monster " +"pictures, you can press `A' to toggle between showing the monsters " +"as monsters or showing them as letters. " +"\n" +"Left-clicking a clue will mark it as done (grey it out), or unmark " +"it if it is already marked. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#37.2 Undead parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. " +"\n" +; +const char quick_help_text[] = "Place ghosts, vampires and zombies so that the right numbers of them can be seen in mirrors."; diff --git a/apps/plugins/puzzles/help/unequal.c b/apps/plugins/puzzles/help/unequal.c new file mode 100644 index 0000000000..45b6b38942 --- /dev/null +++ b/apps/plugins/puzzles/help/unequal.c @@ -0,0 +1,107 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 27: Unequal " +"\n" +"You have a square grid; each square may contain a digit from 1 to " +"the size of the grid, and some squares have clue signs between them. " +"Your aim is to fully populate the grid with numbers such that: " +"\n" +"- Each row contains only one occurrence of each digit " +"\n" +"- Each column contains only one occurrence of each digit " +"\n" +"- All the clue signs are satisfied. " +"\n" +"There are two modes for this game, `Unequal' and `Adjacent'. " +"\n" +"In `Unequal' mode, the clue signs are greater-than symbols " +"indicating one square's value is greater than its neighbour's. In " +"this mode not all clues may be visible, particularly at higher " +"difficulty levels. " +"\n" +"In `Adjacent' mode, the clue signs are bars indicating one square's " +"value is numerically adjacent (i.e. one higher or one lower) than " +"its neighbour. In this mode all clues are always visible: absence of " +"a bar thus means that a square's value is definitely not numerically " +"adjacent to that neighbour's. " +"\n" +"In `Trivial' difficulty level (available via the `Custom' game type " +"selector), there are no greater-than signs in `Unequal' mode; the " +"puzzle is to solve the Latin square only. " +"\n" +"At the time of writing, the `Unequal' mode of this puzzle is " +"appearing in the Guardian weekly under the name `Futoshiki'. " +"\n" +"Unequal was contributed to this collection by James Harvey. " +"\n" +"\n#27.1 Unequal controls " +"\n" +"Unequal shares much of its control system with Solo. " +"\n" +"To play Unequal, 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). " +"\n" +"If you _right_-click in a square and then type a number, that " +"number will be entered in the square as a `pencil mark'. You can " +"have pencil marks for multiple numbers in the same square. Squares " +"containing filled-in numbers cannot also contain pencil marks. " +"\n" +"The game pays no attention to pencil marks, so exactly what you " +"use them for is up to you: you can use them as reminders that a " +"particular square needs to be re-examined once you know more about " +"a particular number, or you can use them as lists of the possible " +"numbers in a given square, or anything else you feel like. " +"\n" +"To erase a single pencil mark, right-click in the square and type " +"the same number again. " +"\n" +"All pencil marks in a square are erased when you left-click and type " +"a number, or when you left-click and press space. Right-clicking and " +"pressing space will also erase pencil marks. " +"\n" +"As for Solo, the cursor keys can be used in conjunction with the " +"digit keys to set numbers or pencil marks. You can also use the `M' " +"key to auto-fill every numeric hint, ready for removal as required, " +"or the `H' key to do the same but also to remove all obvious hints. " +"\n" +"Alternatively, use the cursor keys to move the mark around the grid. " +"Pressing the return key toggles the mark (from a normal mark to a " +"pencil mark), and typing a number in is entered in the square in the " +"appropriate way; typing in a 0 or using the space bar will clear a " +"filled square. " +"\n" +"Left-clicking a clue will mark it as done (grey it out), or unmark " +"it if it is already marked. Holding Control or Shift and pressing " +"an arrow key likewise marks any clue adjacent to the cursor in the " +"given direction. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#27.2 Unequal parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Mode_ " +"\n" +"Mode of the puzzle (`Unequal' or `Adjacent') " +"\n" +"_Size (s*s)_ " +"\n" +"Size of grid. " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. At Trivial " +"level, there are no greater-than signs; the puzzle is to solve " +"the Latin square only. At Recursive level (only available via " +"the `Custom' game type selector) backtracking will be required, " +"but the solution should still be unique. The levels in between " +"require increasingly complex reasoning to avoid having to " +"backtrack. " +"\n" +; +const char quick_help_text[] = "Complete the latin square in accordance with the > signs."; diff --git a/apps/plugins/puzzles/help/unruly.c b/apps/plugins/puzzles/help/unruly.c new file mode 100644 index 0000000000..78239d1b25 --- /dev/null +++ b/apps/plugins/puzzles/help/unruly.c @@ -0,0 +1,55 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 38: Unruly " +"\n" +"You are given a grid of squares, which you must colour either black " +"or white. Some squares are provided as clues; the rest are left for " +"you to fill in. Each row and column must contain the same number " +"of black and white squares, and no row or column may contain three " +"consecutive squares of the same colour. " +"\n" +"This puzzle type was invented by Adolfo Zanellati, under the name " +"`Tohu wa Vohu'. See [21] for more details. " +"\n" +"Unruly was contributed to this collection by Lennard Sprong. " +"\n" +"[21] http://www.janko.at/Raetsel/Tohu-Wa-Vohu/index.htm " +"\n" +"\n#38.1 Unruly controls " +"\n" +"To play Unruly, click the mouse in a square to change its colour. " +"Left-clicking an empty square will turn it black, and right-clicking " +"will turn it white. Keep clicking the same button to cycle through " +"the three possible states for the square. If you middle-click in a " +"square it will be reset to empty. " +"\n" +"You can also use the cursor keys to move around the grid. Pressing " +"the return or space keys will turn an empty square black or white " +"respectively (and then cycle the colours in the same way as the " +"mouse buttons), and pressing Backspace will reset a square to empty. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#38.2 Unruly parameters " +"\n" +"These parameters are available from the `Custom...' option on the " +"`Type' menu. " +"\n" +"_Width_, _Height_ " +"\n" +"Size of grid in squares. (Note that the rules of the game " +"require both the width and height to be even numbers.) " +"\n" +"_Difficulty_ " +"\n" +"Controls the difficulty of the generated puzzle. " +"\n" +"_Unique rows and columns_ " +"\n" +"If enabled, no two rows are permitted to have exactly the same " +"pattern, and likewise columns. (A row and a column can match, " +"though.) " +"\n" +; +const char quick_help_text[] = "Fill in the black and white grid to avoid runs of three."; diff --git a/apps/plugins/puzzles/help/untangle.c b/apps/plugins/puzzles/help/untangle.c new file mode 100644 index 0000000000..e0f2f4447e --- /dev/null +++ b/apps/plugins/puzzles/help/untangle.c @@ -0,0 +1,33 @@ +/* auto-generated by genhelp.sh */ +/* DO NOT EDIT! */ +const char help_text[] = +"#Chapter 18: Untangle " +"\n" +"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. " +"\n" +"I originally saw this in the form of a Flash game called Planarity " +"[7], written by John Tantalo. " +"\n" +"[7] http://planarity.net " +"\n" +"\n#18.1 Untangle controls " +"\n" +"To move a point, click on it with the left mouse button and drag it " +"into a new position. " +"\n" +"(All the actions described in section 2.1 are also available.) " +"\n" +"\n#18.2 Untangle parameters " +"\n" +"There is only one parameter available from the `Custom...' option on " +"the `Type' menu: " +"\n" +"_Number of points_ " +"\n" +"Controls the size of the puzzle, by specifying the number of " +"points in the generated graph. " +"\n" +; +const char quick_help_text[] = "Reposition the points so that the lines do not cross."; diff --git a/apps/plugins/puzzles/helpcontent.c b/apps/plugins/puzzles/helpcontent.c deleted file mode 100644 index cd2abbbe98..0000000000 --- a/apps/plugins/puzzles/helpcontent.c +++ /dev/null @@ -1,2767 +0,0 @@ -/* auto-generated by genhelp.sh */ -/* DO NOT EDIT! */ -const int help_chapteroffsets[] = { -0, -3444, -5494, -6741, -9273, -12186, -15719, -16242, -18364, -24608, -28403, -30866, -32386, -35415, -37100, -39375, -40121, -45547, -47920, -50233, -53696, -55959, -58223, -60361, -65571, -69487, -71990, -73785, -77720, -81246, -82630, -85127, -88171, -90199, -92763, -96037, -97720, -100094, -101951, -}; - -const char help_text[] = -"#Chapter 3: Net " -"\n" -"(_Note:_ the Windows version of this game is called NETGAME.EXE to " -"avoid clashing with Windows's own NET.EXE.) " -"\n" -"I originally saw this in the form of a Flash game called " -"FreeNet [1], written by Pavils Jurjans; there are several other " -"implementations under the name NetWalk. The computer prepares a " -"network by connecting up the centres of squares in a grid, and then " -"shuffles the network by rotating every tile randomly. Your job is " -"to rotate it all back into place. The successful solution will be " -"an entirely connected network, with no closed loops. As a visual " -"aid, all tiles which are connected to the one in the middle are " -"highlighted. " -"\n" -"[1] http://www.jurjans.lv/stuff/net/FreeNet.htm " -"\n" -"\n#3.1 Net controls " -"\n" -"This game can be played with either the keyboard or the mouse. The " -"controls are: " -"\n" -"_Select tile_: mouse pointer, arrow keys " -"\n" -"_Rotate tile anticlockwise_: left mouse button, `A' key " -"\n" -"_Rotate tile clockwise_: right mouse button, `D' key " -"\n" -"_Rotate tile by 180 degrees_: `F' key " -"\n" -"_Lock (or unlock) tile_: middle mouse button, shift-click, `S' key " -"\n" -"You can lock a tile once you're sure of its orientation. You " -"can also unlock it again, but while it's locked you can't " -"accidentally turn it. " -"\n" -"The following controls are not necessary to complete the game, but " -"may be useful: " -"\n" -"_Shift grid_: Shift + arrow keys " -"\n" -"On grids that wrap, you can move the origin of the grid, so " -"that tiles that were on opposite sides of the grid can be seen " -"together. " -"\n" -"_Move centre_: Ctrl + arrow keys " -"\n" -"You can change which tile is used as the source of highlighting. " -"(It doesn't ultimately matter which tile this is, as every tile " -"will be connected to every other tile in a correct solution, " -"but it may be helpful in the intermediate stages of solving the " -"puzzle.) " -"\n" -"_Jumble tiles_: `J' key " -"\n" -"This key turns all tiles that are not locked to random " -"orientations. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#3.2 Net parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in tiles. " -"\n" -"_Walls wrap around_ " -"\n" -"If checked, flow can pass from the left edge to the right edge, " -"and from top to bottom, and vice versa. " -"\n" -"_Barrier probability_ " -"\n" -"A number between 0.0 and 1.0 controlling whether an immovable " -"barrier is placed between two tiles to prevent flow between " -"them (a higher number gives more barriers). Since barriers " -"are immovable, they act as constraints on the solution (i.e., " -"hints). " -"\n" -"The grid generation in Net has been carefully arranged so that " -"the barriers are independent of the rest of the grid. This " -"means that if you note down the random seed used to generate " -"the current puzzle (see section 2.2), change the _Barrier " -"probability_ parameter, and then re-enter the same random seed, " -"you should see exactly the same starting grid, with the only " -"change being the number of barriers. So if you're stuck on a " -"particular grid and need a hint, you could start up another " -"instance of Net, set up the same parameters but a higher barrier " -"probability, and enter the game seed from the original Net " -"window. " -"\n" -"_Ensure unique solution_ " -"\n" -"Normally, Net will make sure that the puzzles it presents have " -"only one solution. Puzzles with ambiguous sections can be more " -"difficult and more subtle, so if you like you can turn off this " -"feature and risk having ambiguous puzzles. (Also, finding _all_ " -"the possible solutions can be an additional challenge for an " -"advanced player.) " -"\n" -"#Chapter 4: Cube " -"\n" -"This is another one I originally saw as a web game. This one was a " -"Java game [2], by Paul Scott. You have a grid of 16 squares, six of " -"which are blue; on one square rests a cube. Your move is to use the " -"arrow keys to roll the cube through 90 degrees so that it moves to " -"an adjacent square. If you roll the cube on to a blue square, the " -"blue square is picked up on one face of the cube; if you roll a blue " -"face of the cube on to a non-blue square, the blueness is put down " -"again. (In general, whenever you roll the cube, the two faces that " -"come into contact swap colours.) Your job is to get all six blue " -"squares on to the six faces of the cube at the same time. Count your " -"moves and try to do it in as few as possible. " -"\n" -"Unlike the original Java game, my version has an additional feature: " -"once you've mastered the game with a cube rolling on a square grid, " -"you can change to a triangular grid and roll any of a tetrahedron, " -"an octahedron or an icosahedron. " -"\n" -"[2] http://www3.sympatico.ca/paulscott/cube/cube.htm " -"\n" -"\n#4.1 Cube controls " -"\n" -"This game can be played with either the keyboard or the mouse. " -"\n" -"Left-clicking anywhere on the window will move the cube (or other " -"solid) towards the mouse pointer. " -"\n" -"The arrow keys can also used to roll the cube on its square grid in " -"the four cardinal directions. On the triangular grids, the mapping " -"of arrow keys to directions is more approximate. Vertical movement " -"is disallowed where it doesn't make sense. The four keys surrounding " -"the arrow keys on the numeric keypad (`7', `9', `1', `3') can be " -"used for diagonal movement. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#4.2 Cube parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Type of solid_ " -"\n" -"Selects the solid to roll (and hence the shape of the grid): " -"tetrahedron, cube, octahedron, or icosahedron. " -"\n" -"_Width / top_, _Height / bottom_ " -"\n" -"On a square grid, horizontal and vertical dimensions. On a " -"triangular grid, the number of triangles on the top and bottom " -"rows respectively. " -"\n" -"#Chapter 5: Fifteen " -"\n" -"The old ones are the best: this is the good old `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,_space_). " -"\n" -"\n#5.1 Fifteen controls " -"\n" -"This game can be controlled with the mouse or the keyboard. " -"\n" -"A left-click with the mouse in the row or column containing the " -"empty space will move as many tiles as necessary to move the space " -"to the mouse pointer. " -"\n" -"The arrow keys will move a tile adjacent to the space in the " -"direction indicated (moving the space in the _opposite_ direction). " -"\n" -"Pressing `h' will make a suggested move. Pressing `h' enough times " -"will solve the game, but it may scramble your progress while doing " -"so. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#5.2 Fifteen parameters " -"\n" -"The only options available from the `Custom...' option on the `Type' " -"menu are _Width_ and _Height_, which are self-explanatory. (Once " -"you've changed these, it's not a `15-puzzle' any more, of course!) " -"\n" -"#Chapter 6: Sixteen " -"\n" -"Another sliding tile puzzle, visually similar to Fifteen (see " -"chapter 5) but with a different type of move. This time, there is no " -"hole: all 16 squares on the grid contain numbered squares. Your move " -"is to shift an entire row left or right, or shift an entire column " -"up or down; every time you do that, the tile you shift off the grid " -"re-appears at the other end of the same row, in the space you just " -"vacated. To win, arrange the tiles into numerical order (1,2,3,4 on " -"the top row, 13,14,15,16 on the bottom). When you've done that, try " -"playing on different sizes of grid. " -"\n" -"I _might_ have invented this game myself, though only by accident " -"if so (and I'm sure other people have independently invented it). I " -"thought I was imitating a screensaver I'd seen, but I have a feeling " -"that the screensaver might actually have been a Fifteen-type puzzle " -"rather than this slightly different kind. So this might be the one " -"thing in my puzzle collection which represents creativity on my part " -"rather than just engineering. " -"\n" -"\n#6.1 Sixteen controls " -"\n" -"Left-clicking on an arrow will move the appropriate row or column in " -"the direction indicated. Right-clicking will move it in the opposite " -"direction. " -"\n" -"Alternatively, use the cursor keys to move the position indicator " -"around the edge of the grid, and use the return key to move the " -"row/column in the direction indicated. " -"\n" -"You can also move the tiles directly. Move the cursor onto a tile, " -"hold Control and press an arrow key to move the tile under the " -"cursor and move the cursor along with the tile. Or, hold Shift to " -"move only the tile. Pressing Enter simulates holding down Control " -"(press Enter again to release), while pressing Space simulates " -"holding down shift. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#6.2 Sixteen parameters " -"\n" -"The parameters available from the `Custom...' option on the `Type' " -"menu are: " -"\n" -"- _Width_ and _Height_, which are self-explanatory. " -"\n" -"- 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. " -"\n" -"#Chapter 7: Twiddle " -"\n" -"Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen " -"(see chapter 6): you are given a grid of square tiles, each " -"containing a number, and your aim is to arrange the numbers into " -"ascending order. " -"\n" -"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. " -"\n" -"I first saw this type of puzzle in the GameCube game `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. " -"\n" -"\n#7.1 Twiddle controls " -"\n" -"To play Twiddle, click the mouse in the centre of the square group " -"you wish to rotate. In the basic mode, you rotate a 2x2 square, " -"which means you have to click at a corner point where four tiles " -"meet. " -"\n" -"In more advanced modes you might be rotating 3x3 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. " -"\n" -"Clicking with the left mouse button rotates the group anticlockwise. " -"Clicking with the right button rotates it clockwise. " -"\n" -"You can also move an outline square around the grid with the cursor " -"keys; the square is the size above (2x2 by default, or larger). " -"Pressing the return key or space bar will rotate the current square " -"anticlockwise or clockwise respectively. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#7.2 Twiddle parameters " -"\n" -"Twiddle provides several configuration options via the `Custom' " -"option on the `Type' menu: " -"\n" -"- You can configure the width and height of the puzzle grid. " -"\n" -"- You can configure the size of square block that rotates at a " -"time. " -"\n" -"- 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. " -"\n" -"- 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. " -"\n" -"- 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. " -"\n" -"#Chapter 8: Rectangles " -"\n" -"You have a grid of squares, with numbers written in some (but " -"not all) of the squares. Your task is to subdivide the grid into " -"rectangles of various sizes, such that (a) every rectangle contains " -"exactly one numbered square, and (b) the area of each rectangle is " -"equal to the number written in its numbered square. " -"\n" -"Credit for this game goes to the Japanese puzzle magazine Nikoli [3] " -"; I've also seen a Palm implementation at Puzzle Palace [4]. 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, but on " -"the plus side you get an inexhaustible supply of puzzles tailored to " -"your own specification. " -"\n" -"[3] http://www.nikoli.co.jp/en/puzzles/shikaku.html (beware of " -"Flash) " -"\n" -"[4] " -"https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en " -"\n" -"\n#8.1 Rectangles controls " -"\n" -"This game is played with the mouse or cursor keys. " -"\n" -"Left-click any edge to toggle it on or off, or left-click and " -"drag to draw an entire rectangle (or line) on the grid in one go " -"(removing any existing edges within that rectangle). Right-clicking " -"and dragging will allow you to erase the contents of a rectangle " -"without affecting its edges. " -"\n" -"Alternatively, use the cursor keys to move the position indicator " -"around the board. Pressing the return key then allows you to use the " -"cursor keys to drag a rectangle out from that position, and pressing " -"the return key again completes the rectangle. Using the space bar " -"instead of the return key allows you to erase the contents of a " -"rectangle without affecting its edges, as above. Pressing escape " -"cancels a drag. " -"\n" -"When a rectangle of the correct size is completed, it will be " -"shaded. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#8.2 Rectangles parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid, in squares. " -"\n" -"_Expansion factor_ " -"\n" -"This is a mechanism for changing the type of grids generated by " -"the program. Some people prefer a grid containing a few large " -"rectangles to one containing many small ones. So you can ask " -"Rectangles to essentially generate a _smaller_ grid than the " -"size you specified, and then to expand it by adding rows and " -"columns. " -"\n" -"The default expansion factor of zero means that Rectangles will " -"simply generate a grid of the size you ask for, and do nothing " -"further. If you set an expansion factor of (say) 0.5, it means " -"that each dimension of the grid will be expanded to half again " -"as big after generation. In other words, the initial grid will " -"be 2/3 the size in each dimension, and will be expanded to its " -"full size without adding any more rectangles. " -"\n" -"Setting an expansion factor of around 0.5 tends to make the " -"game more difficult, and also (in my experience) rewards a " -"less deductive and more intuitive playing style. If you set it " -"_too_ high, though, the game simply cannot generate more than a " -"few rectangles to cover the entire grid, and the game becomes " -"trivial. " -"\n" -"_Ensure unique solution_ " -"\n" -"Normally, Rectangles will make sure that the puzzles it presents " -"have only one solution. Puzzles with ambiguous sections can be " -"more difficult and more subtle, so if you like you can turn off " -"this feature and risk having ambiguous puzzles. Also, finding " -"_all_ the possible solutions can be an additional challenge for " -"an advanced player. Turning off this option can also speed up " -"puzzle generation. " -"\n" -"#Chapter 9: Netslide " -"\n" -"This game combines the grid generation of Net (see chapter 3) with " -"the movement of Sixteen (see chapter 6): 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. " -"\n" -"As in Sixteen, control is with the mouse or cursor keys. See section " -"6.1. " -"\n" -"The available game parameters have similar meanings to those in Net " -"(see section 3.2) and Sixteen (see section 6.2). " -"\n" -"Netslide was contributed to this collection by Richard Boulton. " -"\n" -"#Chapter 10: Pattern " -"\n" -"You have a grid of squares, which must all be filled in either black " -"or white. Beside each row of the grid are listed the lengths of the " -"runs of black squares on that row; above each column are listed the " -"lengths of the runs of black squares in that column. Your aim is to " -"fill in the entire grid black or white. " -"\n" -"I first saw this puzzle form around 1995, under the name " -"`nonograms'. I've seen it in various places since then, under " -"different names. " -"\n" -"Normally, puzzles of this type turn out to be a meaningful picture " -"of something once you've solved them. However, since this version " -"generates the puzzles automatically, they will just look like random " -"groupings of squares. (One user has suggested that this is actually " -"a _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. " -"\n" -"\n#10.1 Pattern controls " -"\n" -"This game is played with the mouse. " -"\n" -"Left-click in a square to colour it black. Right-click to colour it " -"white. If you make a mistake, you can middle-click, or hold down " -"Shift while clicking with any button, to colour the square in the " -"default grey (meaning `undecided') again. " -"\n" -"You can click and drag with the left or right mouse button to colour " -"a vertical or horizontal line of squares black or white at a time " -"(respectively). If you click and drag with the middle button, or " -"with Shift held down, you can colour a whole rectangle of squares " -"grey. " -"\n" -"You can also move around the grid with the cursor keys. Pressing the " -"return key will cycle the current cell through empty, then black, " -"then white, then empty, and the space bar does the same cycle in " -"reverse. " -"\n" -"Moving the cursor while holding Control will colour the moved-over " -"squares black. Holding Shift will colour the moved-over squares " -"white, and holding both will colour them grey. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#10.2 Pattern parameters " -"\n" -"The only options available from the `Custom...' option on the `Type' " -"menu are _Width_ and _Height_, which are self-explanatory. " -"\n" -"#Chapter 11: Solo " -"\n" -"You have a square grid, which is divided into as many equally sized " -"sub-blocks as the grid has rows. Each square must be filled in with " -"a digit from 1 to the size of the grid, in such a way that " -"\n" -"- every row contains only one occurrence of each digit " -"\n" -"- every column contains only one occurrence of each digit " -"\n" -"- every block contains only one occurrence of each digit. " -"\n" -"- (optionally, by default off) each of the square's two main " -"diagonals contains only one occurrence of each digit. " -"\n" -"You are given some of the numbers as clues; your aim is to place the " -"rest of the numbers correctly. " -"\n" -"Under the default settings, the sub-blocks are square or " -"rectangular. The default puzzle size is 3x3 (a 9x9 actual grid, " -"divided into nine 3x3 blocks). You can also select sizes with " -"rectangular blocks instead of square ones, such as 2x3 (a 6x6 grid " -"divided into six 3x2 blocks). Alternatively, you can select `jigsaw' " -"mode, in which the sub-blocks are arbitrary shapes which differ " -"between individual puzzles. " -"\n" -"Another available mode is `killer'. In this mode, clues are not " -"given in the form of filled-in squares; instead, the grid is divided " -"into `cages' by coloured lines, and for each cage the game tells " -"you what the sum of all the digits in that cage should be. Also, " -"no digit may appear more than once within a cage, even if the cage " -"crosses the boundaries of existing regions. " -"\n" -"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 3x4 then the digits which go in your grid will be 1 to 9, " -"plus `a', `b' and `c'. This cannot be selected for killer puzzles. " -"\n" -"I first saw this puzzle in Nikoli [5], although it's also been " -"popularised by various newspapers under the name `Sudoku' or `Su " -"Doku'. Howard Garns is considered the inventor of the modern form of " -"the puzzle, and it was first published in _Dell Pencil Puzzles and " -"Word Games_. A more elaborate treatment of the history of the puzzle " -"can be found on Wikipedia [6]. " -"\n" -"[5] http://www.nikoli.co.jp/en/puzzles/sudoku.html (beware of Flash) " -"\n" -"[6] http://en.wikipedia.org/wiki/Sudoku " -"\n" -"\n#11.1 Solo controls " -"\n" -"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). " -"\n" -"If you _right_-click in a square and then type a number, that " -"number will be entered in the square as a `pencil mark'. You can " -"have pencil marks for multiple numbers in the same square. Squares " -"containing filled-in numbers cannot also contain pencil marks. " -"\n" -"The game pays no attention to pencil marks, so exactly what you " -"use them for is up to you: you can use them as reminders that a " -"particular square needs to be re-examined once you know more about " -"a particular number, or you can use them as lists of the possible " -"numbers in a given square, or anything else you feel like. " -"\n" -"To erase a single pencil mark, right-click in the square and type " -"the same number again. " -"\n" -"All pencil marks in a square are erased when you left-click and type " -"a number, or when you left-click and press space. Right-clicking and " -"pressing space will also erase pencil marks. " -"\n" -"Alternatively, use the cursor keys to move the mark around the grid. " -"Pressing the return key toggles the mark (from a normal mark to a " -"pencil mark), and typing a number in is entered in the square in the " -"appropriate way; typing in a 0 or using the space bar will clear a " -"filled square. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#11.2 Solo parameters " -"\n" -"Solo allows you to configure two separate dimensions of the puzzle " -"grid on the `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.) " -"\n" -"If you tick the `X' checkbox, Solo will apply the optional extra " -"constraint that the two main diagonals of the grid also contain " -"one of every digit. (This is sometimes known as `Sudoku-X' in " -"newspapers.) In this mode, the squares on the two main diagonals " -"will be shaded slightly so that you know it's enabled. " -"\n" -"If you tick the `Jigsaw' checkbox, Solo will generate randomly " -"shaped sub-blocks. In this mode, the actual grid size will be taken " -"to be the product of the numbers entered in the `Columns' and `Rows' " -"boxes. There is no reason why you have to enter a number greater " -"than 1 in both boxes; Jigsaw mode has no constraint on the grid " -"size, and it can even be a prime number if you feel like it. " -"\n" -"If you tick the `Killer' checkbox, Solo will generate a set of " -"of cages, which are randomly shaped and drawn in an outline of a " -"different colour. Each of these regions contains a smaller clue " -"which shows the digit sum of all the squares in this region. " -"\n" -"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. " -"\n" -"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 `Trivial' and `Basic' there will be " -"a square you can fill in with a single number at all times, whereas " -"at `Intermediate' level and beyond you will have to make partial " -"deductions about the _set_ of squares a number could be in (or the " -"set of numbers that could be in a square). At `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. " -"\n" -"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. " -"\n" -"#Chapter 12: Mines " -"\n" -"You have a grid of covered squares, some of which contain mines, but " -"you don't know which. Your job is to uncover every square which does " -"_not_ contain a mine. If you uncover a square containing a mine, you " -"lose. If you uncover a square which does not contain a mine, you " -"are told how many mines are contained within the eight surrounding " -"squares. " -"\n" -"This game needs no introduction; popularised by Windows, it is " -"perhaps the single best known desktop puzzle game in existence. " -"\n" -"This version of it has an unusual property. By default, it will " -"generate its mine positions in such a way as to ensure that you " -"never need to _guess_ where a mine is: you will always be able " -"to deduce it somehow. So you will never, as can happen in other " -"versions, get to the last four squares and discover that there are " -"two mines left but you have no way of knowing for sure where they " -"are. " -"\n" -"\n#12.1 Mines controls " -"\n" -"This game is played with the mouse. " -"\n" -"If you left-click in a covered square, it will be uncovered. " -"\n" -"If you right-click in a covered square, it will place a flag which " -"indicates that the square is believed to be a mine. Left-clicking in " -"a marked square will not uncover it, for safety. You can right-click " -"again to remove a mark placed in error. " -"\n" -"If you left-click in an _uncovered_ square, it will `clear around' " -"the square. This means: if the square has exactly as many flags " -"surrounding it as it should have mines, then all the covered squares " -"next to it which are _not_ flagged will be uncovered. So once you " -"think you know the location of all the mines around a square, you " -"can use this function as a shortcut to avoid having to click on each " -"of the remaining squares one by one. " -"\n" -"If you uncover a square which has _no_ mines in the surrounding " -"eight squares, then it is obviously safe to uncover those squares in " -"turn, and so on if any of them also has no surrounding mines. This " -"will be done for you automatically; so sometimes when you uncover a " -"square, a whole new area will open up to be explored. " -"\n" -"You can also use the cursor keys to move around the minefield. " -"Pressing the return key in a covered square uncovers it, and in " -"an uncovered square will clear around it (so it acts as the left " -"button), pressing the space bar in a covered square will place a " -"flag (similarly, it acts as the right button). " -"\n" -"All the actions described in section 2.1 are also available. " -"\n" -"Even Undo is available, although you might consider it cheating to " -"use it. If you step on a mine, the program will only reveal the mine " -"in question (unlike most other implementations, which reveal all of " -"them). You can then Undo your fatal move and continue playing if you " -"like. The program will track the number of times you died (and Undo " -"will not reduce that counter), so when you get to the end of the " -"game you know whether or not you did it without making any errors. " -"\n" -"(If you really want to know the full layout of the grid, which other " -"implementations will show you after you die, you can always use the " -"Solve menu option.) " -"\n" -"\n#12.2 Mines parameters " -"\n" -"The options available from the `Custom...' option on the `Type' menu " -"are: " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Mines_ " -"\n" -"Number of mines in the grid. You can enter this as an absolute " -"mine count, or alternatively you can put a % sign on the end " -"in which case the game will arrange for that proportion of the " -"squares in the grid to be mines. " -"\n" -"Beware of setting the mine count too high. At very high " -"densities, the program may spend forever searching for a " -"solvable grid. " -"\n" -"_Ensure solubility_ " -"\n" -"When this option is enabled (as it is by default), Mines will " -"ensure that the entire grid can be fully deduced starting " -"from the initial open space. If you prefer the riskier grids " -"generated by other implementations, you can switch off this " -"option. " -"\n" -"#Chapter 13: Same Game " -"\n" -"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). " -"\n" -"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. " -"\n" -"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. " -"\n" -"Same Game was contributed to this collection by James Harvey. " -"\n" -"\n#13.1 Same Game controls " -"\n" -"This game can be played with either the keyboard or the mouse. " -"\n" -"If you left-click an unselected region, it becomes selected " -"(possibly clearing the current selection). " -"\n" -"If you left-click the selected region, it will be removed (and the " -"rest of the grid shuffled immediately). " -"\n" -"If you right-click the selected region, it will be unselected. " -"\n" -"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. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#13.2 Same Game parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_No. of colours_ " -"\n" -"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. " -"\n" -"_Scoring system_ " -"\n" -"Controls the precise mechanism used for scoring. With the " -"default system, `(n-2)^2', only regions of three squares or more " -"will score any points at all. With the alternative `(n-1)^2' " -"system, regions of two squares score a point each, and larger " -"regions score relatively more points. " -"\n" -"_Ensure solubility_ " -"\n" -"If this option is ticked (the default state), generated grids " -"will be guaranteed to have at least one solution. " -"\n" -"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 _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. " -"\n" -"#Chapter 14: Flip " -"\n" -"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. " -"\n" -"Each square contains a small diagram showing which other squares " -"change when you flip it. " -"\n" -"\n#14.1 Flip controls " -"\n" -"This game can be played with either the keyboard or the mouse. " -"\n" -"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. " -"\n" -"If you use the `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 _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.) " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#14.2 Flip parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Shape type_ " -"\n" -"This control determines the shape of the region which is flipped " -"by clicking in any given square. The default setting, `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, `Random', causes a random shape to be chosen for " -"every square, so the game is different every time. " -"\n" -"#Chapter 15: Guess " -"\n" -"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. " -"\n" -"Each guess gets marked with the number of correctly-coloured pegs " -"in the correct places (in black), and also the number of correctly-\n" -"coloured pegs in the wrong places (in white). " -"\n" -"This game is also known (and marketed, by Hasbro, mainly) as a board " -"game `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. " -"\n" -"Guess was contributed to this collection by James Harvey. " -"\n" -"\n#15.1 Guess controls " -"\n" -"This game can be played with either the keyboard or the mouse. " -"\n" -"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. " -"\n" -"Right-clicking in the current guess adds a `hold' marker; pegs that " -"have hold markers will be automatically added to the next guess " -"after marking. " -"\n" -"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. `D' or Backspace removes a " -"peg, and Space adds a hold marker. " -"\n" -"Pressing `h' or `?' will fill the current guess with a suggested " -"guess. Using this is not recommended for 10 or more pegs as it is " -"slow. " -"\n" -"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 `current guess' marker. " -"\n" -"If you correctly position all the pegs the solution will be " -"displayed below; if you run out of guesses (or select `Solve...') " -"the solution will also be revealed. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#15.2 Guess parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. The default game matches the parameters for the board " -"game `Mastermind'. " -"\n" -"_Colours_ " -"\n" -"Number of colours the solution is chosen from; from 2 to 10 " -"(more is harder). " -"\n" -"_Pegs per guess_ " -"\n" -"Number of pegs per guess (more is harder). " -"\n" -"_Guesses_ " -"\n" -"Number of guesses you have to find the solution in (fewer is " -"harder). " -"\n" -"_Allow blanks_ " -"\n" -"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. " -"\n" -"Note that this doesn't allow blank pegs in the solution; if you " -"really wanted that, use one extra colour. " -"\n" -"_Allow duplicates_ " -"\n" -"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. " -"\n" -"#Chapter 16: Pegs " -"\n" -"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. " -"\n" -"This game, best known as `Peg Solitaire', is possibly one of the " -"oldest puzzle games still commonly known. " -"\n" -"\n#16.1 Pegs controls " -"\n" -"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. " -"\n" -"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. " -"\n" -"You can also use the cursor keys to move a position indicator around " -"the board. Pressing the return key while over a peg, followed by a " -"cursor key, will jump the peg in that direction (if that is a legal " -"move). " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#16.2 Pegs parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in holes. " -"\n" -"_Board type_ " -"\n" -"Controls whether you are given a board of a standard shape or " -"a randomly generated shape. The two standard shapes currently " -"supported are `Cross' and `Octagon' (also commonly known as the " -"English and European traditional board layouts respectively). " -"Selecting `Random' will give you a different board shape every " -"time (but always one that is known to have a solution). " -"\n" -"#Chapter 17: Dominosa " -"\n" -"A normal set of dominoes - that is, one instance of every " -"(unordered) pair of numbers from 0 to 6 - 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. " -"\n" -"This puzzle is widely credited to O. S. Adler, and takes part of its " -"name from those initials. " -"\n" -"\n#17.1 Dominosa controls " -"\n" -"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. " -"\n" -"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 _not_ covered by a single domino. Right-clicking again " -"removes the line. " -"\n" -"You can also use the cursor keys to move a cursor around the grid. " -"When the cursor is half way between two adjacent numbers, pressing " -"the return key will place a domino covering those numbers, or " -"pressing the space bar will lay a line between the two squares. " -"Repeating either action removes the domino or line. " -"\n" -"Pressing a number key will highlight all occurrences of that number. " -"Pressing that number again will clear the highlighting. Up to two " -"different numbers can be highlighted at any given time. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#17.2 Dominosa parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Maximum number on dominoes_ " -"\n" -"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) x (N+1) rectangle; so, in " -"particular, the default value of 6 gives an 8x7 grid. " -"\n" -"_Ensure unique solution_ " -"\n" -"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 _all_ the possible " -"solutions can be an additional challenge for an advanced player. " -"Turning off this option can also speed up puzzle generation. " -"\n" -"#Chapter 18: Untangle " -"\n" -"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. " -"\n" -"I originally saw this in the form of a Flash game called Planarity " -"[7], written by John Tantalo. " -"\n" -"[7] http://planarity.net " -"\n" -"\n#18.1 Untangle controls " -"\n" -"To move a point, click on it with the left mouse button and drag it " -"into a new position. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#18.2 Untangle parameters " -"\n" -"There is only one parameter available from the `Custom...' option on " -"the `Type' menu: " -"\n" -"_Number of points_ " -"\n" -"Controls the size of the puzzle, by specifying the number of " -"points in the generated graph. " -"\n" -"#Chapter 19: Black Box " -"\n" -"A number of balls are hidden in a rectangular arena. You have to " -"deduce the positions of the balls by firing lasers positioned at the " -"edges of the arena and observing how their beams are deflected. " -"\n" -"Beams will travel straight from their origin until they hit the " -"opposite side of the arena (at which point they emerge), unless " -"affected by balls in one of the following ways: " -"\n" -"- A beam that hits a ball head-on is absorbed and will never re-\n" -"emerge. This includes beams that meet a ball on the first rank " -"of the arena. " -"\n" -"- A beam with a ball in its front-left square and no ball ahead of " -"it gets deflected 90 degrees to the right. " -"\n" -"- A beam with a ball in its front-right square and no ball ahead " -"of it gets similarly deflected to the left. " -"\n" -"- A beam that would re-emerge from its entry location is " -"considered to be `reflected'. " -"\n" -"- A beam which would get deflected before entering the arena by a " -"ball to the front-left or front-right of its entry point is also " -"considered to be `reflected'. " -"\n" -"Beams that are reflected appear as a `R'; beams that hit balls head-\n" -"on appear as `H'. Otherwise, a number appears at the firing point " -"and the location where the beam emerges (this number is unique to " -"that shot). " -"\n" -"You can place guesses as to the location of the balls, based on the " -"entry and exit patterns of the beams; once you have placed enough " -"balls a button appears enabling you to have your guesses checked. " -"\n" -"Here is a diagram showing how the positions of balls can create each " -"of the beam behaviours shown above: " -"\n" -"1RHR----\n" -"|..O.O...|\n" -"2........3\n" -"|........|\n" -"|........|\n" -"3........|\n" -"|......O.|\n" -"H........|\n" -"|.....O..|\n" -"12-RR---\n" -"\n" -"As shown, it is possible for a beam to receive multiple reflections " -"before re-emerging (see turn 3). Similarly, a beam may be reflected " -"(possibly more than once) before receiving a hit (the `H' on the " -"left side of the example). " -"\n" -"Note that any layout with more than 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): " -"\n" -"--------\n" -"|........|\n" -"|........|\n" -"|..O..O..|\n" -"|...xx...|\n" -"|...xx...|\n" -"|..O..O..|\n" -"|........|\n" -"|........|\n" -"--------\n" -"\n" -"For this reason, when you have your guesses checked, the game " -"will check that your solution _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 " -"_any_ of the locations marked with an x, and you would still win. " -"\n" -"Black Box was contributed to this collection by James Harvey. " -"\n" -"\n#19.1 Black Box controls " -"\n" -"To fire a laser beam, left-click in a square around the edge of " -"the arena. The results will be displayed immediately. Clicking or " -"holding the left button on one of these squares will highlight the " -"current go (or a previous go) to confirm the exit point for that " -"laser, if applicable. " -"\n" -"To guess the location of a ball, left-click within the arena and a " -"black circle will appear marking the guess; click again to remove " -"the guessed ball. " -"\n" -"Locations in the arena may be locked against modification by right-\n" -"clicking; whole rows and columns may be similarly locked by right-\n" -"clicking in the laser square above/below that column, or to the " -"left/right of that row. " -"\n" -"The cursor keys may also be used to move around the grid. Pressing " -"the Enter key will fire a laser or add a new ball-location guess, " -"and pressing Space will lock a cell, row, or column. " -"\n" -"When an appropriate number of balls have been guessed, a button will " -"appear at the top-left corner of the grid; clicking that (with mouse " -"or cursor) will check your guesses. " -"\n" -"If you click the `check' button and your guesses are not correct, " -"the game will show you the minimum information necessary to " -"demonstrate this to you, so you can try again. If your ball " -"positions are not consistent with the beam paths you already know " -"about, one beam path will be circled to indicate that it proves you " -"wrong. If your positions match all the existing beam paths but are " -"still wrong, one new beam path will be revealed (written in red) " -"which is not consistent with your current guesses. " -"\n" -"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 " -"as filled black circles with red crosses, and missing balls as " -"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 `check' button), and red text marks " -"any laser you _could_ have fired in order to distinguish your ball " -"layout from the correct one. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#19.2 Black Box parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. There are 2 x _Width_ x _Height_ lasers " -"per grid, two per row and two per column. " -"\n" -"_No. of balls_ " -"\n" -"Number of balls to place in the grid. This can be a single " -"number, or a range (separated with a hyphen, like `2-6'), " -"and determines the number of balls to place on the grid. " -"The `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 beam " -"inputs and outputs match. " -"\n" -"#Chapter 20: Slant " -"\n" -"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: " -"\n" -"- The diagonal lines never form a loop. " -"\n" -"- 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 - 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.) " -"\n" -"Credit for this puzzle goes to Nikoli [8]. " -"\n" -"[8] http://www.nikoli.co.jp/ja/puzzles/gokigen_naname (in Japanese) " -"\n" -"\n#20.1 Slant controls " -"\n" -"Left-clicking in a blank square will place a \\ 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 / in it " -"(leaning to the right, running from top right to bottom left). " -"\n" -"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 \\ to / back to blank, and " -"if you right-click repeatedly the square will change from blank to / " -"to \\ back to blank. (Therefore, you can play the game entirely with " -"one button if you need to.) " -"\n" -"You can also use the cursor keys to move around the grid. Pressing " -"the return or space keys will place a \\ or a /, respectively, and " -"will then cycle them as above. You can also press / or \\ to place a " -"/ or \\, respectively, independent of what is already in the cursor " -"square. Backspace removes any line from the cursor square. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#20.2 Slant parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. At Hard " -"level, you are required to do deductions based on knowledge of " -"_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. " -"\n" -"#Chapter 21: Light Up " -"\n" -"You have a grid of squares. Some are filled in black; some of the " -"black squares are numbered. Your aim is to `light up' all the empty " -"squares by placing light bulbs in some of them. " -"\n" -"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. " -"\n" -"To win the game, you must satisfy the following conditions: " -"\n" -"- All non-black squares are lit. " -"\n" -"- No light is lit by another light. " -"\n" -"- All numbered black squares have exactly that number of lights " -"adjacent to them (in the four squares above, below, and to the " -"side). " -"\n" -"Non-numbered black squares may have any number of lights adjacent to " -"them. " -"\n" -"Credit for this puzzle goes to Nikoli [9]. " -"\n" -"Light Up was contributed to this collection by James Harvey. " -"\n" -"[9] http://www.nikoli.co.jp/en/puzzles/akari.html (beware of Flash) " -"\n" -"\n#21.1 Light Up controls " -"\n" -"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. " -"\n" -"You may not place a light in a marked square, nor place a mark in a " -"lit square. " -"\n" -"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. " -"\n" -"Thus, the grid is solved when all non-black squares have yellow " -"highlights and there are no red lights. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#21.2 Light Up parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_%age of black squares_ " -"\n" -"Rough percentage of black squares in the grid. " -"\n" -"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. " -"\n" -"_Symmetry_ " -"\n" -"Allows you to specify the required symmetry of the black squares " -"in the grid. (This does not affect the difficulty of the puzzles " -"noticeably.) " -"\n" -"_Difficulty_ " -"\n" -"`Easy' means that the puzzles should be soluble without " -"backtracking or guessing, `Hard' means that some guesses will " -"probably be necessary. " -"\n" -"#Chapter 22: Map " -"\n" -"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. " -"\n" -"Only regions which share a length of border are required to be " -"different colours. Two regions which meet at only one _point_ (i.e. " -"are diagonally separated) may be the same colour. " -"\n" -"I believe this puzzle is original; I've never seen an implementation " -"of it anywhere else. The concept of a 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. " -"\n" -"\n#22.1 Map controls " -"\n" -"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. " -"\n" -"(The program will always ensure the starting puzzle has at least one " -"region of each colour, so that this is always possible!) " -"\n" -"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. " -"\n" -"Dragging a colour using the _right_ mouse button will stipple the " -"region in that colour, which you can use as a note to yourself that " -"you think the region _might_ be that colour. A region can contain " -"stipples in multiple colours at once. (This is often useful at the " -"harder difficulty levels.) " -"\n" -"You can also use the cursor keys to move around the map: the colour " -"of the cursor indicates the position of the colour you would drag " -"(which is not obvious if you're on a region's boundary, since it " -"depends on the direction from which you approached the boundary). " -"Pressing the return key starts a drag of that colour, as above, " -"which you control with the cursor keys; pressing the return key " -"again finishes the drag. The space bar can be used similarly to " -"create a stippled region. Double-pressing the return key (without " -"moving the cursor) will clear the region, as a drag from an empty " -"region does: this is useful with the cursor mode if you have filled " -"the entire map in but need to correct the layout. " -"\n" -"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 - having an unambiguous " -"name for each region is much easier than trying to refer to them all " -"by names such as `the one down and right of the brown one on the top " -"border'. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#22.2 Map parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Regions_ " -"\n" -"Number of regions in the generated map. " -"\n" -"_Difficulty_ " -"\n" -"In `Easy' mode, there should always be at least one region whose " -"colour can be determined trivially. In `Normal' and `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. " -"\n" -"In `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. " -"\n" -"#Chapter 23: Loopy " -"\n" -"You are given a grid of dots, marked with yellow lines to indicate " -"which dots you are allowed to connect directly together. Your aim is " -"to use some subset of those yellow lines to draw a single unbroken " -"loop from dot to dot within the grid. " -"\n" -"Some of the spaces between the lines contain numbers. These numbers " -"indicate how many of the lines around that space form part of the " -"loop. The loop you draw must correctly satisfy all of these clues to " -"be considered a correct solution. " -"\n" -"In the default mode, the dots are arranged in a grid of squares; " -"however, you can also play on triangular or hexagonal grids, or even " -"more exotic ones. " -"\n" -"Credit for the basic puzzle idea goes to Nikoli [10]. " -"\n" -"Loopy was originally contributed to this collection by Mike Pinna, " -"and subsequently enhanced to handle various types of non-square grid " -"by Lambros Lambrou. " -"\n" -"[10] http://www.nikoli.co.jp/en/puzzles/slitherlink.html (beware of " -"Flash) " -"\n" -"\n#23.1 Loopy controls " -"\n" -"Click the left mouse button on a yellow line to turn it black, " -"indicating that you think it is part of the loop. Click again to " -"turn the line yellow again (meaning you aren't sure yet). " -"\n" -"If you are sure that a particular line segment is _not_ part of the " -"loop, you can click the right mouse button to remove it completely. " -"Again, clicking a second time will turn the line back to yellow. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#23.2 Loopy parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid, measured in number of regions across and down. For " -"square grids, it's clear how this is counted; for other types of " -"grid you may have to think a bit to see how the dimensions are " -"measured. " -"\n" -"_Grid type_ " -"\n" -"Allows you to choose between a selection of types of tiling. " -"Some have all the faces the same but may have multiple different " -"types of vertex (e.g. the _Cairo_ or _Kites_ mode); others " -"have all the vertices the same but may have different types of " -"face (e.g. the _Great Hexagonal_). The square, triangular and " -"honeycomb grids are fully regular, and have all their vertices " -"_and_ faces the same; this makes them the least confusing to " -"play. " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. " -"\n" -"#Chapter 24: Inertia " -"\n" -"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. " -"\n" -"You can move the ball in any orthogonal _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 `stops'; when " -"the ball moves on to a stop, it will stop moving no matter what " -"direction it was going in. Gems do _not_ stop the ball; it picks " -"them up and keeps on going. " -"\n" -"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. " -"\n" -"This game was originally implemented for Windows by Ben Olmstead " -"[11], who was kind enough to release his source code on request so " -"that it could be re-implemented for this collection. " -"\n" -"[11] http://xn13.com/ " -"\n" -"\n#24.1 Inertia controls " -"\n" -"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. " -"\n" -"If you use the `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, arrows will be shown only if the puzzle is still " -"solvable. " -"\n" -"All the actions described in section 2.1 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. " -"\n" -"\n#24.2 Inertia parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"#Chapter 25: Tents " -"\n" -"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: " -"\n" -"- There are exactly as many tents as trees. " -"\n" -"- 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. " -"\n" -"- No two tents are adjacent horizontally, vertically _or " -"diagonally_. " -"\n" -"- The number of tents in each row, and in each column, matches the " -"numbers given round the sides of the grid. " -"\n" -"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. " -"\n" -"\n#25.1 Tents controls " -"\n" -"Left-clicking in a blank square will place a tent in it. Right-\n" -"clicking in a blank square will colour it green, indicating that you " -"are sure it _isn't_ a tent. Clicking either button in an occupied " -"square will clear it. " -"\n" -"If you _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.) " -"\n" -"You can also use the cursor keys to move around the grid. Pressing " -"the return key over an empty square will place a tent, and pressing " -"the space bar over an empty square will colour it green; either key " -"will clear an occupied square. Holding Shift and pressing the cursor " -"keys will colour empty squares green. Holding Control and pressing " -"the cursor keys will colour green both empty squares and squares " -"with tents. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#25.2 Tents parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Difficulty_ " -"\n" -"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. " -"\n" -"#Chapter 26: Bridges " -"\n" -"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: " -"\n" -"- Bridges run horizontally or vertically. " -"\n" -"- The number of bridges terminating at any island is equal to the " -"number written in that island. " -"\n" -"- Two bridges may run in parallel between the same two islands, " -"but no more than two may do so. " -"\n" -"- No bridge crosses another bridge. " -"\n" -"- All the islands are connected together. " -"\n" -"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. " -"\n" -"Credit for this puzzle goes to Nikoli [12]. " -"\n" -"Bridges was contributed to this collection by James Harvey. " -"\n" -"[12] http://www.nikoli.co.jp/en/puzzles/hashiwokakero.html (beware " -"of Flash) " -"\n" -"\n#26.1 Bridges controls " -"\n" -"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.) " -"\n" -"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. " -"\n" -"If you want to remind yourself that two islands definitely _do not_ " -"have a bridge between them, you can right-drag between them in the " -"same way to draw a `non-bridge' marker. " -"\n" -"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. " -"\n" -"You can also use the cursor keys to move around the grid: if " -"possible the cursor will always move orthogonally, otherwise it " -"will move towards the nearest island to the indicated direction. " -"Holding Control and pressing a cursor key will lay a bridge in that " -"direction (if available); Shift and a cursor key will lay a `non-\n" -"bridge' marker. Pressing the return key followed by a cursor key " -"will also lay a bridge in that direction. " -"\n" -"You can mark an island as finished by pressing the space bar or by " -"pressing the return key twice. " -"\n" -"By pressing a number key, you can jump to the nearest island with " -"that number. Letters `a', ..., `f' count as 10, ..., 15 and `0' as " -"16. " -"\n" -"Violations of the puzzle rules will be marked in red: " -"\n" -"- An island with too many bridges will be highlighted in red. " -"\n" -"- 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. " -"\n" -"- 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. " -"\n" -"- 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. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#26.2 Bridges parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Difficulty_ " -"\n" -"Difficulty level of puzzle. " -"\n" -"_Allow loops_ " -"\n" -"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. " -"\n" -"_Max. bridges per direction_ " -"\n" -"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. " -"\n" -"_%age of island squares_ " -"\n" -"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. " -"\n" -"_Expansion factor (%age)_ " -"\n" -"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. " -"\n" -"High expansion factors usually mean easier puzzles with fewer " -"possible islands; low expansion factors can create lots of " -"tightly-packed islands. " -"\n" -"#Chapter 27: Unequal " -"\n" -"You have a square grid; each square may contain a digit from 1 to " -"the size of the grid, and some squares have clue signs between them. " -"Your aim is to fully populate the grid with numbers such that: " -"\n" -"- Each row contains only one occurrence of each digit " -"\n" -"- Each column contains only one occurrence of each digit " -"\n" -"- All the clue signs are satisfied. " -"\n" -"There are two modes for this game, `Unequal' and `Adjacent'. " -"\n" -"In `Unequal' mode, the clue signs are greater-than symbols " -"indicating one square's value is greater than its neighbour's. In " -"this mode not all clues may be visible, particularly at higher " -"difficulty levels. " -"\n" -"In `Adjacent' mode, the clue signs are bars indicating one square's " -"value is numerically adjacent (i.e. one higher or one lower) than " -"its neighbour. In this mode all clues are always visible: absence of " -"a bar thus means that a square's value is definitely not numerically " -"adjacent to that neighbour's. " -"\n" -"In `Trivial' difficulty level (available via the `Custom' game type " -"selector), there are no greater-than signs in `Unequal' mode; the " -"puzzle is to solve the Latin square only. " -"\n" -"At the time of writing, the `Unequal' mode of this puzzle is " -"appearing in the Guardian weekly under the name `Futoshiki'. " -"\n" -"Unequal was contributed to this collection by James Harvey. " -"\n" -"\n#27.1 Unequal controls " -"\n" -"Unequal shares much of its control system with Solo. " -"\n" -"To play Unequal, 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). " -"\n" -"If you _right_-click in a square and then type a number, that " -"number will be entered in the square as a `pencil mark'. You can " -"have pencil marks for multiple numbers in the same square. Squares " -"containing filled-in numbers cannot also contain pencil marks. " -"\n" -"The game pays no attention to pencil marks, so exactly what you " -"use them for is up to you: you can use them as reminders that a " -"particular square needs to be re-examined once you know more about " -"a particular number, or you can use them as lists of the possible " -"numbers in a given square, or anything else you feel like. " -"\n" -"To erase a single pencil mark, right-click in the square and type " -"the same number again. " -"\n" -"All pencil marks in a square are erased when you left-click and type " -"a number, or when you left-click and press space. Right-clicking and " -"pressing space will also erase pencil marks. " -"\n" -"As for Solo, the cursor keys can be used in conjunction with the " -"digit keys to set numbers or pencil marks. You can also use the `M' " -"key to auto-fill every numeric hint, ready for removal as required, " -"or the `H' key to do the same but also to remove all obvious hints. " -"\n" -"Alternatively, use the cursor keys to move the mark around the grid. " -"Pressing the return key toggles the mark (from a normal mark to a " -"pencil mark), and typing a number in is entered in the square in the " -"appropriate way; typing in a 0 or using the space bar will clear a " -"filled square. " -"\n" -"Left-clicking a clue will mark it as done (grey it out), or unmark " -"it if it is already marked. Holding Control or Shift and pressing " -"an arrow key likewise marks any clue adjacent to the cursor in the " -"given direction. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#27.2 Unequal parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Mode_ " -"\n" -"Mode of the puzzle (`Unequal' or `Adjacent') " -"\n" -"_Size (s*s)_ " -"\n" -"Size of grid. " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. At Trivial " -"level, there are no greater-than signs; the puzzle is to solve " -"the Latin square only. At Recursive level (only available via " -"the `Custom' game type selector) backtracking will be required, " -"but the solution should still be unique. The levels in between " -"require increasingly complex reasoning to avoid having to " -"backtrack. " -"\n" -"#Chapter 28: Galaxies " -"\n" -"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-degree rotationally " -"symmetric, and contains exactly one dot which is located at its " -"centre of symmetry. " -"\n" -"This puzzle was invented by Nikoli [13], under the name `Tentai " -"Show'; its name is commonly translated into English as `Spiral " -"Galaxies'. " -"\n" -"Galaxies was contributed to this collection by James Harvey. " -"\n" -"[13] http://www.nikoli.co.jp/en/puzzles/astronomical_show.html " -"\n" -"\n#28.1 Galaxies controls " -"\n" -"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-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. " -"\n" -"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.) " -"\n" -"You can also use the cursor keys to move around the grid squares and " -"lines. Pressing the return key when over a grid line will draw or " -"clear its edge, as above. Pressing the return key when over a dot " -"will pick up an arrow, to be dropped the next time the return key " -"is pressed; this can also be used to move existing arrows around, " -"removing them by dropping them on a dot or another arrow. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#28.2 Galaxies parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. More difficult " -"puzzles require more complex deductions, and the `Unreasonable' " -"difficulty level may require backtracking. " -"\n" -"#Chapter 29: Filling " -"\n" -"You have a grid of squares, some of which contain digits, and the " -"rest of which are empty. Your job is to fill in digits in the empty " -"squares, in such a way that each connected region of squares all " -"containing the same digit has an area equal to that digit. " -"\n" -"(`Connected region', for the purposes of this game, does not count " -"diagonally separated squares as adjacent.) " -"\n" -"For example, it follows that no square can contain a zero, and that " -"two adjacent squares can not both contain a one. No region has an " -"area greater than 9 (because then its area would not be a single " -"digit). " -"\n" -"Credit for this puzzle goes to Nikoli [14]. " -"\n" -"Filling was contributed to this collection by Jonas Koelker. " -"\n" -"[14] http://www.nikoli.co.jp/en/puzzles/fillomino.html " -"\n" -"\n#29.1 Filling controls " -"\n" -"To play Filling, simply click the mouse in any empty square and " -"then type a digit on the keyboard to fill that square. By dragging " -"the mouse, you can select multiple squares to fill with a single " -"keypress. If you make a mistake, click the mouse in the incorrect " -"square and press 0, Space, Backspace or Enter to clear it again (or " -"use the Undo feature). " -"\n" -"You can also move around the grid with the cursor keys; typing a " -"digit will fill the square containing the cursor with that number; " -"typing 0 will clear it. You can also select multiple squares for " -"numbering or clearing with the return and arrow keys, before typing " -"a digit to fill or clear the highlighted squares (as above). The " -"space bar adds and removes single squares to and from the selection. " -"Backspace and escape remove all squares from the selection. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#29.2 Filling parameters " -"\n" -"Filling allows you to configure the number of rows and columns of " -"the grid, through the `Type' menu. " -"\n" -"#Chapter 30: Keen " -"\n" -"You have a square grid; each square may contain a digit from 1 to " -"the size of the grid. The grid is divided into blocks of varying " -"shape and size, with arithmetic clues written in them. Your aim is " -"to fully populate the grid with digits such that: " -"\n" -"- Each row contains only one occurrence of each digit " -"\n" -"- Each column contains only one occurrence of each digit " -"\n" -"- The digits in each block can be combined to form the number " -"stated in the clue, using the arithmetic operation given in the " -"clue. That is: " -"\n" -"- An addition clue means that the sum of the digits in the " -"block must be the given number. For example, `15+' means the " -"contents of the block adds up to fifteen. " -"\n" -"- A multiplication clue (e.g. `60*'), similarly, means that " -"the product of the digits in the block must be the given " -"number. " -"\n" -"- A subtraction clue will always be written in a block of " -"size two, and it means that one of the digits in the block " -"is greater than the other by the given amount. For example, " -"`2-' means that one of the digits in the block is 2 more " -"than the other, or equivalently that one digit minus the " -"other one is 2. The two digits could be either way round, " -"though. " -"\n" -"- A division clue (e.g. `3/'), similarly, is always in a block " -"of size two and means that one digit divided by the other is " -"equal to the given amount. " -"\n" -"Note that a block may contain the same digit more than once " -"(provided the identical ones are not in the same row and " -"column). This rule is precisely the opposite of the rule in " -"Solo's `Killer' mode (see chapter 11). " -"\n" -"This puzzle appears in the Times under the name `KenKen'. " -"\n" -"\n#30.1 Keen controls " -"\n" -"Keen shares much of its control system with Solo (and Unequal). " -"\n" -"To play Keen, simply click the mouse in any empty square and then " -"type a digit 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). " -"\n" -"If you _right_-click in a square and then type a number, that " -"number will be entered in the square as a `pencil mark'. You can " -"have pencil marks for multiple numbers in the same square. Squares " -"containing filled-in numbers cannot also contain pencil marks. " -"\n" -"The game pays no attention to pencil marks, so exactly what you " -"use them for is up to you: you can use them as reminders that a " -"particular square needs to be re-examined once you know more about " -"a particular number, or you can use them as lists of the possible " -"numbers in a given square, or anything else you feel like. " -"\n" -"To erase a single pencil mark, right-click in the square and type " -"the same number again. " -"\n" -"All pencil marks in a square are erased when you left-click and type " -"a number, or when you left-click and press space. Right-clicking and " -"pressing space will also erase pencil marks. " -"\n" -"As for Solo, the cursor keys can be used in conjunction with the " -"digit keys to set numbers or pencil marks. Use the cursor keys to " -"move a highlight around the grid, and type a digit to enter it in " -"the highlighted square. Pressing return toggles the highlight into a " -"mode in which you can enter or remove pencil marks. " -"\n" -"Pressing M will fill in a full set of pencil marks in every square " -"that does not have a main digit in it. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#30.2 Keen parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Grid size_ " -"\n" -"Specifies the size of the grid. Lower limit is 3; upper limit is " -"9 (because the user interface would become more difficult with " -"`digits' bigger than 9!). " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. At Unreasonable " -"level, some backtracking will be required, but the solution " -"should still be unique. The remaining levels require " -"increasingly complex reasoning to avoid having to backtrack. " -"\n" -"_Multiplication only_ " -"\n" -"If this is enabled, all boxes will be multiplication boxes. With " -"this rule, the puzzle is known as `Inshi No Heya'. " -"\n" -"#Chapter 31: Towers " -"\n" -"You have a square grid. On each square of the grid you can build " -"a tower, with its height ranging from 1 to the size of the grid. " -"Around the edge of the grid are some numeric clues. " -"\n" -"Your task is to build a tower on every square, in such a way that: " -"\n" -"- Each row contains every possible height of tower once " -"\n" -"- Each column contains every possible height of tower once " -"\n" -"- Each numeric clue describes the number of towers that can be " -"seen if you look into the square from that direction, assuming " -"that shorter towers are hidden behind taller ones. For example, " -"in a 5x5 grid, a clue marked `5' indicates that the five tower " -"heights must appear in increasing order (otherwise you would " -"not be able to see all five towers), whereas a clue marked `1' " -"indicates that the tallest tower (the one marked 5) must come " -"first. " -"\n" -"In harder or larger puzzles, some towers will be specified for you " -"as well as the clues round the edge, and some edge clues may be " -"missing. " -"\n" -"This puzzle appears on the web under various names, particularly " -"`Skyscrapers', but I don't know who first invented it. " -"\n" -"\n#31.1 Towers controls " -"\n" -"Towers shares much of its control system with Solo, Unequal and " -"Keen. " -"\n" -"To play Towers, simply click the mouse in any empty square and then " -"type a digit on the keyboard to fill that square with a tower of " -"the given height. If you make a mistake, click the mouse in the " -"incorrect square and press Space to clear it again (or use the Undo " -"feature). " -"\n" -"If you _right_-click in a square and then type a number, that " -"number will be entered in the square as a `pencil mark'. You can " -"have pencil marks for multiple numbers in the same square. A square " -"containing a tower cannot also contain pencil marks. " -"\n" -"The game pays no attention to pencil marks, so exactly what you " -"use them for is up to you: you can use them as reminders that a " -"particular square needs to be re-examined once you know more about " -"a particular number, or you can use them as lists of the possible " -"numbers in a given square, or anything else you feel like. " -"\n" -"To erase a single pencil mark, right-click in the square and type " -"the same number again. " -"\n" -"All pencil marks in a square are erased when you left-click and type " -"a number, or when you left-click and press space. Right-clicking and " -"pressing space will also erase pencil marks. " -"\n" -"As for Solo, the cursor keys can be used in conjunction with the " -"digit keys to set numbers or pencil marks. Use the cursor keys to " -"move a highlight around the grid, and type a digit to enter it in " -"the highlighted square. Pressing return toggles the highlight into a " -"mode in which you can enter or remove pencil marks. " -"\n" -"Pressing M will fill in a full set of pencil marks in every square " -"that does not have a main digit in it. " -"\n" -"Left-clicking a clue will mark it as done (grey it out), or unmark " -"it if it is already marked. Holding Control or Shift and pressing an " -"arrow key likewise marks any clue in the given direction. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#31.2 Towers parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Grid size_ " -"\n" -"Specifies the size of the grid. Lower limit is 3; upper limit is " -"9 (because the user interface would become more difficult with " -"`digits' bigger than 9!). " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. At Unreasonable " -"level, some backtracking will be required, but the solution " -"should still be unique. The remaining levels require " -"increasingly complex reasoning to avoid having to backtrack. " -"\n" -"#Chapter 32: Singles " -"\n" -"You have a grid of white squares, all of which contain numbers. Your " -"task is to colour some of the squares black (removing the number) so " -"as to satisfy all of the following conditions: " -"\n" -"- No number occurs more than once in any row or column. " -"\n" -"- No black square is horizontally or vertically adjacent to any " -"other black square. " -"\n" -"- The remaining white squares must all form one contiguous region " -"(connected by edges, not just touching at corners). " -"\n" -"Credit for this puzzle goes to Nikoli [15] who call it Hitori. " -"\n" -"Singles was contributed to this collection by James Harvey. " -"\n" -"[15] http://www.nikoli.com/en/puzzles/hitori.html (beware of Flash) " -"\n" -"\n#32.1 Singles controls " -"\n" -"Left-clicking on an empty square will colour it black; left-clicking " -"again will restore the number. Right-clicking will add a circle " -"(useful for indicating that a cell is definitely not black). " -"\n" -"You can also use the cursor keys to move around the grid. Pressing " -"the return or space keys will turn a square black or add a circle " -"respectively, and pressing the key again will restore the number or " -"remove the circle. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#32.2 Singles parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. " -"\n" -"#Chapter 33: Magnets " -"\n" -"A rectangular grid has been filled with a mixture of magnets (that " -"is, dominoes with one positive end and one negative end) and blank " -"dominoes (that is, dominoes with two neutral poles). These dominoes " -"are initially only seen in silhouette. Around the grid are placed a " -"number of clues indicating the number of positive and negative poles " -"contained in certain columns and rows. " -"\n" -"Your aim is to correctly place the magnets and blank dominoes such " -"that all the clues are satisfied, with the additional constraint " -"that no two similar magnetic poles may be orthogonally adjacent " -"(since they repel). Neutral poles do not repel, and can be adjacent " -"to any other pole. " -"\n" -"Credit for this puzzle goes to Janko [16]. " -"\n" -"Magnets was contributed to this collection by James Harvey. " -"\n" -"[16] http://www.janko.at/Raetsel/Magnete/index.htm " -"\n" -"\n#33.1 Magnets controls " -"\n" -"Left-clicking on an empty square places a magnet at that position " -"with the positive pole on the square and the negative pole on the " -"other half of the magnet; left-clicking again reverses the polarity, " -"and a third click removes the magnet. " -"\n" -"Right-clicking on an empty square places a blank domino there. " -"Right-clicking again places two question marks on the domino, " -"signifying `this cannot be blank' (which can be useful to note " -"deductions while solving), and right-clicking again empties the " -"domino. " -"\n" -"Left-clicking a clue will mark it as done (grey it out), or unmark " -"it if it is already marked. " -"\n" -"You can also use the cursor keys to move a cursor around the grid. " -"Pressing the return key will lay a domino with a positive pole at " -"that position; pressing again reverses the polarity and then removes " -"the domino, as with left-clicking. Using the space bar allows " -"placement of blank dominoes and cannot-be-blank hints, as for right-\n" -"clicking. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#33.2 Magnets parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. There will be half _Width_ x _Height_ " -"dominoes in the grid: if this number is odd then one square will " -"be blank. " -"\n" -"(Grids with at least one odd dimension tend to be easier to " -"solve.) " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. At Tricky " -"level, you are required to make more deductions about empty " -"dominoes and row/column counts. " -"\n" -"_Strip clues_ " -"\n" -"If true, some of the clues around the grid are removed at " -"generation time, making the puzzle more difficult. " -"\n" -"#Chapter 34: Signpost " -"\n" -"You have a grid of squares; each square (except the last one) " -"contains an arrow, and some squares also contain numbers. Your job " -"is to connect the squares to form a continuous list of numbers " -"starting at 1 and linked in the direction of the arrows - so the " -"arrow inside the square with the number 1 will point to the square " -"containing the number 2, which will point to the square containing " -"the number 3, etc. Each square can be any distance away from the " -"previous one, as long as it is somewhere in the direction of the " -"arrow. " -"\n" -"By convention the first and last numbers are shown; one or more " -"interim numbers may also appear at the beginning. " -"\n" -"Credit for this puzzle goes to Janko [17], who call it `Pfeilpfad' " -"(`arrow path'). " -"\n" -"Signpost was contributed to this collection by James Harvey. " -"\n" -"[17] http://janko.at/Raetsel/Pfeilpfad/index.htm " -"\n" -"\n#34.1 Signpost controls " -"\n" -"To play Signpost, you connect squares together by dragging from " -"one square to another, indicating that they are adjacent in the " -"sequence. Drag with the left button from a square to its successor, " -"or with the right button from a square to its predecessor. " -"\n" -"If you connect together two squares in this way and one of them has " -"a number in it, the appropriate number will appear in the other " -"square. If you connect two non-numbered squares, they will be " -"assigned temporary algebraic labels: on the first occasion, they " -"will be labelled `a' and `a+1', and then `b' and `b+1', and so on. " -"Connecting more squares on to the ends of such a chain will cause " -"them all to be labelled with the same letter. " -"\n" -"When you left-click or right-click in a square, the legal squares to " -"connect it to will be shown. " -"\n" -"The arrow in each square starts off black, and goes grey once you " -"connect the square to its successor. Also, each square which needs " -"a predecessor has a small dot in the bottom left corner, which " -"vanishes once you link a square to it. So your aim is always to " -"connect a square with a black arrow to a square with a dot. " -"\n" -"To remove any links for a particular square (both incoming and " -"outgoing), left-drag it off the grid. To remove a whole chain, " -"right-drag any square in the chain off the grid. " -"\n" -"You can also use the cursor keys to move around the grid squares " -"and lines. Pressing the return key when over a square starts a link " -"operation, and pressing the return key again over a square will " -"finish the link, if allowable. Pressing the space bar over a square " -"will show the other squares pointing to it, and allow you to form a " -"backward link, and pressing the space bar again cancels this. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#34.2 Signpost parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Force start/end to corners_ " -"\n" -"If true, the start and end squares are always placed in opposite " -"corners (the start at the top left, and the end at the bottom " -"right). If false the start and end squares are placed randomly " -"(although always both shown). " -"\n" -"#Chapter 35: Range " -"\n" -"You have a grid of squares; some squares contain numbers. Your job " -"is to colour some of the squares black, such that several criteria " -"are satisfied: " -"\n" -"- no square with a number is coloured black. " -"\n" -"- no two black squares are adjacent (horizontally or vertically). " -"\n" -"- for any two white squares, there is a path between them using " -"only white squares. " -"\n" -"- for each square with a number, that number denotes the total " -"number of white squares reachable from that square going in a " -"straight line in any horizontal or vertical direction until " -"hitting a wall or a black square; the square with the number is " -"included in the total (once). " -"\n" -"For instance, a square containing the number one must have four " -"black squares as its neighbours by the last criterion; but then it's " -"impossible for it to be connected to any outside white square, which " -"violates the second to last criterion. So no square will contain the " -"number one. " -"\n" -"Credit for this puzzle goes to Nikoli, who have variously called it " -"`Kurodoko', `Kuromasu' or `Where is Black Cells'. [18]. " -"\n" -"Range was contributed to this collection by Jonas Koelker. " -"\n" -"[18] http://www.nikoli.co.jp/en/puzzles/where_is_black_cells.html " -"\n" -"\n#35.1 Range controls " -"\n" -"Click with the left button to paint a square black, or with the " -"right button to mark a square with a dot to indicate that you are " -"sure it should _not_ be painted black. Repeated clicking with either " -"button will cycle the square through the three possible states " -"(filled, dotted or empty) in opposite directions. " -"\n" -"You can also use the cursor keys to move around the grid squares. " -"Pressing Return does the same as clicking with the left button, " -"while pressing Space does the same as a right button click. Moving " -"with the cursor keys while holding Shift will place dots in all " -"squares that are moved through. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#35.2 Range parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"#Chapter 36: Pearl " -"\n" -"You have a grid of squares. Your job is to draw lines between the " -"centres of horizontally or vertically adjacent squares, so that the " -"lines form a single closed loop. In the resulting grid, some of the " -"squares that the loop passes through will contain corners, and some " -"will be straight horizontal or vertical lines. (And some squares can " -"be completely empty - the loop doesn't have to pass through every " -"square.) " -"\n" -"Some of the squares contain black and white circles, which are clues " -"that the loop must satisfy. " -"\n" -"A black circle in a square indicates that that square is a corner, " -"but neither of the squares adjacent to it in the loop is also a " -"corner. " -"\n" -"A white circle indicates that the square is a straight edge, but _at " -"least one_ of the squares adjacent to it in the loop is a corner. " -"\n" -"(In both cases, the clue only constrains the two squares adjacent " -"_in the loop_, that is, the squares that the loop passes into after " -"leaving the clue square. The squares that are only adjacent _in the " -"grid_ are not constrained.) " -"\n" -"Credit for this puzzle goes to Nikoli, who call it `Masyu'. [19] " -"\n" -"Thanks to James Harvey for assistance with the implementation. " -"\n" -"[19] http://www.nikoli.co.jp/en/puzzles/masyu.html (beware of Flash) " -"\n" -"\n#36.1 Pearl controls " -"\n" -"Click with the left button on a grid edge to draw a segment of the " -"loop through that edge, or to remove a segment once it is drawn. " -"\n" -"Drag with the left button through a series of squares to draw more " -"than one segment of the loop in one go. Alternatively, drag over an " -"existing part of the loop to undraw it, or to undraw part of it and " -"then go in a different direction. " -"\n" -"Click with the right button on a grid edge to mark it with a cross, " -"indicating that you are sure the loop does not go through that edge. " -"(For instance, if you have decided which of the squares adjacent " -"to a white clue has to be a corner, but don't yet know which way " -"the corner turns, you might mark the one way it _can't_ go with a " -"cross.) " -"\n" -"Alternatively, use the cursor keys to move the cursor. Use the Enter " -"key to begin and end keyboard `drag' operations. Use the Space, " -"Escape or Backspace keys to cancel the drag. Or, hold Control while " -"dragging with the cursor keys to toggle segments as you move between " -"squares. " -"\n" -"Pressing Control-Shift-arrowkey or Shift-arrowkey simulates a left " -"or right click, respectively, on the edge in the direction of the " -"key. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#36.2 Pearl parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"#Chapter 37: Undead " -"\n" -"You are given a grid of squares, some of which contain diagonal " -"mirrors. Every square which is not a mirror must be filled with one " -"of three types of undead monster: a ghost, a vampire, or a zombie. " -"\n" -"Vampires can be seen directly, but are invisible when reflected in " -"mirrors. Ghosts are the opposite way round: they can be seen in " -"mirrors, but are invisible when looked at directly. Zombies are " -"visible by any means. " -"\n" -"You are also told the total number of each type of monster in the " -"grid. Also around the edge of the grid are written numbers, which " -"indicate how many monsters can be seen if you look into the grid " -"along a row or column starting from that position. (The diagonal " -"mirrors are reflective on both sides. If your reflected line of " -"sight crosses the same monster more than once, the number will count " -"it each time it is visible, not just once.) " -"\n" -"This puzzle type was invented by David Millar, under the name " -"`Haunted Mirror Maze'. See [20] for more details. " -"\n" -"Undead was contributed to this collection by Steffen Bauer. " -"\n" -"[20] http://www.janko.at/Raetsel/Spukschloss/index.htm " -"\n" -"\n#37.1 Undead controls " -"\n" -"Undead has a similar control system to Solo, Unequal and Keen. " -"\n" -"To play Undead, click the mouse in any empty square and then type " -"a letter on the keyboard indicating the type of monster: `G' for " -"a ghost, `V' for a vampire, or `Z' for a zombie. If you make a " -"mistake, click the mouse in the incorrect square and press Space to " -"clear it again (or use the Undo feature). " -"\n" -"If you _right_-click in a square and then type a letter, the " -"corresponding monster will be shown in reduced size in that square, " -"as a `pencil mark'. You can have pencil marks for multiple monsters " -"in the same square. A square containing a full-size monster cannot " -"also contain pencil marks. " -"\n" -"The game pays no attention to pencil marks, so exactly what you " -"use them for is up to you: you can use them as reminders that a " -"particular square needs to be re-examined once you know more about " -"a particular monster, or you can use them as lists of the possible " -"monster in a given square, or anything else you feel like. " -"\n" -"To erase a single pencil mark, right-click in the square and type " -"the same letter again. " -"\n" -"All pencil marks in a square are erased when you left-click and type " -"a monster letter, or when you left-click and press Space. Right-\n" -"clicking and pressing space will also erase pencil marks. " -"\n" -"As for Solo, the cursor keys can be used in conjunction with the " -"letter keys to place monsters or pencil marks. Use the cursor keys " -"to move a highlight around the grid, and type a monster letter to " -"enter it in the highlighted square. Pressing return toggles the " -"highlight into a mode in which you can enter or remove pencil marks. " -"\n" -"If you prefer plain letters of the alphabet to cute monster " -"pictures, you can press `A' to toggle between showing the monsters " -"as monsters or showing them as letters. " -"\n" -"Left-clicking a clue will mark it as done (grey it out), or unmark " -"it if it is already marked. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#37.2 Undead parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. " -"\n" -"#Chapter 38: Unruly " -"\n" -"You are given a grid of squares, which you must colour either black " -"or white. Some squares are provided as clues; the rest are left for " -"you to fill in. Each row and column must contain the same number " -"of black and white squares, and no row or column may contain three " -"consecutive squares of the same colour. " -"\n" -"This puzzle type was invented by Adolfo Zanellati, under the name " -"`Tohu wa Vohu'. See [21] for more details. " -"\n" -"Unruly was contributed to this collection by Lennard Sprong. " -"\n" -"[21] http://www.janko.at/Raetsel/Tohu-Wa-Vohu/index.htm " -"\n" -"\n#38.1 Unruly controls " -"\n" -"To play Unruly, click the mouse in a square to change its colour. " -"Left-clicking an empty square will turn it black, and right-clicking " -"will turn it white. Keep clicking the same button to cycle through " -"the three possible states for the square. If you middle-click in a " -"square it will be reset to empty. " -"\n" -"You can also use the cursor keys to move around the grid. Pressing " -"the return or space keys will turn an empty square black or white " -"respectively (and then cycle the colours in the same way as the " -"mouse buttons), and pressing Backspace will reset a square to empty. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#38.2 Unruly parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. (Note that the rules of the game " -"require both the width and height to be even numbers.) " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle. " -"\n" -"_Unique rows and columns_ " -"\n" -"If enabled, no two rows are permitted to have exactly the same " -"pattern, and likewise columns. (A row and a column can match, " -"though.) " -"\n" -"#Chapter 39: Flood " -"\n" -"You are given a grid of squares, coloured at random in multiple " -"colours. In each move, you can flood-fill the top left square in a " -"colour of your choice (i.e. every square reachable from the starting " -"square by an orthogonally connected path of squares all the same " -"colour will be filled in the new colour). As you do this, more and " -"more of the grid becomes connected to the starting square. " -"\n" -"Your aim is to make the whole grid the same colour, in as few moves " -"as possible. The game will set a limit on the number of moves, based " -"on running its own internal solver. You win if you can make the " -"whole grid the same colour in that many moves or fewer. " -"\n" -"I saw this game (with a fixed grid size, fixed number of colours, " -"and fixed move limit) at http://floodit.appspot.com (no longer " -"accessible). " -"\n" -"\n#39.1 Flood controls " -"\n" -"To play Flood, click the mouse in a square. The top left corner and " -"everything connected to it will be flood-filled with the colour of " -"the square you clicked. Clicking a square the same colour as the top " -"left corner has no effect, and therefore does not count as a move. " -"\n" -"You can also use the cursor keys to move a cursor (outline black " -"square) around the grid. Pressing the return key will fill the top " -"left corner in the colour of the square under the cursor. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#39.2 Flood parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of the grid, in squares. " -"\n" -"_Colours_ " -"\n" -"Number of colours used to fill the grid. Must be at least 3\n" -"(with two colours there would only be one legal move at any " -"stage, hence no choice to make at all), and at most 10. " -"\n" -"_Extra moves permitted_ " -"\n" -"Controls the difficulty of the puzzle, by increasing the move " -"limit. In each new grid, Flood will run an internal solver to " -"generate its own solution, and then the value in this field " -"will be added to the length of Flood's solution to generate the " -"game's move limit. So a value of 0 requires you to be just as " -"efficient as Flood's automated solver, and a larger value makes " -"it easier. " -"\n" -"(Note that Flood's internal solver will not necessarily find the " -"shortest possible solution, though I believe it's pretty close. " -"For a real challenge, set this value to 0 and then try to solve " -"a grid in _strictly fewer_ moves than the limit you're given!) " -"\n" -"#Chapter 40: Tracks " -"\n" -"You are given a grid of squares, some of which are filled with train " -"tracks. You need to complete the track from A to B so that the " -"rows and columns contain the same number of track segments as are " -"indicated in the clues to the top and right of the grid. " -"\n" -"There are only straight and 90 degree curved rails, and the track " -"may not cross itself. " -"\n" -"Tracks was contributed to this collection by James Harvey. " -"\n" -"\n#40.1 Tracks controls " -"\n" -"Left-clicking on an edge between two squares adds a track segment " -"between the two squares. Right-clicking on an edge adds a cross on " -"the edge, indicating no track is possible there. " -"\n" -"Left-clicking in a square adds a colour indicator showing that " -"you know the square must contain a track, even if you don't know " -"which edges it crosses yet. Right-clicking in a square adds a cross " -"indicating it contains no track segment. " -"\n" -"Left- or right-dragging between squares allows you to lay a straight " -"line of is-track or is-not-track indicators, useful for filling in " -"rows or columns to match the clue. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#40.2 Tracks parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of the grid, in squares. " -"\n" -"_Difficulty_ " -"\n" -"Controls the difficulty of the generated puzzle: at Tricky " -"level, you are required to make more deductions regarding " -"disregarding moves that would lead to impossible crossings " -"later. " -"\n" -"_Disallow consecutive 1 clues_ " -"\n" -"Controls whether the Tracks game generation permits two adjacent " -"rows or columns to have a 1 clue, or permits the row or column " -"of the track's endpoint to have a 1 clue. By default this is " -"not permitted, to avoid long straight boring segments of track " -"and make the games more twiddly and interesting. If you want to " -"restore the possibility, turn this option off. " -"\n" -"#Chapter 41: Palisade " -"\n" -"You're given a grid of squares, some of which contain numbers. Your " -"goal is to subdivide the grid into contiguous regions, all of the " -"same (given) size, such that each square containing a number is " -"adjacent to exactly that many edges (including those between the " -"inside and the outside of the grid). " -"\n" -"Credit for this puzzle goes to Nikoli, who call it `Five Cells'. " -"[22]. " -"\n" -"Palisade was contributed to this collection by Jonas Koelker. " -"\n" -"[22] http://nikoli.co.jp/en/puzzles/five_cells.html " -"\n" -"\n#41.1 Palisade controls " -"\n" -"Left-click to place an edge. Right-click to indicate `no edge'. " -"Alternatively, the arrow keys will move a keyboard cursor. Holding " -"Control while pressing an arrow key will place an edge. Press Shift-\n" -"arrowkey to switch off an edge. Repeat an action to perform its " -"inverse. " -"\n" -"(All the actions described in section 2.1 are also available.) " -"\n" -"\n#41.2 Palisade parameters " -"\n" -"These parameters are available from the `Custom...' option on the " -"`Type' menu. " -"\n" -"_Width_, _Height_ " -"\n" -"Size of grid in squares. " -"\n" -"_Region size_ " -"\n" -"The size of the regions into which the grid must be subdivided. " -"\n" -; - -const int help_maxlen = 6244; -const int help_numchapters = 39; diff --git a/apps/plugins/puzzles/puzzles.make b/apps/plugins/puzzles/puzzles.make index c855600e9d..80a2aba76c 100644 --- a/apps/plugins/puzzles/puzzles.make +++ b/apps/plugins/puzzles/puzzles.make @@ -16,7 +16,10 @@ PUZZLES_SHARED_OBJ = $(call c2obj, $(PUZZLES_SHARED_SRC)) PUZZLES_GAMES_SRC = $(call preprocess, $(PUZZLES_SRCDIR)/SOURCES.games) PUZZLES_GAMES_OBJ = $(call c2obj, $(PUZZLES_GAMES_SRC)) -PUZZLES_SRC = $(PUZZLES_GAMES_SRC) $(PUZZLES_SHARED_SRC) +PUZZLES_HELP_SRC = $(wildcard $(PUZZLES_SRCDIR)/help/*) +PUZZLES_HELP_OBJ = $(call c2obj, $(PUZZLES_HELP_OBJ)) + +PUZZLES_SRC = $(PUZZLES_GAMES_SRC) $(PUZZLES_SHARED_SRC) $(PUZZLES_HELP_SRC) PUZZLES_OBJ = $(call c2obj, $(PUZZLES_SRC)) PUZZLES_ROCKS = $(addprefix $(PUZZLES_OBJDIR)/sgt-, $(notdir $(PUZZLES_GAMES_SRC:.c=.rock))) @@ -37,7 +40,7 @@ PUZZLESFLAGS = -I$(PUZZLES_SRCDIR)/dummy \ -DFOR_REAL -I$(PUZZLES_SRCDIR)/src -I$(PUZZLES_SRCDIR) -include \ $(PUZZLES_SRCDIR)/rbcompat.h -$(PUZZLES_OBJDIR)/sgt-%.rock: $(PUZZLES_OBJDIR)/src/%.o $(PUZZLES_SHARED_OBJ) $(TLSFLIB) +$(PUZZLES_OBJDIR)/sgt-%.rock: $(PUZZLES_OBJDIR)/src/%.o $(PUZZLES_OBJDIR)/help/%.o $(PUZZLES_SHARED_OBJ) $(TLSFLIB) $(call PRINTS,LD $(@F))$(CC) $(PLUGINFLAGS) -o $(PUZZLES_OBJDIR)/$*.elf \ $(filter %.o, $^) \ $(filter %.a, $+) \ diff --git a/apps/plugins/puzzles/rockbox.c b/apps/plugins/puzzles/rockbox.c index eee85b72d0..45e0df7edb 100644 --- a/apps/plugins/puzzles/rockbox.c +++ b/apps/plugins/puzzles/rockbox.c @@ -23,6 +23,7 @@ #include "plugin.h" +#include "help.h" #include "keymaps.h" #include "src/puzzles.h" @@ -34,6 +35,9 @@ /* how many ticks between timer callbacks */ #define TIMER_INTERVAL (HZ / 50) + +#define DEBUG_MENU + #define BG_R .9f /* very light gray */ #define BG_G .9f #define BG_B .9f @@ -61,7 +65,7 @@ static unsigned *colors = NULL; static int ncolors = 0; static long last_keystate = 0; -#ifdef FOR_REAL +#if defined(FOR_REAL) && defined(DEBUG_MENU) /* the "debug menu" is hidden by default in order to avoid the * naturally ensuing complaints from users */ static bool debug_mode = false; @@ -743,7 +747,7 @@ void fatal(char *fmt, ...) { va_list ap; - rb->splash(HZ, "FATAL ERROR"); + rb->splash(HZ, "FATAL"); va_start(ap, fmt); char buf[80]; @@ -1034,53 +1038,9 @@ static bool presets_menu(void) return do_preset_menu(midend_get_presets(me, NULL), NULL, sel) >= 0; } -static const struct { - const char *game, *help; -} quick_help_text[] = { - { "Black Box", "Find the hidden balls in the box by bouncing laser beams off them." }, - { "Bridges", "Connect all the islands with a network of bridges." }, - { "Cube", "Pick up all the blue squares by rolling the cube over them." }, - { "Dominosa", "Tile the rectangle with a full set of dominoes." }, - { "Fifteen", "Slide the tiles around to arrange them into order." }, - { "Filling", "Mark every square with the area of its containing region." }, - { "Flip", "Flip groups of squares to light them all up at once." }, - { "Flood", "Turn the grid the same colour in as few flood fills as possible." }, - { "Galaxies", "Divide the grid into rotationally symmetric regions each centred on a dot." }, - { "Guess", "Guess the hidden combination of colours." }, - { "Inertia", "Collect all the gems without running into any of the mines." }, - { "Keen", "Complete the latin square in accordance with the arithmetic clues." }, - { "Light Up", "Place bulbs to light up all the squares." }, - { "Loopy", "Draw a single closed loop, given clues about number of adjacent edges." }, - { "Magnets", "Place magnets to satisfy the clues and avoid like poles touching." }, - { "Map", "Colour the map so that adjacent regions are never the same colour." }, - { "Mines", "Find all the mines without treading on any of them." }, - { "Net", "Rotate each tile to reassemble the network." }, - { "Netslide", "Slide a row at a time to reassemble the network." }, - { "Palisade", "Divide the grid into equal-sized areas in accordance with the clues." }, - { "Pattern", "Fill in the pattern in the grid, given only the lengths of runs of black squares." }, - { "Pearl", "Draw a single closed loop, given clues about corner and straight squares." }, - { "Pegs", "Jump pegs over each other to remove all but one." }, - { "Range", "Place black squares to limit the visible distance from each numbered cell." }, - { "Rectangles", "Divide the grid into rectangles with areas equal to the numbers." }, - { "Same Game", "Clear the grid by removing touching groups of the same colour squares." }, - { "Signpost", "Connect the squares into a path following the arrows." }, - { "Singles", "Black out the right set of duplicate numbers." }, - { "Sixteen", "Slide a row at a time to arrange the tiles into order." }, - { "Slant", "Draw a maze of slanting lines that matches the clues." }, - { "Solo", "Fill in the grid so that each row, column and square block contains one of every digit." }, - { "Tents", "Place a tent next to each tree." }, - { "Towers", "Complete the latin square of towers in accordance with the clues." }, - { "Tracks", "Fill in the railway track according to the clues." }, - { "Twiddle", "Rotate the tiles around themselves to arrange them into order." }, - { "Undead", "Place ghosts, vampires and zombies so that the right numbers of them can be seen in mirrors." }, - { "Unequal", "Complete the latin square in accordance with the > signs." }, - { "Unruly", "Fill in the black and white grid to avoid runs of three." }, - { "Untangle", "Reposition the points so that the lines do not cross." }, -}; - static void quick_help(void) { -#ifdef FOR_REAL +#if defined(FOR_REAL) && defined(DEBUG_MENU) if(++help_times >= 5) { rb->splash(HZ, "You are now a developer!"); @@ -1088,26 +1048,11 @@ static void quick_help(void) } #endif - for(int i = 0; i < ARRAYLEN(quick_help_text); ++i) - { - if(!strcmp(midend_which_game(me)->name, quick_help_text[i].game)) - { - rb->splash(0, quick_help_text[i].help); - rb->button_get(true); - return; - } - } + rb->splash(0, quick_help_text); + rb->button_get(true); + return; } -#if PLUGIN_BUFFER_SIZE <= 0x14000 -/* no full help available due to memory constraints, so we provide a - * dummy function here */ -void full_help(const char *str) -{ - (void) str; -} -#endif - static void init_default_settings(void) { settings.slowmo_factor = 1; @@ -1118,6 +1063,7 @@ static void init_default_settings(void) settings.no_aa = false; } +#ifdef DEBUG_MENU static void bench_aa(void) { rb->sleep(0); @@ -1202,6 +1148,7 @@ static void debug_menu(void) } } } +#endif static int pausemenu_cb(int action, const struct menu_item_ex *this_item) { @@ -1223,11 +1170,7 @@ static int pausemenu_cb(int action, const struct menu_item_ex *this_item) return ACTION_EXIT_MENUITEM; break; case 7: -#if PLUGIN_BUFFER_SIZE <= 0x14000 - return ACTION_EXIT_MENUITEM; -#else break; -#endif case 8: #ifdef COMBINED /* audio buf is used, so no playback */ @@ -1245,7 +1188,7 @@ static int pausemenu_cb(int action, const struct menu_item_ex *this_item) return ACTION_EXIT_MENUITEM; break; case 10: -#ifdef FOR_REAL +#if defined(FOR_REAL) && defined(DEBUG_MENU) if(debug_mode) break; return ACTION_EXIT_MENUITEM; @@ -1309,7 +1252,7 @@ static int pause_menu(void) rb->snprintf(title, sizeof(title), "%s Menu", midend_which_game(me)->name); menu__.desc = title; -#ifdef FOR_REAL +#if defined(FOR_REAL) && defined(DEBUG_MENU) help_times = 0; #endif @@ -1374,7 +1317,9 @@ static int pause_menu(void) } break; case 10: +#ifdef DEBUG_MENU debug_menu(); +#endif break; case 11: if(config_menu()) @@ -1819,11 +1764,7 @@ static int mainmenu_cb(int action, const struct menu_item_ex *this_item) return ACTION_EXIT_MENUITEM; break; case 3: -#if PLUGIN_BUFFER_SIZE <= 0x14000 - return ACTION_EXIT_MENUITEM; -#else break; -#endif case 4: #ifdef COMBINED /* audio buf is used, so no playback */ @@ -1892,7 +1833,7 @@ enum plugin_status plugin_start(const void *param) rb->cpu_boost(false); #endif -#ifdef FOR_REAL +#if defined(FOR_REAL) && defined(DEBUG_MENU) help_times = 0; #endif