aboutsummaryrefslogtreecommitdiff
path: root/palisade.c (follow)
Commit message (Collapse)AuthorAge
* Add missing casts to unsigned char inside ctype functions.Simon Tatham2016-02-01
| | | | | | These are necessary because the argument to a ctype function cannot be a negative value unless it's EOF. Thanks to Cygwin gcc for pointing out the mistake, and to Patrick Shaughnessy for this patch.
* Fix loophole in Palisade completion checker.Simon Tatham2015-11-03
| | | | | | | | | | | | | | | | | | | | A user pointed out that if you construct a 'solution' in which no clue square has too _many_ borders but at least one has too few, and then bring those clues up to their count by adding extra stray border lines _inside_ a connected component (avoiding actually dividing any component completely into two), then the game checker treats that as solved for victory-flash purposes, on the grounds that (a) the grid is divided into components of the right size and (b) all clues are satisfied. A small example is 4x4n4:22a2b2c33, with the non-solution of dividing the grid into four 2x2 square blocks and then adding a spurious extra edge between the two 3 clues. The old Palisade completion check would flash for victory _at the same time_ as highlighting the spurious edge in COL_ERROR. Fixed by enforcing in is_solved() that every border line must separate two distinct connected components.
* Format Palisade solve-type moves in sensible ASCII.Simon Tatham2015-11-03
| | | | | | | | | | | | | | | The solve move stored in 'aux' by new_game_desc consists of printable characters in the range '@' to 'O', each representing a 4-bit bitmap of edges around a cell. But the one generated on the fly by solve_game() was missing out the 0x40 bit and just returning characters in the range ^@ to ^O - which would not only have been horrible if you found such a string in a save file, but also meant that a game with any completely borderless square would have a solution move string terminating early due to the ^@, causing execute_move() to reject it. Example: ./palisade --test-solve --generate 1 5x5n5#12345-37 now succeeds, where previously it failed an assertion.
* Add a new puzzle: Palisade.Jonas Kölker2015-10-18