-
Notifications
You must be signed in to change notification settings - Fork 0
/
puzzles.but
3643 lines (2552 loc) · 138 KB
/
puzzles.but
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\title Simon Tatham's Portable Puzzle Collection
\cfg{winhelp-filename}{puzzles.hlp}
\cfg{winhelp-contents-titlepage}{Contents}
\cfg{text-filename}{puzzles.txt}
\cfg{html-contents-filename}{index.html}
\cfg{html-template-filename}{%k.html}
\cfg{html-index-filename}{docindex.html}
\cfg{html-leaf-level}{1}
\cfg{html-contents-depth-0}{1}
\cfg{html-contents-depth-1}{2}
\cfg{html-leaf-contains-contents}{true}
\cfg{chm-filename}{puzzles.chm}
\cfg{chm-contents-filename}{index.html}
\cfg{chm-template-filename}{%k.html}
\cfg{chm-head-end}{<link rel="stylesheet" type="text/css" href="chm.css">}
\cfg{chm-extra-file}{chm.css}
\cfg{info-filename}{puzzles.info}
\cfg{ps-filename}{puzzles.ps}
\cfg{pdf-filename}{puzzles.pdf}
\define{by} \u00D7{x}
\define{dash} \u2013{-}
\define{times} \u00D7{*}
\define{divide} \u00F7{/}
\define{minus} \u2212{-}
This is a collection of small one-player puzzle games.
\copyright This manual is copyright 2004-2024 Simon Tatham. All rights
reserved. You may distribute this documentation under the MIT licence.
See \k{licence} for the licence text in full.
\cfg{html-local-head}{<meta name="AppleTitle" content="Puzzles Help">}
\C{intro} Introduction
I wrote this collection because I thought there should be more small
desktop toys available: little games you can pop up in a window and
play for two or three minutes while you take a break from whatever
else you were doing. And I was also annoyed that every time I found
a good game on (say) \i{Unix}, it wasn't available the next time I
was sitting at a \i{Windows} machine, or vice versa; so I arranged
that everything in my personal puzzle collection will happily run on
both, and have more recently done a port to \i{Mac OS X} as well. When I
find (or perhaps invent) further puzzle games that I like, they'll
be added to this collection and will immediately be available on
both platforms. And if anyone feels like writing any other front
ends \dash PocketPC, Mac OS pre-10, or whatever it might be \dash
then all the games in this framework will immediately become
available on another platform as well.
The actual games in this collection were mostly not my invention; they
are re-implementations of existing game concepts within my portable
puzzle framework. I do not claim credit, in general, for inventing the
rules of any of these puzzles. (I don't even claim authorship of all
the code; some of the puzzles have been submitted by other authors.)
This collection is distributed under the \i{MIT licence} (see
\k{licence}). This means that you can do pretty much anything you like
with the game binaries or the code, except pretending you wrote them
yourself, or suing me if anything goes wrong.
The most recent versions, and \i{source code}, can be found at
\I{website}\W{https://www.chiark.greenend.org.uk/~sgtatham/puzzles/}\cw{https://www.chiark.greenend.org.uk/~sgtatham/puzzles/}.
Please report \I{feedback}\i{bugs} to
\W{mailto:[email protected]}\cw{[email protected]}.
You might find it helpful to read this article before reporting a bug:
\W{https://www.chiark.greenend.org.uk/~sgtatham/bugs.html}\cw{https://www.chiark.greenend.org.uk/~sgtatham/bugs.html}
\ii{Patches} are welcome. Especially if they provide a new front end
(to make all these games run on another platform), or a new game.
\C{common} \ii{Common features}
This chapter describes features that are common to all the games.
\H{common-actions} \I{controls}Common actions
These actions are all available from the \I{Game menu}\q{Game} menu
and via \I{keys}keyboard shortcuts, in addition to any game-specific
actions.
(On \i{Mac OS X}, to conform with local user interface standards, these
actions are situated on the \I{File menu}\q{File} and \I{Edit
menu}\q{Edit} menus instead.)
\dt \ii\e{New game} (\q{N}, Ctrl+\q{N})
\dd Starts a new game, with a random initial state.
\dt \ii\e{Restart game}
\dd Resets the current game to its initial state. (This can be undone.)
\dt \ii\e{Load}
\dd Loads a saved game from a file on disk.
\dt \ii\e{Save}
\dd Saves the current state of your game to a file on disk.
\lcont{
The Load and Save operations preserve your entire game
history (so you can save, reload, and still Undo and Redo things you
had done before saving).
}
\dt \I{printing, on Windows}\e{Print}
\dd Where supported (currently only on Windows), brings up a dialog
allowing you to print an arbitrary number of puzzles randomly
generated from the current parameters, optionally including the
current puzzle. (Only for puzzles which make sense to print, of
course \dash it's hard to think of a sensible printable representation
of Fifteen!)
\dt \ii\e{Undo} (\q{U}, Ctrl+\q{Z}, Ctrl+\q{_}, \q{*})
\dd Undoes a single move. (You can undo moves back to the start of the
session.)
\dt \ii\e{Redo} (\q{R}, Ctrl+\q{R}, \q{#})
\dd Redoes a previously undone move.
\dt \ii\e{Copy}
\dd Copies the current state of your game to the clipboard in text
format, so that you can paste it into (say) an e-mail client or a
web message board if you're discussing the game with someone else.
(Not all games support this feature.)
\dt \ii\e{Solve}
\dd Transforms the puzzle instantly into its solved state. For some
games (Cube) this feature is not supported at all because it is of
no particular use. For other games (such as Pattern), the solved
state can be used to give you information, if you can't see how a
solution can exist at all or you want to know where you made a
mistake. For still other games (such as Sixteen), automatic solution
tells you nothing about how to \e{get} to the solution, but it does
provide a useful way to get there quickly so that you can experiment
with set-piece moves and transformations.
\lcont{
Some games (such as Solo) are capable of solving a game ID you have
typed in from elsewhere. Other games (such as Rectangles) cannot
solve a game ID they didn't invent themself, but when they did
invent the game ID they know what the solution is already. Still
other games (Pattern) can solve \e{some} external game IDs, but only
if they aren't too difficult.
The \q{Solve} command adds the solved state to the end of the undo
chain for the puzzle. In other words, if you want to go back to
solving it yourself after seeing the answer, you can just press Undo.
}
\dt \I{exit}\ii\e{Quit} (\q{Q}, Ctrl+\q{Q})
\dd Closes the application entirely.
\dt \i\e{Preferences}
\dd Where supported, brings up a dialog allowing you to configure
personal preferences about a particular game. Some of these
preferences will be specific to a particular game; others will be
common to all games.
\lcont{
One option common to all games allows you to turn off the one-key
shortcuts like \q{N} for new game or \q{Q} for quit, so that there's
less chance of hitting them by accident. You can still access the same
shortcuts with the Ctrl key.
}
\H{common-id} Specifying games with the \ii{game ID}
There are two ways to save a game specification out of a puzzle and
recreate it later, or recreate it in somebody else's copy of the
same puzzle.
The \q{\i{Specific}} and \q{\i{Random Seed}} options from the
\I{Game menu}\q{Game} menu (or the \q{File} menu, on \i{Mac OS X}) each
show a piece of text (a \q{game ID}) which is sufficient to
reconstruct precisely the same game at a later date.
You can enter either of these pieces of text back into the program
(via the same \q{Specific} or \q{Random Seed} menu options) at a
later point, and it will recreate the same game. You can also use
either one as a \i{command line} argument (on Windows or Unix); see
\k{common-cmdline} for more detail.
The difference between the two forms is that a descriptive game ID
is a literal \e{description} of the \i{initial state} of the game,
whereas a random seed is just a piece of arbitrary text which was
provided as input to the random number generator used to create the
puzzle. This means that:
\b Descriptive game IDs tend to be longer in many puzzles (although
some, such as Cube (\k{cube}), only need very short descriptions).
So a random seed is often a \e{quicker} way to note down the puzzle
you're currently playing, or to tell it to somebody else so they can
play the same one as you.
\b Any text at all is a valid random seed. The automatically
generated ones are fifteen-digit numbers, but anything will do; you
can type in your full name, or a word you just made up, and a valid
puzzle will be generated from it. This provides a way for two or
more people to race to complete the same puzzle: you think of a
random seed, then everybody types it in at the same time, and nobody
has an advantage due to having seen the generated puzzle before
anybody else.
\b It is often possible to convert puzzles from other sources (such
as \q{nonograms} or \q{sudoku} from newspapers) into descriptive
game IDs suitable for use with these programs.
\b Random seeds are not guaranteed to produce the same result if you
use them with a different \i\e{version} of the puzzle program. This
is because the generation algorithm might have been improved or
modified in later versions of the code, and will therefore produce a
different result when given the same sequence of random numbers. Use
a descriptive game ID if you aren't sure that it will be used on the
same version of the program as yours.
\lcont{(Use the \q{About} menu option to find out the version number
of the program. Programs with the same version number running on
different platforms should still be random-seed compatible.)}
\I{ID format}A descriptive game ID starts with a piece of text which
encodes the \i\e{parameters} of the current game (such as grid
size). Then there is a colon, and after that is the description of
the game's initial state. A random seed starts with a similar string
of parameters, but then it contains a hash sign followed by
arbitrary data.
If you enter a descriptive game ID, the program will not be able to
show you the random seed which generated it, since it wasn't
generated \e{from} a random seed. If you \e{enter} a random seed,
however, the program will be able to show you the descriptive game
ID derived from that random seed.
Note that the game parameter strings are not always identical
between the two forms. For some games, there will be parameter data
provided with the random seed which is not included in the
descriptive game ID. This is because that parameter information is
only relevant when \e{generating} puzzle grids, and is not important
when playing them. Thus, for example, the difficulty level in Solo
(\k{solo}) is not mentioned in the descriptive game ID.
These additional parameters are also not set permanently if you type
in a game ID. For example, suppose you have Solo set to \q{Advanced}
difficulty level, and then a friend wants your help with a
\q{Trivial} puzzle; so the friend reads out a random seed specifying
\q{Trivial} difficulty, and you type it in. The program will
generate you the same \q{Trivial} grid which your friend was having
trouble with, but once you have finished playing it, when you ask
for a new game it will automatically go back to the \q{Advanced}
difficulty which it was previously set on.
\H{common-type} The \q{Type} menu
The \I{Type menu}\q{Type} menu, if present, may contain a list of
\i{preset} game settings. Selecting one of these will start a new
random game with the parameters specified.
The \q{Type} menu may also contain a \q{\i{Custom}} option which
allows you to fine-tune game \i{parameters}. The parameters
available are specific to each game and are described in the
following sections.
\H{common-cmdline} Specifying game parameters on the \i{command line}
(This section does not apply to the \i{Mac OS X} version.)
The games in this collection deliberately do not ever save
information on to the computer they run on: they have no high score
tables and no saved preferences. (This is because I expect at least
some people to play them at work, and those people will probably
appreciate leaving as little evidence as possible!)
However, if you do want to arrange for one of these games to
\I{default parameters, specifying}default to a particular set of
parameters, you can specify them on the command line.
The easiest way to do this is to set up the parameters you want
using the \q{Type} menu (see \k{common-type}), and then to select
\q{Random Seed} from the \q{Game} or \q{File} menu (see
\k{common-id}). The text in the \q{Game ID} box will be composed of
two parts, separated by a hash. The first of these parts represents
the game parameters (the size of the playing area, for example, and
anything else you set using the \q{Type} menu).
If you run the game with just that parameter text on the command
line, it will start up with the settings you specified.
For example: if you run Cube (see \k{cube}), select \q{Octahedron}
from the \q{Type} menu, and then go to the game ID selection, you
will see a string of the form \cq{o2x2#338686542711620}. Take only
the part before the hash (\cq{o2x2}), and start Cube with that text
on the command line: \cq{PREFIX-cube o2x2}.
If you copy the \e{entire} game ID on to the command line, the game
will start up in the specific game that was described. This is
occasionally a more convenient way to start a particular game ID
than by pasting it into the game ID selection box.
(You could also retrieve the encoded game parameters using the
\q{Specific} menu option instead of \q{Random Seed}, but if you do
then some options, such as the difficulty level in Solo, will be
missing. See \k{common-id} for more details on this.)
\H{common-unix-cmdline} \i{Unix} \i{command-line} options
(This section only applies to the Unix port.)
In addition to being able to specify game parameters on the command
line (see \k{common-cmdline}), there are various other options:
\dt \cw{--game}
\dt \cw{--load}
\dd These options respectively determine whether the command-line
argument is treated as specifying game parameters or a \i{save} file
to \i{load}. Only one should be specified. If neither of these options
is specified, a guess is made based on the format of the argument.
\dt \cw{--generate }\e{n}
\dd If this option is specified, instead of a puzzle being displayed,
a number of descriptive game IDs will be \I{generating game IDs}invented
and printed on standard output. This is useful for gaining access to
the game generation algorithms without necessarily using the frontend.
\lcont{
If game parameters are specified on the command-line, they will be
used to generate the game IDs; otherwise a default set of parameters
will be used.
The most common use of this option is in conjunction with \c{--print},
in which case its behaviour is slightly different; see below.
}
\dt \cw{--delete-prefs}
\dd This option causes the puzzle to delete the configuration file in
which its user preferences were stored, if there is one.
\dt \I{printing, on Unix}\cw{--print }\e{w}\cw{x}\e{h}
\dd If this option is specified, instead of a puzzle being displayed,
a printed representation of one or more unsolved puzzles is sent to
standard output, in \i{PostScript} format.
\lcont{
On each page of puzzles, there will be \e{w} across and \e{h} down. If
there are more puzzles than \e{w}\by\e{h}, more than one page will be
printed.
If \c{--generate} has also been specified, the invented game IDs will
be used to generate the printed output. Otherwise, a list of game IDs
is expected on standard input (which can be descriptive or random
seeds; see \k{common-id}), in the same format produced by
\c{--generate}.
For example:
\c PREFIX-net --generate 12 --print 2x3 7x7w | lpr
will generate two pages of printed Net puzzles (each of which will
have a 7\by\.7 wrapping grid), and pipe the output to the \c{lpr}
command, which on many systems will send them to an actual printer.
There are various other options which affect printing; see below.
}
\dt \cw{--save }\e{file-prefix} [ \cw{--save-suffix }\e{file-suffix} ]
\dd If this option is specified, instead of a puzzle being
displayed, saved-game files for one or more unsolved puzzles are
written to files constructed from the supplied prefix and/or suffix.
\lcont{
If \c{--generate} has also been specified, the invented game IDs will
be used to generate the printed output. Otherwise, a list of game IDs
is expected on standard input (which can be descriptive or random
seeds; see \k{common-id}), in the same format produced by
\c{--generate}.
For example:
\c PREFIX-net --generate 12 --save game --save-suffix .sav
will generate twelve Net saved-game files with the names
\cw{game0.sav} to \cw{game11.sav}.
}
\dt \cw{--version}
\dd Prints version information about the game, and then quits.
The following options are only meaningful if \c{--print} is also
specified:
\dt \cw{--with-solutions}
\dd The set of pages filled with unsolved puzzles will be followed by
the solutions to those puzzles.
\dt \cw{--scale }\e{n}
\dd Adjusts how big each puzzle is when printed. Larger numbers make
puzzles bigger; the default is 1.0.
\dt \cw{--colour}
\dd Puzzles will be printed in colour, rather than in black and white
(if supported by the puzzle).
\C{net} \i{Net}
\cfg{winhelp-topic}{games.net}
(\e{Note:} the \i{Windows} version of this game is called
\i\cw{NETGAME.EXE} to avoid clashing with Windows's own \cw{NET.EXE}.)
I originally saw this in the form of a Flash game called \i{FreeNet}
\k{FreeNet}, written by Pavils Jurjans; there are several other
implementations under the name \i{NetWalk}. The computer prepares a
network by connecting up the centres of squares in a grid, and then
shuffles the network by rotating every tile randomly. Your job is to
rotate it all back into place. The successful solution will be an
entirely connected network, with no closed loops. \#{The latter
clause means that there are no closed paths within the network.
Could this be clearer? "No closed paths"?} As a visual aid,
all tiles which are connected to the one in the middle are
highlighted.
\B{FreeNet} \W{http://www.jurjans.lv/stuff/net/FreeNet.htm}\cw{http://www.jurjans.lv/stuff/net/FreeNet.htm}
\H{net-controls} \i{Net controls}
\IM{Net controls} controls, for Net
\IM{Net controls} keys, for Net
\IM{Net controls} shortcuts (keyboard), for Net
This game can be played with either the keyboard or the mouse. The
controls are:
\dt \e{Select tile}: mouse pointer, arrow keys
\dt \e{Rotate tile anticlockwise}: left mouse button, \q{A} key
\dt \e{Rotate tile clockwise}: right mouse button, \q{D} key
\dt \e{Rotate tile by 180 degrees}: \q{F} key
\dt \e{Lock (or unlock) tile}: middle mouse button, shift-click, \q{S} key
\dd You can lock a tile once you're sure of its orientation. You can
also unlock it again, but while it's locked you can't accidentally
turn it.
The following controls are not necessary to complete the game, but may
be useful:
\dt \e{Shift grid}: Shift + arrow keys
\dd On grids that wrap, you can move the origin of the grid, so that
tiles that were on opposite sides of the grid can be seen together.
\dt \e{Move centre}: Ctrl + arrow keys
\dd You can change which tile is used as the source of highlighting.
(It doesn't ultimately matter which tile this is, as every tile will
be connected to every other tile in a correct solution, but it may be
helpful in the intermediate stages of solving the puzzle.)
\dt \e{Jumble tiles}: \q{J} key
\dd This key turns all tiles that are not locked to random
orientations.
(All the actions described in \k{common-actions} are also available.)
\H{net-params} \I{parameters, for Net}Net parameters
These parameters are available from the \q{Custom...} option on the
\q{Type} menu.
\dt \e{Width}, \e{Height}
\dd Size of grid in tiles.
\dt \e{Walls wrap around}
\dd If checked, flow can pass from the left edge to the right edge,
and from top to bottom, and vice versa.
\dt \e{Barrier probability}
\dd A number between 0.0 and 1.0 controlling whether an immovable
barrier is placed between two tiles to prevent flow between them (a
higher number gives more barriers). Since barriers are immovable, they
act as constraints on the solution (i.e., hints).
\lcont{
The grid generation in Net has been carefully arranged so that the
barriers are independent of the rest of the grid. This means that if
you note down the random seed used to generate the current puzzle
(see \k{common-id}), change the \e{Barrier probability} parameter,
and then re-enter the same random seed, you should see exactly the
same starting grid, with the only change being the number of
barriers. So if you're stuck on a particular grid and need a hint,
you could start up another instance of Net, set up the same
parameters but a higher barrier probability, and enter the game seed
from the original Net window.
}
\dt \e{Ensure unique solution}
\dd Normally, Net will make sure that the puzzles it presents have
only one solution. Puzzles with ambiguous sections can be more
difficult and more subtle, so if you like you can turn off this
feature and risk having ambiguous puzzles. (Also, finding \e{all}
the possible solutions can be an additional challenge for an
advanced player.)
\H{net-prefs} \I{preferences, for Net}Net user preferences
On platforms that support user preferences, the \q{Preferences} option
on the \q{Game} menu will let you configure when loops are highlighted
as errors. By default, they're always highlighted; by changing this
option, you can ask for a loop to be highlighted only if every tile
forming part of the loop is locked. This avoids the loop highlighting
acting as a spoiler for available deductions about squares you haven't
even looked at yet.
\C{cube} \i{Cube}
\cfg{winhelp-topic}{games.cube}
This is another one I originally saw as a web game. This one was a
Java game \k{cube-java-game}, by Paul Scott. You have a grid of 16
squares, six of which are blue; on one square rests a cube. Your move
is to use the arrow keys to roll the cube through 90 degrees so that
it moves to an adjacent square. If you roll the cube on to a blue
square, the blue square is picked up on one face of the cube; if you
roll a blue face of the cube on to a non-blue square, the blueness is
put down again. (In general, whenever you roll the cube, the two faces
that come into contact swap colours.) Your job is to get all six blue
squares on to the six faces of the cube at the same time. Count your
moves and try to do it in as few as possible.
Unlike the original Java game, my version has an additional feature:
once you've mastered the game with a cube rolling on a square grid,
you can change to a triangular grid and roll any of a tetrahedron, an
octahedron or an icosahedron.
\B{cube-java-game} \W{http://www3.sympatico.ca/paulscott/cube/cube.htm}\cw{http://www3.sympatico.ca/paulscott/cube/cube.htm}
\H{cube-controls} \i{Cube controls}
\IM{Cube controls} controls, for Cube
\IM{Cube controls} keys, for Cube
\IM{Cube controls} shortcuts (keyboard), for Cube
This game can be played with either the keyboard or the mouse.
Left-clicking anywhere on the window will move the cube (or other
solid) towards the mouse pointer.
The arrow keys can also used to roll the cube on its square grid in
the four cardinal directions.
On the triangular grids, the mapping of arrow keys to directions is
more approximate. Vertical movement is disallowed where it doesn't
make sense. The four keys surrounding the arrow keys on the numeric
keypad (\q{7}, \q{9}, \q{1}, \q{3}) can be used for diagonal movement.
(All the actions described in \k{common-actions} are also available.)
\H{cube-params} \I{parameters, for Cube}Cube parameters
These parameters are available from the \q{Custom...} option on the
\q{Type} menu.
\dt \e{Type of solid}
\dd Selects the solid to roll (and hence the shape of the grid):
tetrahedron, cube, octahedron, or icosahedron.
\dt \e{Width / top}, \e{Height / bottom}
\dd On a square grid, horizontal and vertical dimensions. On a
triangular grid, the number of triangles on the top and bottom rows
respectively.
\C{fifteen} \i{Fifteen}
\cfg{winhelp-topic}{games.fifteen}
The old ones are the best: this is the good old \q{\i{15-puzzle}}
with sliding tiles, which dates from the 1870s.
You have a 4\by\.4 square grid; 15 squares
contain numbered tiles, and the sixteenth is empty. Your move is to
choose a tile next to the empty space, and slide it into the space.
The aim is to end up with the tiles in numerical order, with the
space in the bottom right (so that the top row reads 1,2,3,4 and the
bottom row reads 13,14,15,\e{space}).
\H{fifteen-controls} \i{Fifteen controls}
\IM{Fifteen controls} controls, for Fifteen
\IM{Fifteen controls} keys, for Fifteen
\IM{Fifteen controls} shortcuts (keyboard), for Fifteen
This game can be controlled with the mouse or the keyboard.
A left-click with the mouse in the row or column containing the empty
space will move as many tiles as necessary to move the space to the
mouse pointer.
By default, the arrow keys will move a tile adjacent to the space in
the direction indicated (moving the space in the \e{opposite}
direction).
Pressing \q{h} will make a suggested move. Pressing \q{h} enough
times will solve the game, but it may scramble your progress while
doing so.
(All the actions described in \k{common-actions} are also available.)
\H{fifteen-params} \I{parameters, for Fifteen}Fifteen parameters
The only options available from the \q{Custom...} option on the \q{Type}
menu are \e{Width} and \e{Height}, which are self-explanatory. (Once
you've changed these, it's not a \q{15-puzzle} any more, of course!)
\H{fifteen-prefs} \I{preferences, for Fifteen}Fifteen user preferences
On platforms that support user preferences, the \q{Preferences} option
on the \q{Game} menu will let you configure the sense of the arrow
keys. With the default setting, \q{Move the tile}, the arrow key you
press indicates the direction that you want a tile to move, so that
(for example) if you want to move the tile left of the gap rightwards
into the gap, you'd press Right. With the opposite setting, \q{Move
the gap}, the behaviour of the arrow keys is reversed, and you would
press Left to move the tile left of the gap into the gap, so that the
\e{gap} ends up one square left of where it was.
\C{sixteen} \i{Sixteen}
\cfg{winhelp-topic}{games.sixteen}
Another sliding tile puzzle, visually similar to Fifteen (see
\k{fifteen}) but with a different type of move. This time, there is no
hole: all 16 squares on the grid contain numbered squares. Your move
is to shift an entire row left or right, or shift an entire column up
or down; every time you do that, the tile you shift off the grid
re-appears at the other end of the same row, in the space you just
vacated. To win, arrange the tiles into numerical order (1,2,3,4 on
the top row, 13,14,15,16 on the bottom). When you've done that, try
playing on different sizes of grid.
I \e{might} have invented this game myself, though only by accident if
so (and I'm sure other people have independently invented it). I
thought I was imitating a screensaver I'd seen, but I have a feeling
that the screensaver might actually have been a Fifteen-type puzzle
rather than this slightly different kind. So this might be the one
thing in my puzzle collection which represents creativity on my part
rather than just engineering.
\H{sixteen-controls} \I{controls, for Sixteen}Sixteen controls
Left-clicking on an arrow will move the appropriate row or column in
the direction indicated. Right-clicking will move it in the opposite
direction.
Alternatively, use the cursor keys to move the position indicator
around the edge of the grid, and use the return key to move the
row/column in the direction indicated.
You can also move the tiles directly. Move the cursor onto a tile,
hold Control and press an arrow key to move the tile under the
cursor and move the cursor along with the tile. Or, hold Shift to
move only the tile. Pressing Enter simulates holding down Control
(press Enter again to release), while pressing Space simulates
holding down shift.
(All the actions described in \k{common-actions} are also available.)
\H{sixteen-params} \I{parameters, for Sixteen}Sixteen parameters
The parameters available from the \q{Custom...} option on the
\q{Type} menu are:
\b \e{Width} and \e{Height}, which are self-explanatory.
\b You can ask for a limited shuffling operation to be performed on
the grid. By default, Sixteen will shuffle the grid in such a way
that any arrangement is about as probable as any other. You can
override this by requesting a precise number of shuffling moves to
be performed. Typically your aim is then to determine the precise
set of shuffling moves and invert them exactly, so that you answer
(say) a four-move shuffle with a four-move solution. Note that the
more moves you ask for, the more likely it is that solutions shorter
than the target length will turn out to be possible.
\C{twiddle} \i{Twiddle}
\cfg{winhelp-topic}{games.twiddle}
Twiddle is a tile-rearrangement puzzle, visually similar to Sixteen
(see \k{sixteen}): you are given a grid of square tiles, each
containing a number, and your aim is to arrange the numbers into
ascending order.
In basic Twiddle, your move is to rotate a square group of four
tiles about their common centre. (Orientation is not significant in
the basic puzzle, although you can select it.) On more advanced
settings, you can rotate a larger square group of tiles.
I first saw this type of puzzle in the GameCube game \q{Metroid
Prime 2}. In the Main Gyro Chamber in that game, there is a puzzle
you solve to unlock a door, which is a special case of Twiddle. I
developed this game as a generalisation of that puzzle.
\H{twiddle-controls} \I{controls, for Twiddle}Twiddle controls
To play Twiddle, click the mouse in the centre of the square group
you wish to rotate. In the basic mode, you rotate a 2\by\.2 square,
which means you have to click at a corner point where four tiles
meet.
In more advanced modes you might be rotating 3\by\.3 or even more at
a time; if the size of the square is odd then you simply click in
the centre tile of the square you want to rotate.
Clicking with the left mouse button rotates the group anticlockwise.
Clicking with the right button rotates it clockwise.
You can also move an outline square around the grid with the cursor
keys; the square is the size above (2\by\.2 by default, or larger).
Pressing the return key or space bar will rotate the current square
anticlockwise or clockwise respectively.
(All the actions described in \k{common-actions} are also available.)
\H{twiddle-parameters} \I{parameters, for Twiddle}Twiddle parameters
Twiddle provides several configuration options via the \q{Custom}
option on the \q{Type} menu:
\b You can configure the width and height of the puzzle grid.
\b You can configure the size of square block that rotates at a time.
\b You can ask for every square in the grid to be distinguishable
(the default), or you can ask for a simplified puzzle in which there
are groups of identical numbers. In the simplified puzzle your aim
is just to arrange all the 1s into the first row, all the 2s into
the second row, and so on.
\b You can configure whether the orientation of tiles matters. If
you ask for an orientable puzzle, each tile will have a triangle
drawn in it. All the triangles must be pointing upwards to complete
the puzzle.
\b You can ask for a limited shuffling operation to be performed on
the grid. By default, Twiddle will shuffle the grid so much that any
arrangement is about as probable as any other. You can override this
by requesting a precise number of shuffling moves to be performed.
Typically your aim is then to determine the precise set of shuffling
moves and invert them exactly, so that you answer (say) a four-move
shuffle with a four-move solution. Note that the more moves you ask
for, the more likely it is that solutions shorter than the target
length will turn out to be possible.
\C{rect} \i{Rectangles}
\cfg{winhelp-topic}{games.rectangles}
You have a grid of squares, with numbers written in some (but not all)
of the squares. Your task is to subdivide the grid into rectangles of
various sizes, such that (a) every rectangle contains exactly one
numbered square, and (b) the area of each rectangle is equal to the
number written in its numbered square.
Credit for this game goes to the Japanese puzzle magazine \i{Nikoli}
\k{nikoli-rect}; I've also seen a Palm implementation at \i{Puzzle
Palace} \k{puzzle-palace-rect}. Unlike Puzzle Palace's
implementation, my version automatically generates random grids of
any size you like. The quality of puzzle design is therefore not
quite as good as hand-crafted puzzles would be, but on the plus side
you get an inexhaustible supply of puzzles tailored to your own
specification.
\B{nikoli-rect} \W{https://www.nikoli.co.jp/en/puzzles/shikaku/}\cw{https://www.nikoli.co.jp/en/puzzles/shikaku/}
\B{puzzle-palace-rect} \W{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}\cw{https://web.archive.org/web/20041024001459/http://www.puzzle.gr.jp/puzzle/sikaku/palm/index.html.en}
\H{rectangles-controls} \I{controls, for Rectangles}Rectangles controls
This game is played with the mouse or cursor keys.
Left-click any edge to toggle it on or off, or left-click and drag to draw
an entire rectangle (or line) on the grid in one go (removing any existing
edges within that rectangle). Right-clicking and dragging will allow you
to erase the contents of a rectangle without affecting its edges.
Alternatively, use the cursor keys to move the position indicator
around the board. Pressing the return key then allows you to use the
cursor keys to drag a rectangle out from that position, and pressing
the return key again completes the rectangle. Using the space bar
instead of the return key allows you to erase the contents of a
rectangle without affecting its edges, as above. Pressing escape
cancels a drag.
When a rectangle of the correct size is completed, it will be shaded.
(All the actions described in \k{common-actions} are also available.)
\H{rectangles-params} \I{parameters, for Rectangles}Rectangles parameters
These parameters are available from the \q{Custom...} option on the
\q{Type} menu.
\dt \e{Width}, \e{Height}
\dd Size of grid, in squares.
\dt \e{Expansion factor}
\dd This is a mechanism for changing the type of grids generated by
the program. Some people prefer a grid containing a few large
rectangles to one containing many small ones. So you can ask
Rectangles to essentially generate a \e{smaller} grid than the size
you specified, and then to expand it by adding rows and columns.
\lcont{
The default expansion factor of zero means that Rectangles will
simply generate a grid of the size you ask for, and do nothing
further. If you set an expansion factor of (say) 0.5, it means that
each dimension of the grid will be expanded to half again as big
after generation. In other words, the initial grid will be 2/3 the
size in each dimension, and will be expanded to its full size
without adding any more rectangles.
Setting an expansion factor of around 0.5 tends to make the game
more difficult, and also (in my experience) rewards a less deductive
and more intuitive playing style. If you set it \e{too} high,
though, the game simply cannot generate more than a few rectangles
to cover the entire grid, and the game becomes trivial.
}
\dt \e{Ensure unique solution}
\dd Normally, Rectangles will make sure that the puzzles it presents
have only one solution. Puzzles with ambiguous sections can be more
difficult and more subtle, so if you like you can turn off this
feature and risk having ambiguous puzzles. Also, finding \e{all} the
possible solutions can be an additional challenge for an advanced
player. Turning off this option can also speed up puzzle generation.
\C{netslide} \i{Netslide}
\cfg{winhelp-topic}{games.netslide}
This game combines the grid generation of Net (see \k{net}) with the
movement of Sixteen (see \k{sixteen}): you have a Net grid, but
instead of rotating tiles back into place you have to slide them
into place by moving a whole row at a time.
As in Sixteen, \I{controls, for Netslide}control is with the mouse or
cursor keys. See \k{sixteen-controls}.
\I{parameters, for Netslide}The available game parameters have similar
meanings to those in Net (see \k{net-params}) and Sixteen (see
\k{sixteen-params}).
Netslide was contributed to this collection by Richard Boulton.
\C{pattern} \i{Pattern}
\cfg{winhelp-topic}{games.pattern}
You have a grid of squares, which must all be filled in either black
or white. Beside each row of the grid are listed, in order, the
lengths of the runs of black squares on that row; above each column
are listed, in order, the lengths of the runs of black squares in that
column. Your aim is to fill in the entire grid black or white.
I first saw this puzzle form around 1995, under the name
\q{\i{nonograms}}. I've seen it in various places since then, under
different names.
Normally, puzzles of this type turn out to be a meaningful picture
of something once you've solved them. However, since this version
generates the puzzles automatically, they will just look like random
groupings of squares. (One user has suggested that this is actually
a \e{good} thing, since it prevents you from guessing the colour of
squares based on the picture, and forces you to use logic instead.)
The advantage, though, is that you never run out of them.
\H{pattern-controls} \I{controls, for Pattern}Pattern controls
This game is played with the mouse.
Left-click in a square to colour it black. Right-click to colour it
white. If you make a mistake, you can middle-click, or hold down
Shift while clicking with any button, to colour the square in the
default grey (meaning \q{undecided}) again.
You can click and drag with the left or right mouse button to colour
a vertical or horizontal line of squares black or white at a time
(respectively). If you click and drag with the middle button, or
with Shift held down, you can colour a whole rectangle of squares
grey.
You can also move around the grid with the cursor keys. Pressing the
return key will cycle the current cell through empty, then black, then
white, then empty, and the space bar does the same cycle in reverse.
Moving the cursor while holding Control will colour the moved-over
squares black. Holding Shift will colour the moved-over squares
white, and holding both will colour them grey.
(All the actions described in \k{common-actions} are also available.)
\H{pattern-parameters} \I{parameters, for Pattern}Pattern parameters
The only options available from the \q{Custom...} option on the \q{Type}
menu are \e{Width} and \e{Height}, which are self-explanatory.
\C{solo} \i{Solo}
\cfg{winhelp-topic}{games.solo}
You have a square grid, which is divided into as many equally sized
sub-blocks as the grid has rows. Each square must be filled in with
a digit from 1 to the size of the grid, in such a way that
\b every row contains only one occurrence of each digit
\b every column contains only one occurrence of each digit
\b every block contains only one occurrence of each digit.
\b (optionally, by default off) each of the square's two main
diagonals contains only one occurrence of each digit.
You are given some of the numbers as clues; your aim is to place the
rest of the numbers correctly.
Under the default settings, the sub-blocks are square or
rectangular. The default puzzle size is 3\by\.3 (a 9\by\.9 actual
grid, divided into nine 3\by\.3 blocks). You can also select sizes
with rectangular blocks instead of square ones, such as 2\by\.3 (a
6\by\.6 grid divided into six 3\by\.2 blocks). Alternatively, you
can select \q{jigsaw} mode, in which the sub-blocks are arbitrary