diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2016-11-20 15:16:41 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2016-11-24 16:23:09 -0500 |
| commit | 56c9984511f016eab7e1278ba9e40d88bb59a162 (patch) | |
| tree | 1bfa6d3aeb3bf2a6ffec71387ac073cd0b8b2a51 /apps/plugins/puzzles/html | |
| parent | 29648f817677b84c03c2bcfe89eb8cf53653e7db (diff) | |
| download | rockbox-puzzles.zip rockbox-puzzles.tar.gz rockbox-puzzles.tar.bz2 rockbox-puzzles.tar.xz | |
[WIP] Port of Simon Tatham's Puzzle Collectionpuzzles
Original revision: 5123b1bf68777ffa86e651f178046b26a87cf2d9
MIT Licensed. Some games still crash and others are unplayable due to
issues with controls. Still need a "real" polygon filling algorithm.
The following games are at least partially broken for various reasons:
Cube: crash with certain settings
Galaxies: crash
Inertia: crash
Keen: input issues
Loopy: weird stuff happens
Map: crash on input
Mines: weird stuff happens on target
Palisade: input issues
Signpost: crash on input
Solo: input issues
Towers: input and drawing issues
Train Tracks: drawing issues
Twiddle: weird animation on target
Undead: input and drawing issues
Unequal: input and drawing issues
Untangle: input issues
All in all, about 40% of the games are at least partially broken.
Change-Id: I7c69b6860ab115f973c8d76799502e9bb3d52368
Diffstat (limited to '')
42 files changed, 800 insertions, 0 deletions
diff --git a/apps/plugins/puzzles/html/blackbox.html b/apps/plugins/puzzles/html/blackbox.html new file mode 100644 index 0000000..f98604f --- /dev/null +++ b/apps/plugins/puzzles/html/blackbox.html @@ -0,0 +1,16 @@ +Black Box +<p> +Determine where the hidden balls are in the box, by observing the +behaviour of light beams fired into the box from the sides. +<p> +Click in a square around the edge of the box to send a beam into the +box. Possible results are 'H' (the beam hit a ball dead-on and +stopped), 'R' (the beam was either reflected back the way it came or +there was a ball just to one side of its entry point) or a number +appearing in two squares (indicating that the beam entered one of +those squares and emerged from the other). +<p> +Click in the middle of the box to place your guessed ball positions. +When you have placed enough, a green button will appear in the top +left; click that to indicate that you think you have the answer. +You can also right-click to mark squares as definitely known. diff --git a/apps/plugins/puzzles/html/bridges.html b/apps/plugins/puzzles/html/bridges.html new file mode 100644 index 0000000..06ec2d4 --- /dev/null +++ b/apps/plugins/puzzles/html/bridges.html @@ -0,0 +1,13 @@ +Bridges +<p> +Draw horizontal or vertical bridges to link up all the islands. +Bridges may be single or double; they may not cross; the islands +must all end up connected to each other; the number in each island +must match the number of bridges that end at that island (counting +double bridges as two). Note that loops of bridges are permitted. +<p> +Click on an island and drag left, right, up or down to draw a bridge +to the next island in that direction. Do the same again to create a +double bridge, and again to remove the bridge if you change your +mind. Click on an island without dragging to mark the island as +completed once you think you have placed all its bridges. diff --git a/apps/plugins/puzzles/html/cube.html b/apps/plugins/puzzles/html/cube.html new file mode 100644 index 0000000..f08e16c --- /dev/null +++ b/apps/plugins/puzzles/html/cube.html @@ -0,0 +1,14 @@ +Cube +<p> +Roll the cube around the grid, picking up the blue squares on its +faces. Try to get all the blue squares on to the object at the same +time, in as few moves as possible. +<p> +Use the arrow keys to roll the cube, or click the mouse where you +want it to roll towards. After every roll, the grid square and cube +face that you brought into contact swap their colours, so that a +non-blue cube face can pick up a blue square, but a blue face rolled +on to a non-blue square puts it down again. +<p> +When you have mastered the cube, use the Type menu to select other +regular solids! diff --git a/apps/plugins/puzzles/html/dominosa.html b/apps/plugins/puzzles/html/dominosa.html new file mode 100644 index 0000000..d2f6728 --- /dev/null +++ b/apps/plugins/puzzles/html/dominosa.html @@ -0,0 +1,10 @@ +Dominosa +<p> +Tile the rectangle with dominoes (1×2 rectangles) so that +every possible domino appears exactly once (that is, every possible +pair of numbers, including doubles). +<p> +Click between two adjacent numbers to place or remove a domino. +Right-click to place a line between numbers if you think a domino +definitely cannot go there. Dominoes light up red if two identical +ones appear on the grid. diff --git a/apps/plugins/puzzles/html/fifteen.html b/apps/plugins/puzzles/html/fifteen.html new file mode 100644 index 0000000..53053b4 --- /dev/null +++ b/apps/plugins/puzzles/html/fifteen.html @@ -0,0 +1,6 @@ +Fifteen +<p> +Slide the tiles around the box until they appear in numerical order +from the top left, with the hole in the bottom right corner. +<p> +Click on a tile to slide it towards the hole. diff --git a/apps/plugins/puzzles/html/filling.html b/apps/plugins/puzzles/html/filling.html new file mode 100644 index 0000000..70ce16d --- /dev/null +++ b/apps/plugins/puzzles/html/filling.html @@ -0,0 +1,12 @@ +Filling +<p> +Write a number in every blank square of the grid. When the grid is +full, every orthogonally connected group of identical numbers should +have an area equal to that number: so 1s always appear alone, 2s in +pairs, and so on. +<p> +To place a number, click the mouse in a blank square to select it, +then type the number you want on the keyboard. You can also drag to +select multiple squares, and then type a number to place it in all +of them. To erase numbers, select one or more squares in the same +way and then press Backspace. diff --git a/apps/plugins/puzzles/html/flip.html b/apps/plugins/puzzles/html/flip.html new file mode 100644 index 0000000..404aae6 --- /dev/null +++ b/apps/plugins/puzzles/html/flip.html @@ -0,0 +1,10 @@ +Flip +<p> +Try to light up all the squares in the grid by flipping combinations +of them. +<p> +Click in a square to flip it and some of its neighbours. The diagram +in each square indicates which other squares will flip. +<p> +Select one of the 'Random' settings from the Type menu for more +varied puzzles. diff --git a/apps/plugins/puzzles/html/flood.html b/apps/plugins/puzzles/html/flood.html new file mode 100644 index 0000000..cf09eac --- /dev/null +++ b/apps/plugins/puzzles/html/flood.html @@ -0,0 +1,8 @@ +Flood +<p> +Try to get the whole grid to be the same colour within the given +number of moves, by repeatedly flood-filling the top left corner in +different colours. +<p> +Click in a square to flood-fill the top left corner with that square's +colour. diff --git a/apps/plugins/puzzles/html/galaxies.html b/apps/plugins/puzzles/html/galaxies.html new file mode 100644 index 0000000..8041a95 --- /dev/null +++ b/apps/plugins/puzzles/html/galaxies.html @@ -0,0 +1,11 @@ +Galaxies +<p> +Draw lines along grid edges so as to divide the grid up into +regions. Every region should have two-way rotational symmetry, and +should contain exactly one dot which is in its centre. +<p> +Click on a grid edge to add or remove a line. Right-click on a dot +and drag the mouse to place an arrow in a grid square pointing to +that dot, to indicate that you think that square must belong in the +same region as that dot. Right-drag an existing arrow to move it, or +drop it off the edge of the grid to remove it. diff --git a/apps/plugins/puzzles/html/group.html b/apps/plugins/puzzles/html/group.html new file mode 100644 index 0000000..c0f52de --- /dev/null +++ b/apps/plugins/puzzles/html/group.html @@ -0,0 +1,52 @@ +unfinished:Group +<p> +Fill in the grid with the letters shown to the top and left of it, so +that the full grid is a valid +<a href="http://en.wikipedia.org/wiki/Cayley_table">Cayley table</a> +for a +<a href="http://en.wikipedia.org/wiki/Group_(mathematics)">group</a>. +<p> +If you don't already know what a group is, I don't really recommend +trying to play this game. But if you want to try anyway, the above is +equivalent to saying that the following conditions must be satisfied: +<ul> +<li> +<strong>Latin square</strong>. Every row and column must contain +exactly one of each letter. +<li> +<strong>Identity</strong>. There must be some letter <i>e</i> such +that, for all <i>a</i>, the letter in row <i>e</i> column <i>a</i> and +the one in row <i>a</i> column <i>e</i> are both <i>a</i>. In the +default mode, this letter is always <i>e</i> and its row and column +are filled in for you; by reconfiguring the game using the Type menu, +you can select a mode in which you have to work out which letter is +the identity. +<li> +<strong>Inverses</strong>. For every letter <i>a</i>, there must be +some letter <i>b</i> (which may sometimes be the same letter +as <i>a</i>) such that the letters in row <i>a</i> column <i>b</i> and +in row <i>b</i> column <i>a</i> are both the identity letter (as +defined above). +<li> +<strong>Associativity</strong>. For every combination of +letters <i>a</i>, <i>b</i>, and <i>c</i>, denote the letter in +row <i>a</i> column <i>b</i> by <i>d</i>, and the one in row <i>b</i> +column <i>c</i> by <i>e</i>. Then the letters in row <i>d</i> +column <i>c</i> and in row <i>a</i> column <i>e</i> must be the same. +</ul> +<p> +To place a letter, click in a square to select it, then type the +letter on the keyboard. To erase a letter, click to select a square +and then press Backspace. +<p> +Right-click in a square and then type a letter to add or remove the +number as a pencil mark, indicating letters that you think +<em>might</em> go in that square. +<p> +You can rearrange the order of elements in the rows and columns by +dragging the column or row headings back and forth. (The rows and +columns will stay in sync with each other.) Also, +left-clicking <em>between</em> two row or column headings will add or +remove a thick line between those two rows and the corresponding pair +of columns (which is useful if you're considering a subgroup and its +cosets). diff --git a/apps/plugins/puzzles/html/guess.html b/apps/plugins/puzzles/html/guess.html new file mode 100644 index 0000000..1e4fc1e --- /dev/null +++ b/apps/plugins/puzzles/html/guess.html @@ -0,0 +1,12 @@ +Guess +<p> +Try to guess the hidden combination of colours. You will be given +limited information about each guess you make, enabling you to +refine the next guess. +<p> +Drag from the colours on the left into the topmost unfilled row to +make a guess; then click on the small circles to submit that guess. +The small circles give you your feedback: black pegs indicate how +many of the colours you guessed were the right colour in the right +place, and white pegs indicate how many of the rest were the right +colours but in the wrong place. diff --git a/apps/plugins/puzzles/html/inertia.html b/apps/plugins/puzzles/html/inertia.html new file mode 100644 index 0000000..20077c0 --- /dev/null +++ b/apps/plugins/puzzles/html/inertia.html @@ -0,0 +1,14 @@ +Inertia +<p> +Slide the ball around the grid picking up the gems. Every time the +ball moves, it will keep sliding until it either hits a wall, or +stops on a stop square (the broken circles). Try to collect every +gem without running into any of the mines. +<p> +Use the numeric keypad to slide the ball horizontally, vertically or +diagonally. Alternatively, click on the grid to make the ball move +towards where you clicked. +<p> +If you hit a mine and explode, you can select Undo from the Game +menu and continue playing; the game will track how many times you +died. diff --git a/apps/plugins/puzzles/html/javapage.pl b/apps/plugins/puzzles/html/javapage.pl new file mode 100755 index 0000000..cd5e6a1 --- /dev/null +++ b/apps/plugins/puzzles/html/javapage.pl @@ -0,0 +1,104 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +open my $footerfile, "<", shift @ARGV or die "footer: open: $!\n"; +my $footer = ""; +$footer .= $_ while <$footerfile>; +close $footerfile; + +for my $arg (@ARGV) { + $arg =~ /(.*\/)?([^\/]+)\.html$/ or die; + my $filename = $2; + open my $gamefile, "<", $arg or die "$arg: open: $!\n"; + my $unfinished = 0; + my $docname = $filename; + chomp(my $puzzlename = <$gamefile>); + while ($puzzlename =~ s/^([^:=]+)(=([^:]+))?://) { + if ($1 eq "unfinished") { + $unfinished = 1; + } elsif ($1 eq "docname") { + $docname = $3; + } else { + die "$arg: unknown keyword '$1'\n"; + } + } + my $instructions = ""; + $instructions .= $_ while <$gamefile>; + close $gamefile; + + open my $outpage, ">", "${filename}.html"; + + my $unfinishedtitlefragment = $unfinished ? "an unfinished puzzle " : ""; + my $unfinishedheading = $unfinished ? "<h2 align=center>an unfinished puzzle</h2>\n" : ""; + my $unfinishedpara; + my $links; + if ($unfinished) { + $unfinishedpara = <<EOF; +<p> +You have found your way to a page containing an <em>unfinished</em> +puzzle in my collection, not linked from the <a href="../">main +puzzles page</a>. Don't be surprised if things are hard to understand +or don't work as you expect. +EOF + $links = <<EOF; +<p align="center"> +<a href="../">Back to main puzzles page</a> (which does not link to this) +EOF + } else { + $unfinishedpara = ""; + $links = <<EOF; +<p align="center"> +<a href="../doc/${docname}.html#${docname}">Full instructions</a> +| +<a href="../">Back to main puzzles page</a> +EOF + } + + print $outpage <<EOF; +<html> +<head> +<title>${puzzlename}, ${unfinishedtitlefragment}from Simon Tatham's Portable Puzzle Collection</title> +<link rel="stylesheet" type="text/css" href="../../sitestyle.css" name="Simon Tatham's Home Page Style"> +<script type="text/javascript" src="resize-puzzle-applet.js"></script> +</head> +<body onLoad="initResizablePuzzleApplet();"> +<h1 align=center>${puzzlename}</h1> +${unfinishedheading} +<h2 align=center>from Simon Tatham's Portable Puzzle Collection</h2> + +${unfinishedpara} + +<p align="center"> +<table cellpadding="0"> +<tr> +<td> +<applet id="applet" archive="${filename}.jar" code="PuzzleApplet" + width="700" height="500"> +</applet> +</td> +<td> +<div id="eresize" style="width:5px;height:500px;cursor:e-resize;"></div> +</td> +</tr> +<td> +<div id="sresize" style="width:700px;height:5px;cursor:s-resize;"></div> +</td> +<td> +<div id="seresize" style="width:5px;height:5px;cursor:se-resize;"></div> +</td> +</tr> +</table> + +${instructions} + +${links} + +${footer} +</body> +</html> +EOF + + close $outpage; +} diff --git a/apps/plugins/puzzles/html/jspage.pl b/apps/plugins/puzzles/html/jspage.pl new file mode 100755 index 0000000..19868bd --- /dev/null +++ b/apps/plugins/puzzles/html/jspage.pl @@ -0,0 +1,120 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +open my $footerfile, "<", shift @ARGV or die "footer: open: $!\n"; +my $footer = ""; +$footer .= $_ while <$footerfile>; +close $footerfile; + +for my $arg (@ARGV) { + $arg =~ /(.*\/)?([^\/]+)\.html$/ or die; + my $filename = $2; + open my $gamefile, "<", $arg or die "$arg: open: $!\n"; + my $unfinished = 0; + my $docname = $filename; + chomp(my $puzzlename = <$gamefile>); + while ($puzzlename =~ s/^([^:=]+)(=([^:]+))?://) { + if ($1 eq "unfinished") { + $unfinished = 1; + } elsif ($1 eq "docname") { + $docname = $3; + } else { + die "$arg: unknown keyword '$1'\n"; + } + } + my $instructions = ""; + $instructions .= $_ while <$gamefile>; + close $gamefile; + + open my $outpage, ">", "${filename}.html"; + + my $unfinishedtitlefragment = $unfinished ? "an unfinished puzzle " : ""; + my $unfinishedheading = $unfinished ? "<h2 align=center>an unfinished puzzle</h2>\n" : ""; + my $unfinishedpara; + my $links; + if ($unfinished) { + $unfinishedpara = <<EOF; +<p> +You have found your way to a page containing an <em>unfinished</em> +puzzle in my collection, not linked from the <a href="../">main +puzzles page</a>. Don't be surprised if things are hard to understand +or don't work as you expect. +EOF + $links = <<EOF; +<p align="center"> +<a href="../">Back to main puzzles page</a> (which does not link to this) +EOF + } else { + $unfinishedpara = ""; + $links = <<EOF; +<p align="center"> +<a href="../doc/${docname}.html#${docname}">Full instructions</a> +| +<a href="../">Back to main puzzles page</a> +EOF + } + + print $outpage <<EOF; +<!DOCTYPE html> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ASCII" /> +<title>${puzzlename}, ${unfinishedtitlefragment}from Simon Tatham's Portable Puzzle Collection</title> +<script type="text/javascript" src="${filename}.js"></script> +</head> +<body onLoad="initPuzzle();"> +<h1 align=center>${puzzlename}</h1> +${unfinishedheading} +<h2 align=center>from Simon Tatham's Portable Puzzle Collection</h2> + +${unfinishedpara} + +<hr> +<div id="puzzle" style="display: none"> +<p align=center> + <input type="button" id="new" value="New game"> + <input type="button" id="restart" value="Restart game"> + <input type="button" id="undo" value="Undo move"> + <input type="button" id="redo" value="Redo move"> + <input type="button" id="solve" value="Solve game"> + <input type="button" id="specific" value="Enter game ID"> + <input type="button" id="random" value="Enter random seed"> + <select id="gametype"></select> +</p> +<div align=center> + <div id="resizable" style="position:relative; left:0; top:0"> + <canvas style="display: block" id="puzzlecanvas" width="1px" height="1px" tabindex="1"> + </canvas> + <div id="statusbarholder" style="display: block"> + </div> + </div> + <p> + Link to this puzzle: + <a id="permalink-desc">by game ID</a> + <a id="permalink-seed">by random seed</a> + </p> +</div> +</div> +<div id="apology"> +Sorry, this Javascript puzzle doesn't seem to work in your web +browser. Perhaps you have Javascript disabled, or perhaps your browser +doesn't provide a feature that the puzzle code requires (such as +<a href="https://developer.mozilla.org/en-US/docs/JavaScript/Typed_arrays">typed arrays</a>). +These puzzles have been successfully run in Firefox 19, Chrome 26, +Internet Explorer 10 and Safari 6. +</div> +<hr> + +${instructions} + +${links} + +${footer} +</body> +</html> +EOF + + close $outpage; +} diff --git a/apps/plugins/puzzles/html/keen.html b/apps/plugins/puzzles/html/keen.html new file mode 100644 index 0000000..bd0eb36 --- /dev/null +++ b/apps/plugins/puzzles/html/keen.html @@ -0,0 +1,15 @@ +Keen +<p> +Fill in the grid with digits from 1 to the grid size, so that every +digit appears exactly once in each row and column, and so that all +the arithmetic clues are satisfied (i.e. the clue number in each +thick box should be possible to construct from the digits in the box +using the specified arithmetic operation). +<p> +To place a number, click in a square to select it, then type the +number on the keyboard. To erase a number, click to select a square +and then press Backspace. +<p> +Right-click in a square and then type a number to add or remove the +number as a pencil mark, indicating numbers that you think +<em>might</em> go in that square. diff --git a/apps/plugins/puzzles/html/lightup.html b/apps/plugins/puzzles/html/lightup.html new file mode 100644 index 0000000..2de2f91 --- /dev/null +++ b/apps/plugins/puzzles/html/lightup.html @@ -0,0 +1,10 @@ +Light Up +<p> +Place light bulbs in the grid so as to light up all the blank +squares. A light illuminates its own square and all the squares in +the same row or column unless blocked by walls (black squares). +Lights may not illuminate each other. Each numbered square must be +orthogonally adjacent to exactly the given number of lights. +<p> +Click on a square to place or remove a light. Right-click to place a +dot indicating that you think there is no light in that square. diff --git a/apps/plugins/puzzles/html/loopy.html b/apps/plugins/puzzles/html/loopy.html new file mode 100644 index 0000000..96f3a9d --- /dev/null +++ b/apps/plugins/puzzles/html/loopy.html @@ -0,0 +1,13 @@ +Loopy +<p> +Form a single closed loop out of the grid edges, in such a way that +every numbered square has exactly that many of its edges included in +the loop. +<p> +Click on a grid edge to mark it as part of the loop (black), and +again to return to marking it as undecided (yellow). Right-click on +a grid edge to mark it as definitely not part of the loop (faint +grey), and again to mark it as undecided again. +<p> +When you have mastered the square grid, look in the Type menu for +many other types of tiling! diff --git a/apps/plugins/puzzles/html/magnets.html b/apps/plugins/puzzles/html/magnets.html new file mode 100644 index 0000000..2807569 --- /dev/null +++ b/apps/plugins/puzzles/html/magnets.html @@ -0,0 +1,17 @@ +Magnets +<p> +Fill each domino shape with either a magnet (consisting of a + and +− pole) or a neutral domino (green). +<p> +The number of + poles that in each row and column must match the +numbers along the top and left; the number of − poles must +match the numbers along the bottom and right. Two + poles may not be +orthogonally adjacent to each other, and similarly two − poles. +<p> +Left-click a domino to toggle it between being empty and being a +magnet (the + is placed in the end you click). Right-click to toggle +between empty, neutral, and a ?? mark indicating that you're sure +it's a magnet but don't yet know which way round it goes. +<p> +Left-click a clue to mark it as done (grey it out). To unmark a clue +as done, left-click it again. diff --git a/apps/plugins/puzzles/html/map.html b/apps/plugins/puzzles/html/map.html new file mode 100644 index 0000000..5f81793 --- /dev/null +++ b/apps/plugins/puzzles/html/map.html @@ -0,0 +1,15 @@ +Map +<p> +Colour the map with four colours, so that no two adjacent regions +have the same colour. (Regions touching at only one corner do not +count as adjacent.) There is a unique colouring consistent with the +coloured regions you are already given. +<p> +Drag from a coloured region to a blank one to colour the latter the +same colour as the former. Drag from outside the grid into a region +to erase its colour. (You cannot change the colours of the regions +you are given at the start of the game.) +<p> +Right-drag from a coloured region to a blank one to add dots marking +the latter region as <em>possibly</em> the same colour as the +former, or to remove those dots again. diff --git a/apps/plugins/puzzles/html/mines.html b/apps/plugins/puzzles/html/mines.html new file mode 100644 index 0000000..d17d6ff --- /dev/null +++ b/apps/plugins/puzzles/html/mines.html @@ -0,0 +1,18 @@ +Mines +<p> +Try to expose every square in the grid that is not one of the hidden +mines, without opening any square that is a mine. +<p> +Click in a square to open it. Every opened square are marked with +the number of mines in the surrounding 8 squares, if there are any; +if not, all the surrounding squares are automatically opened. +<p> +Right-click in a square to mark it with a flag if you think it is a +mine. If a numbered square has exactly the right number of flags +around it, you can click in it to open all the squares around it +that are not flagged. +<p> +The first square you open is guaranteed to be safe, and (by default) +you are guaranteed to be able to solve the whole grid by deduction +rather than guesswork. (Deductions may require you to think about +the total number of mines.) diff --git a/apps/plugins/puzzles/html/net.html b/apps/plugins/puzzles/html/net.html new file mode 100644 index 0000000..08bffba --- /dev/null +++ b/apps/plugins/puzzles/html/net.html @@ -0,0 +1,17 @@ +Net +<p> +Rotate the grid squares so that they all join up into a single +connected network with no loops. +<p> +Left-click in a square to rotate it anticlockwise. Right-click to +rotate it clockwise. Middle-click, or shift-left-click if you have +no middle mouse button, to lock a square once you think it is +correct (so you don't accidentally rotate it again); do the same +again to unlock it if you change your mind. +<p> +Squares connected to the middle square are lit up. Aim to light up +every square in the grid (not just the endpoint blobs). +<p> +When this gets too easy, select a 'wrapping' variant from the Type +menu to enable grid lines to run off one edge of the playing area +and come back on the opposite edge! diff --git a/apps/plugins/puzzles/html/netslide.html b/apps/plugins/puzzles/html/netslide.html new file mode 100644 index 0000000..f187741 --- /dev/null +++ b/apps/plugins/puzzles/html/netslide.html @@ -0,0 +1,14 @@ +Netslide +<p> +Slide the grid squares around so that they all join up into a single +connected network with no loops. +<p> +Click on the arrows at the edges of the grid to move a row or column +left, right, up or down. The square that falls off the end of the +row comes back on the other end. +<p> +Squares connected to the middle square are lit up. Aim to light up +every square in the grid (not just the endpoint blobs). +<p> +Connecting across a red barrier line is forbidden. On harder levels, +there are fewer barriers, which makes it harder rather than easier! diff --git a/apps/plugins/puzzles/html/palisade.html b/apps/plugins/puzzles/html/palisade.html new file mode 100644 index 0000000..5b6b933 --- /dev/null +++ b/apps/plugins/puzzles/html/palisade.html @@ -0,0 +1,11 @@ +Palisade +<p> +Draw lines along the grid edges, in such a way that the grid is +divided into connected regions, all of the size shown in the status +line. Also, each square containing a number should have that many of +its edges drawn in. +<p> +Click on a grid edge to mark it as a division between regions (black), +and again to return to marking it as undecided (yellow). Right-click +on a grid edge to mark it as definitely not part of the loop (faint +grey), and again to mark it as undecided again. diff --git a/apps/plugins/puzzles/html/pattern.html b/apps/plugins/puzzles/html/pattern.html new file mode 100644 index 0000000..54e05d6 --- /dev/null +++ b/apps/plugins/puzzles/html/pattern.html @@ -0,0 +1,12 @@ +Pattern +<p> +Fill in the grid with a pattern of black and white squares, so that +the numbers in each row and column match the lengths of consecutive +runs of black squares. +<p> +Left-click in a square to mark it black; right-click (or hold Ctrl +while left-clicking) to mark it white. Click and drag along a row or +column to mark multiple squares black or white at once. Middle-click +(or hold Shift while left-clicking) to return a square to grey +(meaning undecided): dragging like that can erase a whole rectangle, +not just a row or column. diff --git a/apps/plugins/puzzles/html/pearl.html b/apps/plugins/puzzles/html/pearl.html new file mode 100644 index 0000000..2ca25a5 --- /dev/null +++ b/apps/plugins/puzzles/html/pearl.html @@ -0,0 +1,13 @@ +Pearl +<p> +Draw a single closed loop by connecting together the centres of +adjacent grid squares, so that some squares end up as corners, some as +straights (horizontal or vertical), and some may be empty. Every +square containing a black circle must be a corner not connected +directly to another corner; every square containing a white circle +must be a straight which is connected to <em>at least one</em> corner. +<p> +Drag between squares to draw or undraw pieces of the loop. +Alternatively, left-click the edge between two squares to turn it on +or off. Right-click an edge to mark it with a cross indicating that +you are sure the loop does not go through it. diff --git a/apps/plugins/puzzles/html/pegs.html b/apps/plugins/puzzles/html/pegs.html new file mode 100644 index 0000000..4a23788 --- /dev/null +++ b/apps/plugins/puzzles/html/pegs.html @@ -0,0 +1,8 @@ +Pegs +<p> +Jump one peg over another to remove the one you jumped over. Try to +remove all but one peg. +<p> +Drag a peg into an empty space to make a move. The target space must +be exactly two holes away from the starting peg, in an orthogonal +direction, and there must be a peg in the hole in between. diff --git a/apps/plugins/puzzles/html/range.html b/apps/plugins/puzzles/html/range.html new file mode 100644 index 0000000..bb5b59c --- /dev/null +++ b/apps/plugins/puzzles/html/range.html @@ -0,0 +1,21 @@ +Range +<p> +Colour some squares black, so as to meet the following conditions: +<ul> +<li> +No two black squares are orthogonally adjacent. +<li> +No group of white squares is separated from the rest of the grid by +black squares. +<li> +Each numbered cell can see precisely that many white squares in +total by looking in all four orthogonal directions, counting itself. +(Black squares block the view. So, for example, a 2 clue must be +adjacent to three black squares or grid edges, and in the fourth +direction there must be one white square and then a black one beyond +it.) +</ul> + +<p> +Left-click to colour a square black. Right-click to mark a square +with a dot, if you know it should not be black. diff --git a/apps/plugins/puzzles/html/rect.html b/apps/plugins/puzzles/html/rect.html new file mode 100644 index 0000000..d23d827 --- /dev/null +++ b/apps/plugins/puzzles/html/rect.html @@ -0,0 +1,10 @@ +docname=rectangles:Rectangles +<p> +Draw lines along the grid edges to divide the grid into rectangles, +so that each rectangle contains exactly one numbered square and its +area is equal to the number written in that square. +<p> +Click and drag from one grid corner to another, or from one square +centre to another, to draw a rectangle. You can also drag along a +grid line to just draw a line at a time, or just click on a single +grid edge to draw or erase it. diff --git a/apps/plugins/puzzles/html/samegame.html b/apps/plugins/puzzles/html/samegame.html new file mode 100644 index 0000000..e6de095 --- /dev/null +++ b/apps/plugins/puzzles/html/samegame.html @@ -0,0 +1,14 @@ +Same Game +<p> +Try to empty the playing area completely, by removing connected +groups of two or more squares of the same colour. Then try to score +as much as possible, by removing large groups at a time instead of +small ones. +<p> +Click on a coloured square to highlight the rest of its connected +group. The status line will print the number of squares selected, +and the score you would gain by removing them. Click again to remove +the group; other squares will fall down to fill the space, and if +you empty a whole column then the other columns will move up. You +cannot remove a single isolated square: try to avoid dead-end +positions where all remaining squares are isolated. diff --git a/apps/plugins/puzzles/html/signpost.html b/apps/plugins/puzzles/html/signpost.html new file mode 100644 index 0000000..fa23e99 --- /dev/null +++ b/apps/plugins/puzzles/html/signpost.html @@ -0,0 +1,14 @@ +Signpost +<p> +Connect all the squares together into a sequence, so that every +square's arrow points towards the square that follows it (though the +next square can be any distance away in that direction). + +<p> +Left-drag from a square to the square that should follow it, or +right-drag from a square to the square that should precede it. + +<p> +Left-drag a square off the grid to break all links to it. Right-drag +a square off the grid to break all links to it and everything else +in its connected chain. diff --git a/apps/plugins/puzzles/html/singles.html b/apps/plugins/puzzles/html/singles.html new file mode 100644 index 0000000..252bffb --- /dev/null +++ b/apps/plugins/puzzles/html/singles.html @@ -0,0 +1,11 @@ +Singles +<p> +Black out some of the squares, in such a way that: +<ul><li>no number appears twice in any row or column +<li>no two black squares are adjacent +<li>the white squares form a single connected group (connections +along diagonals do not count).</ul> +<p> +Click in a square to black it out, and again to uncover it. +Right-click in a square to mark it with a circle, indicating that +you're sure it should <em>not</em> be blacked out. diff --git a/apps/plugins/puzzles/html/sixteen.html b/apps/plugins/puzzles/html/sixteen.html new file mode 100644 index 0000000..4530469 --- /dev/null +++ b/apps/plugins/puzzles/html/sixteen.html @@ -0,0 +1,8 @@ +Sixteen +<p> +Slide the grid squares around so that the numbers end up in +consecutive order from the top left corner. +<p> +Click on the arrows at the edges of the grid to move a row or column +left, right, up or down. The square that falls off the end of the +row comes back on the other end. diff --git a/apps/plugins/puzzles/html/slant.html b/apps/plugins/puzzles/html/slant.html new file mode 100644 index 0000000..d6d31aa --- /dev/null +++ b/apps/plugins/puzzles/html/slant.html @@ -0,0 +1,9 @@ +Slant +<p> +Fill in a diagonal line in every grid square so that there are no +loops in the grid, and so that every numbered point has that many +lines meeting at it. +<p> +Left-click in a square to mark it with a <code>\</code>; right-click +to mark it with a <code>/</code>. Keep clicking in a square to +cycle it between <code>\</code>, <code>/</code> and empty. diff --git a/apps/plugins/puzzles/html/solo.html b/apps/plugins/puzzles/html/solo.html new file mode 100644 index 0000000..88ebd5c --- /dev/null +++ b/apps/plugins/puzzles/html/solo.html @@ -0,0 +1,20 @@ +Solo +<p> +Fill in a number in every square so that every number appears +exactly once in each row, each column and each block marked by thick +lines. +<p> +To place a number, click in a square to select it, then type the +number on the keyboard. To erase a number, click to select a square +and then press Backspace. +<p> +Right-click in a square and then type a number to add or remove the +number as a pencil mark, indicating numbers that you think +<em>might</em> go in that square. +<p> +When you master the basic game, try Jigsaw mode (irregularly shaped +blocks), X mode (the two main diagonals of the grid must also +contain every number once), Killer mode (instead of single-cell +clues you are given regions of the grid each of which must add up to +a given total, again without reusing any digits), or all of those at +once! diff --git a/apps/plugins/puzzles/html/tents.html b/apps/plugins/puzzles/html/tents.html new file mode 100644 index 0000000..e3f6d5f --- /dev/null +++ b/apps/plugins/puzzles/html/tents.html @@ -0,0 +1,20 @@ +Tents +<p> +Place tents in the empty squares in such a way that: +<ul> +<li>no two tents are adjacent, even diagonally +<li>the number of tents in each row and column matches the numbers +around the edge of the grid +<li>it is possible to match tents to trees so that each tree is +orthogonally adjacent to its own tent (but may also be adjacent to +other tents). +</ul> +<p> +Click in a square to place or remove a tent. Right-click to mark a +square as empty (not a tent). Right-click and drag along a row or +column to mark many squares at once as empty. +<p> +Warning '!' marks appear to indicate adjacent tents. Numbers round +the edge of the grid light up red to indicate they do not match the +number of tents in the row. Groups of tents light up red to indicate +that they have too few trees between them, and vice versa. diff --git a/apps/plugins/puzzles/html/towers.html b/apps/plugins/puzzles/html/towers.html new file mode 100644 index 0000000..a710e0a --- /dev/null +++ b/apps/plugins/puzzles/html/towers.html @@ -0,0 +1,22 @@ +Towers +<p> +Fill in the grid with towers whose heights range from 1 to the grid +size, so that every possible height appears exactly once in each row +and column, and so that each clue around the edge counts the number +of towers that are visible when looking into the grid from that +direction. (Taller towers hide shorter ones behind them. So the +sequence 2,1,4,3,5 would match a clue of 3 on the left, because the +1 is hidden behind the 2 and the 3 is hidden behind the 4. On the +right, it would match a clue of 1 because the 5 hides everything +else.) +<p> +To place a tower, click in a square to select it, then type the +desired height on the keyboard. To erase a tower, click to select a +square and then press Backspace. +<p> +Right-click in a square and then type a number to add or remove the +number as a pencil mark, indicating tower heights that you think +<em>might</em> go in that square. +<p> +Left-click on a clue to mark it as done (grey it out). To unmark a +clue as done, left-click on it again.
\ No newline at end of file diff --git a/apps/plugins/puzzles/html/tracks.html b/apps/plugins/puzzles/html/tracks.html new file mode 100644 index 0000000..afabed3 --- /dev/null +++ b/apps/plugins/puzzles/html/tracks.html @@ -0,0 +1,19 @@ +Tracks +<p> +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. There are only straight and +90-degree curved rail sections, and the track may not cross itself. +<p> +Left-click on an edge between two squares to add a track segment between +the two squares. Right-click on an edge to add a cross on the edge, +indicating no track is possible there. +<p> +Left-click in a square to add 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-click in a square to add a cross indicating it contains no +track segment. +<p> +Left- or right-drag between squares to lay a straight line of is-track or +is-not-track indicators, useful for filling in rows or columns to match the +clue. diff --git a/apps/plugins/puzzles/html/twiddle.html b/apps/plugins/puzzles/html/twiddle.html new file mode 100644 index 0000000..5f94e4e --- /dev/null +++ b/apps/plugins/puzzles/html/twiddle.html @@ -0,0 +1,15 @@ +Twiddle +<p> +Rotate square sections of the grid to arrange the squares into +numerical order starting from the top left. +<p> +In the basic game, you rotate a 2×2 square section. Left-click +in the centre of that section (i.e. on a corner point between four +squares) to rotate the whole section anticlockwise. Right-click to +rotate the section clockwise. +<p> +When you master the basic game, go to the Type menu to try it with +larger rotating groups (for a 3×3 group you must click in the +centre of a square to rotate the block around it). Or select the +'orientable' mode in which every square must end up the right way +round as well as in the right place. Or both! diff --git a/apps/plugins/puzzles/html/undead.html b/apps/plugins/puzzles/html/undead.html new file mode 100644 index 0000000..c21374f --- /dev/null +++ b/apps/plugins/puzzles/html/undead.html @@ -0,0 +1,22 @@ +Undead +<p> +Fill in every grid square which doesn't contain a mirror with either a +ghost, a vampire, or a zombie. The numbers round the grid edges show +how many monsters must be visible along your line of sight if you look +directly into the grid from that position, along a row or column. +Zombies are always visible; ghosts are only visible when reflected in +at least one mirror; vampires are only visible when not reflected in +any mirror. + +<p> +To place a monster, click in a square to select it, then type the +monster's letter on the keyboard: G for a ghost, V for a vampire or Z +for a zombie. To erase a monster, click to select a square and then +press Backspace. +<p> +Right-click in a square and then type a letter to add or remove the +monster as a pencil mark, indicating monsters that you think +<em>might</em> go in that square. +<p> +Left-click on a clue to mark it as done (grey it out). To unmark a +clue as done, left-click on it again. diff --git a/apps/plugins/puzzles/html/unequal.html b/apps/plugins/puzzles/html/unequal.html new file mode 100644 index 0000000..085f82e --- /dev/null +++ b/apps/plugins/puzzles/html/unequal.html @@ -0,0 +1,14 @@ +Unequal +<p> +Fill in the grid with numbers from 1 to the grid size, so that every +number appears exactly once in each row and column, and so that all +the <code><</code> signs represent true inequalities (i.e. the +number at the pointed end is smaller than the number at the open end). +<p> +To place a number, click in a square to select it, then type the +number on the keyboard. To erase a number, click to select a square +and then press Backspace. +<p> +Right-click in a square and then type a number to add or remove the +number as a pencil mark, indicating numbers that you think +<em>might</em> go in that square. diff --git a/apps/plugins/puzzles/html/unruly.html b/apps/plugins/puzzles/html/unruly.html new file mode 100644 index 0000000..2cd3fb2 --- /dev/null +++ b/apps/plugins/puzzles/html/unruly.html @@ -0,0 +1,11 @@ +Unruly +<p> +Colour every square either black or white, in such a way that: +<ul><li>no three consecutive squares, horizontally or vertically, are +the same colour +<li>each row and column contains the same number of black and white +squares.</ul> +<p> +Left-click in an empty square to turn it black, or right-click to turn +it white. Click again in an already-filled square to cycle it between +black and white and empty; middle-click to reset any square to empty. diff --git a/apps/plugins/puzzles/html/untangle.html b/apps/plugins/puzzles/html/untangle.html new file mode 100644 index 0000000..7171a3d --- /dev/null +++ b/apps/plugins/puzzles/html/untangle.html @@ -0,0 +1,5 @@ +Untangle +<p> +Move the points around so that none of the lines cross. +<p> +Click on a point and drag it to move it. |