From 1a6a8b52f7aa4e2da6f4c34a0c743c760b8cfd99 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Sun, 20 Nov 2016 15:16:41 -0500 Subject: Port of Simon Tatham's Puzzle Collection 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. Currently builds one plugin per puzzle (about 40 in total, around 100K each on ARM), but can easily be made to build a single monolithic overlay (800K or so on ARM). The following games are at least partially broken for various reasons, and have been disabled on this commit: Cube: failed assertion with "Icosahedron" setting Keen: input issues Mines: weird stuff happens on target Palisade: input issues Solo: input issues, occasional crash on target Towers: input issues Undead: input issues Unequal: input and drawing issues (concave polys) Untangle: input issues Features left to do: - In-game help system - Figure out the weird bugs Change-Id: I7c69b6860ab115f973c8d76799502e9bb3d52368 --- apps/plugins/puzzles/html/blackbox.html | 16 +++++ apps/plugins/puzzles/html/bridges.html | 13 ++++ apps/plugins/puzzles/html/cube.html | 14 ++++ apps/plugins/puzzles/html/dominosa.html | 10 +++ apps/plugins/puzzles/html/fifteen.html | 6 ++ apps/plugins/puzzles/html/filling.html | 12 ++++ apps/plugins/puzzles/html/flip.html | 10 +++ apps/plugins/puzzles/html/flood.html | 8 +++ apps/plugins/puzzles/html/galaxies.html | 11 +++ apps/plugins/puzzles/html/group.html | 52 ++++++++++++++ apps/plugins/puzzles/html/guess.html | 12 ++++ apps/plugins/puzzles/html/inertia.html | 14 ++++ apps/plugins/puzzles/html/javapage.pl | 104 +++++++++++++++++++++++++++ apps/plugins/puzzles/html/jspage.pl | 120 ++++++++++++++++++++++++++++++++ apps/plugins/puzzles/html/keen.html | 15 ++++ apps/plugins/puzzles/html/lightup.html | 10 +++ apps/plugins/puzzles/html/loopy.html | 13 ++++ apps/plugins/puzzles/html/magnets.html | 17 +++++ apps/plugins/puzzles/html/map.html | 15 ++++ apps/plugins/puzzles/html/mines.html | 18 +++++ apps/plugins/puzzles/html/net.html | 17 +++++ apps/plugins/puzzles/html/netslide.html | 14 ++++ apps/plugins/puzzles/html/palisade.html | 11 +++ apps/plugins/puzzles/html/pattern.html | 12 ++++ apps/plugins/puzzles/html/pearl.html | 13 ++++ apps/plugins/puzzles/html/pegs.html | 8 +++ apps/plugins/puzzles/html/range.html | 21 ++++++ apps/plugins/puzzles/html/rect.html | 10 +++ apps/plugins/puzzles/html/samegame.html | 14 ++++ apps/plugins/puzzles/html/signpost.html | 14 ++++ apps/plugins/puzzles/html/singles.html | 11 +++ apps/plugins/puzzles/html/sixteen.html | 8 +++ apps/plugins/puzzles/html/slant.html | 9 +++ apps/plugins/puzzles/html/solo.html | 20 ++++++ apps/plugins/puzzles/html/tents.html | 20 ++++++ apps/plugins/puzzles/html/towers.html | 22 ++++++ apps/plugins/puzzles/html/tracks.html | 19 +++++ apps/plugins/puzzles/html/twiddle.html | 15 ++++ apps/plugins/puzzles/html/undead.html | 22 ++++++ apps/plugins/puzzles/html/unequal.html | 14 ++++ apps/plugins/puzzles/html/unruly.html | 11 +++ apps/plugins/puzzles/html/untangle.html | 5 ++ 42 files changed, 800 insertions(+) create mode 100644 apps/plugins/puzzles/html/blackbox.html create mode 100644 apps/plugins/puzzles/html/bridges.html create mode 100644 apps/plugins/puzzles/html/cube.html create mode 100644 apps/plugins/puzzles/html/dominosa.html create mode 100644 apps/plugins/puzzles/html/fifteen.html create mode 100644 apps/plugins/puzzles/html/filling.html create mode 100644 apps/plugins/puzzles/html/flip.html create mode 100644 apps/plugins/puzzles/html/flood.html create mode 100644 apps/plugins/puzzles/html/galaxies.html create mode 100644 apps/plugins/puzzles/html/group.html create mode 100644 apps/plugins/puzzles/html/guess.html create mode 100644 apps/plugins/puzzles/html/inertia.html create mode 100755 apps/plugins/puzzles/html/javapage.pl create mode 100755 apps/plugins/puzzles/html/jspage.pl create mode 100644 apps/plugins/puzzles/html/keen.html create mode 100644 apps/plugins/puzzles/html/lightup.html create mode 100644 apps/plugins/puzzles/html/loopy.html create mode 100644 apps/plugins/puzzles/html/magnets.html create mode 100644 apps/plugins/puzzles/html/map.html create mode 100644 apps/plugins/puzzles/html/mines.html create mode 100644 apps/plugins/puzzles/html/net.html create mode 100644 apps/plugins/puzzles/html/netslide.html create mode 100644 apps/plugins/puzzles/html/palisade.html create mode 100644 apps/plugins/puzzles/html/pattern.html create mode 100644 apps/plugins/puzzles/html/pearl.html create mode 100644 apps/plugins/puzzles/html/pegs.html create mode 100644 apps/plugins/puzzles/html/range.html create mode 100644 apps/plugins/puzzles/html/rect.html create mode 100644 apps/plugins/puzzles/html/samegame.html create mode 100644 apps/plugins/puzzles/html/signpost.html create mode 100644 apps/plugins/puzzles/html/singles.html create mode 100644 apps/plugins/puzzles/html/sixteen.html create mode 100644 apps/plugins/puzzles/html/slant.html create mode 100644 apps/plugins/puzzles/html/solo.html create mode 100644 apps/plugins/puzzles/html/tents.html create mode 100644 apps/plugins/puzzles/html/towers.html create mode 100644 apps/plugins/puzzles/html/tracks.html create mode 100644 apps/plugins/puzzles/html/twiddle.html create mode 100644 apps/plugins/puzzles/html/undead.html create mode 100644 apps/plugins/puzzles/html/unequal.html create mode 100644 apps/plugins/puzzles/html/unruly.html create mode 100644 apps/plugins/puzzles/html/untangle.html (limited to 'apps/plugins/puzzles/html') diff --git a/apps/plugins/puzzles/html/blackbox.html b/apps/plugins/puzzles/html/blackbox.html new file mode 100644 index 0000000000..f98604f12f --- /dev/null +++ b/apps/plugins/puzzles/html/blackbox.html @@ -0,0 +1,16 @@ +Black Box +

+Determine where the hidden balls are in the box, by observing the +behaviour of light beams fired into the box from the sides. +

+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). +

+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 0000000000..06ec2d4d4b --- /dev/null +++ b/apps/plugins/puzzles/html/bridges.html @@ -0,0 +1,13 @@ +Bridges +

+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. +

+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 0000000000..f08e16c38d --- /dev/null +++ b/apps/plugins/puzzles/html/cube.html @@ -0,0 +1,14 @@ +Cube +

+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. +

+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. +

+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 0000000000..d2f672806a --- /dev/null +++ b/apps/plugins/puzzles/html/dominosa.html @@ -0,0 +1,10 @@ +Dominosa +

+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). +

+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 0000000000..53053b440d --- /dev/null +++ b/apps/plugins/puzzles/html/fifteen.html @@ -0,0 +1,6 @@ +Fifteen +

+Slide the tiles around the box until they appear in numerical order +from the top left, with the hole in the bottom right corner. +

+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 0000000000..70ce16d4a9 --- /dev/null +++ b/apps/plugins/puzzles/html/filling.html @@ -0,0 +1,12 @@ +Filling +

+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. +

+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 0000000000..404aae6b9a --- /dev/null +++ b/apps/plugins/puzzles/html/flip.html @@ -0,0 +1,10 @@ +Flip +

+Try to light up all the squares in the grid by flipping combinations +of them. +

+Click in a square to flip it and some of its neighbours. The diagram +in each square indicates which other squares will flip. +

+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 0000000000..cf09eac766 --- /dev/null +++ b/apps/plugins/puzzles/html/flood.html @@ -0,0 +1,8 @@ +Flood +

+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. +

+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 0000000000..8041a95cee --- /dev/null +++ b/apps/plugins/puzzles/html/galaxies.html @@ -0,0 +1,11 @@ +Galaxies +

+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. +

+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 0000000000..c0f52de629 --- /dev/null +++ b/apps/plugins/puzzles/html/group.html @@ -0,0 +1,52 @@ +unfinished:Group +

+Fill in the grid with the letters shown to the top and left of it, so +that the full grid is a valid +Cayley table +for a +group. +

+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: +

+

+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. +

+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 +might go in that square. +

+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 between 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 0000000000..1e4fc1ed04 --- /dev/null +++ b/apps/plugins/puzzles/html/guess.html @@ -0,0 +1,12 @@ +Guess +

+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. +

+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 0000000000..20077c0048 --- /dev/null +++ b/apps/plugins/puzzles/html/inertia.html @@ -0,0 +1,14 @@ +Inertia +

+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. +

+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. +

+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 0000000000..cd5e6a1669 --- /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 ? "

an unfinished puzzle

\n" : ""; + my $unfinishedpara; + my $links; + if ($unfinished) { + $unfinishedpara = < +You have found your way to a page containing an unfinished +puzzle in my collection, not linked from the main +puzzles page. Don't be surprised if things are hard to understand +or don't work as you expect. +EOF + $links = < +Back to main puzzles page (which does not link to this) +EOF + } else { + $unfinishedpara = ""; + $links = < +Full instructions +| +Back to main puzzles page +EOF + } + + print $outpage < + +${puzzlename}, ${unfinishedtitlefragment}from Simon Tatham's Portable Puzzle Collection + + + + +

${puzzlename}

+${unfinishedheading} +

from Simon Tatham's Portable Puzzle Collection

+ +${unfinishedpara} + +

+ + + + + + + + +
+ + + +
+
+
+
+
+
+ +${instructions} + +${links} + +${footer} + + +EOF + + close $outpage; +} diff --git a/apps/plugins/puzzles/html/jspage.pl b/apps/plugins/puzzles/html/jspage.pl new file mode 100755 index 0000000000..19868bd948 --- /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 ? "

an unfinished puzzle

\n" : ""; + my $unfinishedpara; + my $links; + if ($unfinished) { + $unfinishedpara = < +You have found your way to a page containing an unfinished +puzzle in my collection, not linked from the main +puzzles page. Don't be surprised if things are hard to understand +or don't work as you expect. +EOF + $links = < +Back to main puzzles page (which does not link to this) +EOF + } else { + $unfinishedpara = ""; + $links = < +Full instructions +| +Back to main puzzles page +EOF + } + + print $outpage < + + + +${puzzlename}, ${unfinishedtitlefragment}from Simon Tatham's Portable Puzzle Collection + + + +

${puzzlename}

+${unfinishedheading} +

from Simon Tatham's Portable Puzzle Collection

+ +${unfinishedpara} + +
+ +
+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 +typed arrays). +These puzzles have been successfully run in Firefox 19, Chrome 26, +Internet Explorer 10 and Safari 6. +
+
+ +${instructions} + +${links} + +${footer} + + +EOF + + close $outpage; +} diff --git a/apps/plugins/puzzles/html/keen.html b/apps/plugins/puzzles/html/keen.html new file mode 100644 index 0000000000..bd0eb3644d --- /dev/null +++ b/apps/plugins/puzzles/html/keen.html @@ -0,0 +1,15 @@ +Keen +

+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). +

+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. +

+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 +might 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 0000000000..2de2f91bb9 --- /dev/null +++ b/apps/plugins/puzzles/html/lightup.html @@ -0,0 +1,10 @@ +Light Up +

+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. +

+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 0000000000..96f3a9d908 --- /dev/null +++ b/apps/plugins/puzzles/html/loopy.html @@ -0,0 +1,13 @@ +Loopy +

+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. +

+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. +

+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 0000000000..2807569a6c --- /dev/null +++ b/apps/plugins/puzzles/html/magnets.html @@ -0,0 +1,17 @@ +Magnets +

+Fill each domino shape with either a magnet (consisting of a + and +− pole) or a neutral domino (green). +

+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. +

+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. +

+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 0000000000..5f81793054 --- /dev/null +++ b/apps/plugins/puzzles/html/map.html @@ -0,0 +1,15 @@ +Map +

+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. +

+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.) +

+Right-drag from a coloured region to a blank one to add dots marking +the latter region as possibly 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 0000000000..d17d6ffa80 --- /dev/null +++ b/apps/plugins/puzzles/html/mines.html @@ -0,0 +1,18 @@ +Mines +

+Try to expose every square in the grid that is not one of the hidden +mines, without opening any square that is a mine. +

+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. +

+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. +

+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 0000000000..08bffbac3e --- /dev/null +++ b/apps/plugins/puzzles/html/net.html @@ -0,0 +1,17 @@ +Net +

+Rotate the grid squares so that they all join up into a single +connected network with no loops. +

+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. +

+Squares connected to the middle square are lit up. Aim to light up +every square in the grid (not just the endpoint blobs). +

+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 0000000000..f1877417d4 --- /dev/null +++ b/apps/plugins/puzzles/html/netslide.html @@ -0,0 +1,14 @@ +Netslide +

+Slide the grid squares around so that they all join up into a single +connected network with no loops. +

+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. +

+Squares connected to the middle square are lit up. Aim to light up +every square in the grid (not just the endpoint blobs). +

+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 0000000000..5b6b933104 --- /dev/null +++ b/apps/plugins/puzzles/html/palisade.html @@ -0,0 +1,11 @@ +Palisade +

+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. +

+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 0000000000..54e05d6416 --- /dev/null +++ b/apps/plugins/puzzles/html/pattern.html @@ -0,0 +1,12 @@ +Pattern +

+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. +

+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 0000000000..2ca25a5ee0 --- /dev/null +++ b/apps/plugins/puzzles/html/pearl.html @@ -0,0 +1,13 @@ +Pearl +

+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 at least one corner. +

+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 0000000000..4a2378873e --- /dev/null +++ b/apps/plugins/puzzles/html/pegs.html @@ -0,0 +1,8 @@ +Pegs +

+Jump one peg over another to remove the one you jumped over. Try to +remove all but one peg. +

+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 0000000000..bb5b59c4d2 --- /dev/null +++ b/apps/plugins/puzzles/html/range.html @@ -0,0 +1,21 @@ +Range +

+Colour some squares black, so as to meet the following conditions: +

    +
  • +No two black squares are orthogonally adjacent. +
  • +No group of white squares is separated from the rest of the grid by +black squares. +
  • +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.) +
+ +

+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 0000000000..d23d827663 --- /dev/null +++ b/apps/plugins/puzzles/html/rect.html @@ -0,0 +1,10 @@ +docname=rectangles:Rectangles +

+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. +

+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 0000000000..e6de095210 --- /dev/null +++ b/apps/plugins/puzzles/html/samegame.html @@ -0,0 +1,14 @@ +Same Game +

+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. +

+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 0000000000..fa23e99de0 --- /dev/null +++ b/apps/plugins/puzzles/html/signpost.html @@ -0,0 +1,14 @@ +Signpost +

+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). + +

+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. + +

+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 0000000000..252bffb380 --- /dev/null +++ b/apps/plugins/puzzles/html/singles.html @@ -0,0 +1,11 @@ +Singles +

+Black out some of the squares, in such a way that: +

  • no number appears twice in any row or column +
  • no two black squares are adjacent +
  • the white squares form a single connected group (connections +along diagonals do not count).
+

+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 not be blacked out. diff --git a/apps/plugins/puzzles/html/sixteen.html b/apps/plugins/puzzles/html/sixteen.html new file mode 100644 index 0000000000..4530469fe6 --- /dev/null +++ b/apps/plugins/puzzles/html/sixteen.html @@ -0,0 +1,8 @@ +Sixteen +

+Slide the grid squares around so that the numbers end up in +consecutive order from the top left corner. +

+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 0000000000..d6d31aa302 --- /dev/null +++ b/apps/plugins/puzzles/html/slant.html @@ -0,0 +1,9 @@ +Slant +

+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. +

+Left-click in a square to mark it with a \; right-click +to mark it with a /. Keep clicking in a square to +cycle it between \, / and empty. diff --git a/apps/plugins/puzzles/html/solo.html b/apps/plugins/puzzles/html/solo.html new file mode 100644 index 0000000000..88ebd5cb29 --- /dev/null +++ b/apps/plugins/puzzles/html/solo.html @@ -0,0 +1,20 @@ +Solo +

+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. +

+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. +

+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 +might go in that square. +

+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 0000000000..e3f6d5f0ea --- /dev/null +++ b/apps/plugins/puzzles/html/tents.html @@ -0,0 +1,20 @@ +Tents +

+Place tents in the empty squares in such a way that: +

    +
  • no two tents are adjacent, even diagonally +
  • the number of tents in each row and column matches the numbers +around the edge of the grid +
  • 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). +
+

+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. +

+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 0000000000..a710e0ab6e --- /dev/null +++ b/apps/plugins/puzzles/html/towers.html @@ -0,0 +1,22 @@ +Towers +

+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.) +

+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. +

+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 +might go in that square. +

+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 0000000000..afabed37ac --- /dev/null +++ b/apps/plugins/puzzles/html/tracks.html @@ -0,0 +1,19 @@ +Tracks +

+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. +

+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. +

+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. +

+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 0000000000..5f94e4e120 --- /dev/null +++ b/apps/plugins/puzzles/html/twiddle.html @@ -0,0 +1,15 @@ +Twiddle +

+Rotate square sections of the grid to arrange the squares into +numerical order starting from the top left. +

+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. +

+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 0000000000..c21374f6dc --- /dev/null +++ b/apps/plugins/puzzles/html/undead.html @@ -0,0 +1,22 @@ +Undead +

+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. + +

+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. +

+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 +might go in that square. +

+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 0000000000..085f82effc --- /dev/null +++ b/apps/plugins/puzzles/html/unequal.html @@ -0,0 +1,14 @@ +Unequal +

+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 < signs represent true inequalities (i.e. the +number at the pointed end is smaller than the number at the open end). +

+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. +

+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 +might 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 0000000000..2cd3fb25f5 --- /dev/null +++ b/apps/plugins/puzzles/html/unruly.html @@ -0,0 +1,11 @@ +Unruly +

+Colour every square either black or white, in such a way that: +

  • no three consecutive squares, horizontally or vertically, are +the same colour +
  • each row and column contains the same number of black and white +squares.
+

+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 0000000000..7171a3d55d --- /dev/null +++ b/apps/plugins/puzzles/html/untangle.html @@ -0,0 +1,5 @@ +Untangle +

+Move the points around so that none of the lines cross. +

+Click on a point and drag it to move it. -- cgit v1.2.3