Ben Harris 023ce7554c Sixteen: limit length of moves
The code that actually executes the moves can only cope with moves of
at most the width (or height as appropriate) of the grid.  Reject any
longer move, and for symmetry also negative moves of the same
magnitude.

Without this, the tile-moving code tends to access off the start of the
tile array.  To demonstrate this, build Sixteen with AddressSanitizer
and load this save file:

SAVEFILE:41:Simon Tatham's Portable Puzzle Collection
VERSION :1:1
GAME    :7:Sixteen
PARAMS  :3:4x4
CPARAMS :3:4x4
DESC    :38:2,16,3,10,13,8,7,4,9,14,12,11,15,1,5,6
NSTATES :1:2
STATEPOS:1:2
MOVE    :4:C1,9
2023-01-15 16:21:37 +00:00
2022-12-31 16:18:53 +00:00
2021-04-25 22:00:12 +01:00
2021-04-25 09:59:15 +01:00
2023-01-02 18:28:39 +00:00
2018-11-13 21:48:24 +00:00
2023-01-12 22:21:45 +00:00
2021-04-22 06:24:23 +01:00
2021-04-22 06:24:23 +01:00
2021-04-25 22:00:12 +01:00
2021-03-29 19:02:23 +01:00
2018-11-13 21:48:24 +00:00
2018-11-13 21:48:24 +00:00
2018-11-13 21:48:24 +00:00
2017-09-20 18:03:44 +01:00
2023-01-08 13:53:28 +00:00
2021-05-21 09:10:53 +01:00
2021-03-29 19:02:23 +01:00
2023-01-15 16:21:37 +00:00
2023-01-08 13:53:28 +00:00
2018-11-13 21:48:24 +00:00
2017-05-07 16:25:56 +01:00

This is the README accompanying the source code to Simon Tatham's
puzzle collection. The collection's web site is at
<https://www.chiark.greenend.org.uk/~sgtatham/puzzles/>.

The puzzle collection is built using CMake <https://cmake.org/>. To
compile in the simplest way (on any of Linux, Windows or Mac), run
these commands in the source directory:

  cmake .
  cmake --build .

The manual is provided in Windows Help format for the Windows build;
in text format for anyone who needs it; and in HTML for the Mac OS X
application and for the web site. It is generated from a Halibut
source file (puzzles.but), which is the preferred form for
modification. To generate the manual in other formats, rebuild it,
or learn about Halibut, visit the Halibut website at
<https://www.chiark.greenend.org.uk/~sgtatham/halibut/>.
Description
No description provided
Readme 26 MiB
Languages
C 93.3%
JavaScript 1.4%
Objective-C 1.1%
CMake 1.1%
HTML 0.8%
Other 2.2%