71 Commits

Author SHA1 Message Date
2975ae2811 Unreasonable mode for Map.
[originally from svn r6229]
2005-08-28 14:29:19 +00:00
622a5ff678 New puzzle: `Inertia', originally written for Windows by Ben
Olmstead and reimplemented with the help of his source code which he
was kind enough to release into the public domain.

[originally from svn r6222]
2005-08-27 09:21:22 +00:00
067f06053c Trivial doc changes after recent prolificacy.
[originally from svn r6220]
2005-08-26 19:44:25 +00:00
c9b47daf1b New puzzle: Loopy', an implementation of Nikoli's Slither Link' or
`Loop the Loop' puzzle. Contributed by Mike Pinna.

[originally from svn r6211]
2005-08-24 21:32:54 +00:00
c6fa81bfc0 Minor update to Solo's documentation due to Extreme mode.
[originally from svn r6210]
2005-08-24 17:49:52 +00:00
6ada3841a1 New puzzle: `Map'. Vaguely original, for a change.
(This puzzle is theoretically printable, but I haven't added it in
print.py since there's rather a lot of painful processing required
to get from the game ID to the puzzle's visual appearance. It
probably won't become printable unless I get round to implementing a
more integrated printing architecture.)

[originally from svn r6186]
2005-08-13 10:43:26 +00:00
c3d1982dcb Document hard mode in Slant, and also fix an obvious memory
management error in game_configure().

[originally from svn r6169]
2005-08-06 10:38:34 +00:00
56e01e54fa New puzzle: `Light Up', by James H.
Also in this checkin (committed by mistake - I meant to do it
separately), a behind-the-scenes change to Slant to colour the two
non-touching classes of diagonals in different colours. Both colours
are set to black by default, but configuration by way of
SLANT_COLOUR_* can distinguish them if you want.

[originally from svn r6164]
2005-08-04 19:14:10 +00:00
afe80030e4 New puzzle: `Slant', picked from the Japanese-language section of
nikoli.co.jp (which has quite a few puzzles that they don't seem to
have bothered to translate into English).

Minor structural change: the disjoint set forest code used in the
Net solver has come in handy again, so I've moved it out into its
own module dsf.c.

[originally from svn r6155]
2005-08-02 23:16:46 +00:00
e6132341c4 New end-game approach to Black Box. Instead of revealing the ball
positions immediately when you make an error, the game now reveals
as little information as is necessary to prove you wrong (including
none - if an existing laser path you know about is inconsistent with
your guesses, the game will just point it out and tell you nothing
new!) and you can try again. Errors are counted in much the same way
as deaths in Mines.

[originally from svn r6152]
2005-07-31 14:56:18 +00:00
6bce285027 Until now, Same Game has been the only puzzle in this collection
which is unable to guarantee that every grid it generates can be
solved. So I'm eliminating that exception: this checkin contains a
more sophisticated grid generator which does guarantee solubility.
It's a bit slow (most noticeably on the 15x10c3 preset), and the
quality of the generated grids is slightly weird (a tendency toward
small regions rather than large sweeping areas of contiguous
colour); however, I'm willing to see the latter as a feature for
now, since making the game more challenging while simultaneously
guaranteeing it to be possible sounds like an all-round win to me.

From now on I'm raising my standards for contributions to this
collection. I made this fix to Same Game because I heard a user
_automatically assume_ that any puzzle in my collection would not be
so uncouth as to generate an impossible grid; as of this checkin
that's actually true, and I intend to maintain that standard of
quality henceforth.

(Guaranteeing a _unique_ solution is more of an optional extra,
since there are many games for which it isn't a meaningful concept
or isn't particularly desirable. Which is not to say that _some_
games wouldn't be of unacceptably low quality if they failed to
guarantee uniqueness; it depends on the game.)

[originally from svn r6124]
2005-07-21 18:06:31 +00:00
11ce8d7abd Sync with website
[originally from svn r6122]
2005-07-20 23:35:43 +00:00
0df586e23a Some attempt to explain Dominosa for those unfamiliar with dominos. (Not sure
I've succeeded.)

[originally from svn r6120]
2005-07-19 19:33:49 +00:00
9e5d23e783 Black Box: fix "reveal" button location, explain what's meant by the
`firing range'

[originally from svn r6105]
2005-07-17 10:33:40 +00:00
257288773f Use \q{} and \by in Black Box docs.
[originally from svn r6104]
2005-07-17 10:13:41 +00:00
e12017b291 Another game from James H: `Black Box'.
[originally from svn r6100]
2005-07-17 08:44:18 +00:00
a8a903db47 New puzzle: `Untangle', cloned (with the addition of random grid
generation) from a simple but rather fun Flash game I saw this
morning.

Small infrastructure change for this puzzle: while most game
backends find the midend's assumption that Solve moves are never
animated to be a convenience absolving them of having to handle the
special case themselves, this one actually needs Solve to be
animated. Rather than break that convenience for the other puzzles,
I've introduced a flag bit (which I've shoved in mouse_priorities
for the moment, shamefully without changing its name).

[originally from svn r6097]
2005-07-16 19:51:53 +00:00
69410c7961 New puzzle: Dominosa.
[originally from svn r6091]
2005-07-14 17:42:01 +00:00
d4001cbc0d Some patches from James H:
- reinstate the initialisation of ds->w and ds->h in guess.c, which
   I'd accidentally removed during game_size() refactoring
 - reorganise Net's interpret_move() so that my uncommitted patch
   for drag-based UI (which he uses on the Palm port) will apply
   more easily
 - the interpret_move() changes make it easy to have a single move
   type which rotates a tile by 180 degrees, so this is now provided
   via the `F' key (but there's no spare button available to provide
   it via the mouse).

[originally from svn r6070]
2005-07-06 11:06:17 +00:00
4763b712fd It's been a new year for a while now.
[originally from svn r6065]
2005-07-05 19:38:27 +00:00
74c4a6bf27 Clarify that diagonal moves are not permitted in Pegs.
[originally from svn r6057]
2005-07-04 21:07:40 +00:00
eab3699a64 Documentation for Pegs.
[originally from svn r6053]
2005-07-04 19:53:36 +00:00
aae029926f Document keyboard controls for Flip
[originally from svn r6051]
2005-07-04 14:35:14 +00:00
6f47baddf9 Load and Save are now supported on all three desktop platforms, and
documented. (This means the GTK temporary dependency on an
environment variable is now gone.)

[originally from svn r6042]
2005-06-30 18:00:37 +00:00
1c896ef18b Make peg removal accessible from the keyboard.
[originally from svn r6032]
2005-06-28 18:10:20 +00:00
7f7583d7f4 Further additions to the Guess docs.
[originally from svn r6014]
2005-06-25 13:52:52 +00:00
fda72b0f1e Make the hold marker' in Guess accessible from the keyboard (H' key, for want
of a better idea).

[originally from svn r6004]
2005-06-23 22:01:17 +00:00
7199b42623 Factual and other corrections/additions to the Guess docs.
[originally from svn r6003]
2005-06-23 21:47:55 +00:00
c8d2f420f0 Credit James Harvey.
[originally from svn r6000]
2005-06-23 19:01:01 +00:00
af052f2620 James Harvey's extensions to Guess: a couple of extra game settings
plus a manual chapter.

[originally from svn r5999]
2005-06-23 18:50:58 +00:00
b0df75952b I've decided I didn't like the asymmetry of putting the solution
markers in the top left of the square.

[originally from svn r5974]
2005-06-18 08:46:33 +00:00
f22f31196b Correct rogue chapter into a subheading.
[originally from svn r5972]
2005-06-17 19:06:25 +00:00
5550660f13 Solver for Flip.
[originally from svn r5970]
2005-06-17 18:55:36 +00:00
347de40a2e Another new puzzle! This one isn't particularly deep or complex
(solving it only requires matrix inversion over GF(2), whereas
several of the other puzzles in this collection are NP-complete in
principle), but it's a fun enough thing to play with and is
non-trivial to do in your head - especially on the hardest preset.

[originally from svn r5967]
2005-06-17 17:16:49 +00:00
6e0c4003cc Tweaks and more complete documentation for Same Game.
[originally from svn r5922]
2005-06-07 21:03:14 +00:00
0bcdb7aa03 James Harvey has contributed an implementation of `Same Game', also
known as ksame (KDE) and Same GNOME (GNOME).

[originally from svn r5914]
2005-06-07 19:01:36 +00:00
4a9db8a002 Now _this_ is what Undo ought to be doing in a Minesweeper clone.
Rather than revealing the entire mine layout when you die, we now
only reveal the one mine that killed you. You can then Undo and
continue playing, without having spoiled the rest of the grid for
yourself. The number of times you've died is counted in the status
line (and is not reduced by Undo :-).

Amusingly, I think this in itself is quite a good way of dealing
with ambiguous sections in a Minesweeper grid: they no longer
_completely_ spoil your enjoyment of the game, because you can still
play the remainder of the grid even if you haven't got a completely
clean sweep. Just my luck that I should invent the idea when I've
already arranged for ambiguous sections to be absent :-)

[originally from svn r5886]
2005-05-31 18:24:39 +00:00
b78667ecff Document the mouse control method for Cube.
[originally from svn r5879]
2005-05-31 12:12:47 +00:00
7ff09fbba1 Neat idea from Gareth: if you put a % on the end of the mine count
in the Custom dialog box, it'll treat it as a mine density.

[originally from svn r5861]
2005-05-30 12:24:31 +00:00
6b9e690c89 Initial checkin of my Minesweeper clone, which uses a solver during
grid generation to arrange a mine layout that never requires guessing.

[originally from svn r5859]
2005-05-30 10:08:27 +00:00
8fa365a7b4 Add a limited-shuffle mode like that added to Sixteen and Twiddle in r5769,
for completeness.

[originally from svn r5854]
[r5769 == 8f1c713735316422cfe041400ccc49999d563d8b]
2005-05-28 23:45:43 +00:00
865e8ad6ca Add origin-shifting (Shift+cursors) and source-shifting (Ctrl+cursors) to Net.
(Adding modifier+cursors handling has had minor knock-on effects on the other
puzzles, so that they can continue to ignore modifiers.)

(An unfortunate side effect of this is some artifacts in exterior barrier
drawing; notably, a disconnected corner can now appear at the corner of the
grid under some circumstances. I haven't found a satisfactory way round
this yet.)

[originally from svn r5844]
2005-05-26 13:40:38 +00:00
a1be37343c Support for `pencil marks' in Solo, by right-clicking and typing a
number. Many thanks to Chris Thomas, for helping with the detailed
UI design by means of testing an endless series of prototypes.

[originally from svn r5842]
2005-05-25 11:09:43 +00:00
5409c27b4f Mention NetWalk and update comment
[originally from svn r5841]
2005-05-24 20:28:38 +00:00
f3ba6f8bce Cleanups:
- fix documentation of Net's unique solution option (should have
   tested before last checkin)
 - make unique solutions optional in Rectangles too (same reasons)
 - tidy up various issues in parameter encoding in both games.

[originally from svn r5818]
2005-05-21 13:39:23 +00:00
862e25c90b Solution uniqueness for Net. Can be disabled on request (but is
enabled by default), since ambiguous sections in grids can present
additional interesting challenges. I think uniqueness is a better
default, though.

[originally from svn r5816]
2005-05-21 13:23:26 +00:00
93b955d5ee Cunning way to ensure unique solutions in generated Rectangles
puzzles. I generate the grid of rectangles as normal, but before I
place the numbers I run it through a non-deterministic solver
algorithm which tries to do as much as it can with as little
information about where the numbers are going to be. The solver
itself narrows down the number placement when it runs out of steam,
but does so as little as possible. Once it reaches a state where it
has ensured solubility, and then the generation algorithm chooses
random number placement from whatever's left.

Occasionally it paints itself into a corner and can't ensure a
unique solution no matter what happens; in that situation we just
have to give up, generate a fresh grid, and try again.

[originally from svn r5809]
2005-05-19 16:17:03 +00:00
58eb0551d4 Update doc for recent changes in Restart behaviour.
[originally from svn r5799]
2005-05-17 18:04:12 +00:00
2534ec5d69 The game IDs for Net (and Netslide) have always been random seeds
rather than literal grid descriptions, which has always faintly
annoyed me because it makes it impossible to type in a grid from
another source. However, Gareth pointed out that short random-seed
game descriptions are useful, because you can read one out to
someone else without having to master the technology of cross-
machine cut and paste, or you can have two people enter the same
random seed simultaneously in order to race against each other to
complete the same puzzle. So both types of game ID seem to have
their uses.

Therefore, here's a reorganisation of the whole game ID concept.
There are now two types of game ID: one has a parameter string then
a hash then a piece of arbitrary random seed text, and the other has
a parameter string then a colon then a literal game description. For
most games, the latter is identical to the game IDs that were
previously valid; for Net and Netslide, old game IDs must be
translated into new ones by turning the colon into a hash, and
there's a new descriptive game ID format.

Random seed IDs are not guaranteed to be portable between software
versions (this is a major reason why I added version reporting
yesterday). Descriptive game IDs have a longer lifespan.

As an added bonus, I've removed the sections of documentation
dealing with game parameter encodings not shown in the game ID
(Rectangles expansion factor, Solo symmetry and difficulty settings
etc), because _all_ parameters must be specified in a random seed ID
and therefore users can easily find out the appropriate parameter
string for any settings they have configured.

[originally from svn r5788]
2005-05-16 18:57:09 +00:00
8f1c713735 The two Rubik-like puzzles, Sixteen and Twiddle, now support an
additional configuration parameter, which is the number of shuffle
moves. By default the grid will be fully shuffled so that you need a
general solution algorithm to untangle it, but if you prefer you can
request a grid which has had (say) precisely four moves made on it,
and then attempt to exactly reverse those four moves.

Currently this feature is only available from the Custom box, and
not in any presets.

[originally from svn r5769]
2005-05-11 20:38:10 +00:00