942 Commits

Author SHA1 Message Date
ec38952c4c Stand-alone command-line interface to the obfuscate_bitmap()
function. Useful in conjunction with the new --save option to
generate lots of games, extract the aux strings from the game
generator, and de-obfuscate them in order to measure statistical
properties of their solutions.

[originally from svn r8352]
2008-11-29 13:51:36 +00:00
6aa7ccfa06 The other day I found it useful for a (silly) special purpose to
generate a thousand saved-game files of randomly generated puzzles.
On the general principle that if I find it useful someone else
conceivably might too, add a --save option to the Unix puzzle
binaries, for use with --generate in much the same way as --print.

[originally from svn r8351]
2008-11-29 08:50:50 +00:00
4443016a82 Fix parenthesis problem in Light Up solver. Should fix Debian bug
#505359.

[originally from svn r8342]
2008-11-28 19:33:40 +00:00
f514a1ea90 Let's have some more presets in here: 3x3 is much _too_ short and
easy compared to 6x6.

[originally from svn r8340]
2008-11-28 18:33:39 +00:00
b2f1b324fe Patch from Lee Dowling to implement mouse control in Sokoban, along
pretty much the same lines as Cube and Inertia.

[originally from svn r8301]
2008-11-16 15:47:55 +00:00
33be388d41 Take out some lurking "nullgame" holdovers from unfinished puzzle
source files, in case they cause trouble. Spotted by Lee Dowling.

[originally from svn r8300]
2008-11-16 15:42:32 +00:00
466aa6e532 Patches from Lee Dowling to make Light Up and Net use the
CURSOR_SELECT2 button (to, respectively, toggle a "definitely not
light" dot and to rotate in the opposite direction from
CURSOR_SELECT).

[originally from svn r8299]
2008-11-16 15:37:58 +00:00
ce237a73ee Couple of solving-related mid-end tweaks. Firstly, when we generate
a game which comes with an aux string, we immediately self-test that
string by passing it to solve() and test by assertion that it
succeeded. So a bug in a back end which intermittently generates
malformed aux strings will be detected as soon as it occurs, instead
of only if the user happens to use the Solve operation on a
particular game in which it happened.

Secondly, Ctrl-S now (undocumentedly) triggers the Solve operation,
on the general principle that keyboard shortcuts tend to come in
handy, and on the specific principle that if you want to look at
lots of solved grids in quick succession (say, when observing their
general shape and nature to see if your generation algorithm was
good or not) it's handy to have a quick way of getting to them.

[originally from svn r8298]
2008-11-16 15:28:28 +00:00
23fb0e7753 Check return values from fwrite when saving files.
[originally from svn r8278]
2008-11-04 23:02:07 +00:00
f4bd45e7b9 Patch from Lambros to improve the generality of path-generation. In
particular, Great Hexagonal tilings previously had virtually every
(if not _actually_ every) hexagon on the inside of the path, and now
don't.

[originally from svn r8277]
2008-11-04 21:39:59 +00:00
a35c660284 Patch from Chris Boyle to prevent Solo's inter-block dividing lines
from becoming indistinguishable from the intra-block ones at low
tile sizes.

[originally from svn r8259]
2008-11-02 14:29:41 +00:00
808495cb41 Apply "103_fix-unequal-digit-h.diff" from the Debian package:
Unequal 18x18 or above was unplayable due to a clash with the undocumented
"H" (hint) key. Resolve the clash by making the hint function only fire
when no square is selected.

[originally from svn r8200]
2008-10-05 12:22:37 +00:00
736da74eba Remove strange punctuation.
[originally from svn r8199]
2008-10-04 21:49:44 +00:00
8ad01fc6e7 Cut-and-paste error which was preventing any drop-down list in the
custom game configuration code from working in the Java applets.

[originally from svn r8192]
2008-09-19 07:31:52 +00:00
734dc80c53 Lambros points out that trying to generate a 3x3 Cairo Easy grid
spins forever, but observes that raising the limit to 4x4 across all
grid types is not good for the complex grids like great-hexagonal.
Introduce per-grid minimum sizes using mad macro trickery.

(In fact, for each grid type I've put in a minimum size which _both_
dimensions must equal or exceed, plus another minimum size which _at
least one_ must equal or exceed; that permits both 3x4 and 4x3 Cairo
while disallowing 3x3.)

[originally from svn r8191]
2008-09-18 18:19:55 +00:00
ef6166e198 Patch from Lambros implementing error highlighting in Loopy.
[originally from svn r8190]
2008-09-18 15:33:13 +00:00
55f9540179 Yet another complete rewrite of Slant's loop detection during
gameplay. Having tried methods based on using the slashes to define
a dsf on grid vertices, and also methods based on tracing round the
loops using conventional (non-dsf-based) graph theory, it occurred
to me the other day that there's a far simpler technique involving
connectivity. A loop is precisely that which causes the playing area
to become disconnected; so what we do now is to go through and build
a dsf describing connectedness of the _area_ of the grid rather than
the vertices. That divides the area into its maximal connected
components, and then we can trivially identify every edge that's
part of a loop by noticing that it separates two nonequivalent
pieces of space. The resulting algorithm is half the size of the old
one, and it's much easier to be confident of its correctness.

(Having said which, there will doubtless turn out to be an
embarrassing bug in it, but I haven't found it yet.)

[originally from svn r8187]
2008-09-17 16:43:36 +00:00
4cfec3765a Cosmetic: fix mismatch between game_compute_size() and game_redraw()
(was causing unwanted "drop-shadow" type effect).

[originally from svn r8186]
2008-09-16 23:51:57 +00:00
ba2a002c02 Lambros provides this workaround for a compiler warning on his
Ubuntu system. I'm inclined to think the real problem is in his gtk
headers, but this is a harmless enough change to avoid hassle.

[originally from svn r8181]
2008-09-14 08:52:59 +00:00
0819e8ec76 Typo spotted by James H.
[originally from svn r8180]
2008-09-13 19:21:53 +00:00
961f3d12b7 Oops, left this out of r8178: having defined COMBINED everywhere in
the puzzles, we can now remove it from the OS X makefile section.

[originally from svn r8179]
[r8178 == 43eafe1fdf356c0c1c88936ffa79c83291973b5d]
2008-09-13 19:18:42 +00:00
43eafe1fdf Change to the handling of -DCOMBINED in the makefiles. Instead of
defining it centrally per port, I think it's neater to define it for
each puzzle when adding that puzzle to the ALL list - because those
front ends which take -DCOMBINED are precisely those which use ALL.
In particular, this change opens up the possibility of compiling
both individual puzzles _and_ a combined monolith within the same
makefile.

[originally from svn r8178]
2008-09-13 19:17:26 +00:00
1d661ec46b Patch from James H providing lots more paranoid casting. Also one
actual behaviour change: Untangle now permits dragging with the
right mouse button, which has exactly the same effect as it does
with the left. (Harmless on desktop platforms, but helpful when
"right-click" is achieved by press-and-hold; now the drag takes
place even if you hesitate first.)

[originally from svn r8177]
2008-09-13 18:29:20 +00:00
5ead207060 Patch from James H to centralise some generally useful cursor-
handling functionality into misc.c.

[originally from svn r8176]
2008-09-13 18:26:53 +00:00
fe1b91ac49 Since the lack of this has caused portability issues in the past:
add "-ansi -pedantic" to the main Unix makefile, and clean up a few
minor problems pointed out thereby.

[originally from svn r8175]
2008-09-13 18:25:19 +00:00
acf5c55d35 Patch from James H to make new-Loopy port more easily.
[originally from svn r8174]
2008-09-10 21:44:23 +00:00
018fa4053d Having played new-Loopy a bit recently, I've had occasion to think a
bit harder about advanced solver techniques. Expand the comment at
the top of the file.

[originally from svn r8167]
2008-09-07 10:02:40 +00:00
4033458aff How did I manage to check this in without actually trying to build
on Windows at all?! Fix some departures from the C standard, mostly
declaring variables after a statement has already been issued in the
same block. MSVC is picky about this where gcc is forgiving, and TBH
I'd change the latter given the choice.

[originally from svn r8166]
2008-09-07 08:35:52 +00:00
f7ab0a4996 New Loopy save file, compatible with the new Loopy.
[originally from svn r8165]
2008-09-06 21:24:21 +00:00
53bcfc7aea Nearly forgot: Lambros definitely deserves a place in the copyright
statement!

[originally from svn r8164]
2008-09-06 17:38:43 +00:00
ca20d86a06 Don't call changed_preset() until after we've initialised
fe->copy_menu_item.

[originally from svn r8163]
2008-09-06 17:33:04 +00:00
f38b711c73 Completely re-engineered version of Loopy, courtesy of Lambros
Lambrou. Now capable of handling triangular and hexagonal grids as
well as square ones, and then a number of semiregular plane tilings
and duals of semiregular ones. In fact, most of the solver code
supports an _arbitrary_ planar graph (well, provided both the graph
and its dual have no self-edges), so it could easily be extended
further with only a little more effort.

[originally from svn r8162]
2008-09-06 15:19:47 +00:00
a7431c0b7c New infrastructure feature. Games are now permitted to be
_conditionally_ able to format the current puzzle as text to be sent
to the clipboard. For instance, if a game were to support playing on
a square grid and on other kinds of grid such as hexagonal, then it
might reasonably feel that only the former could be sensibly
rendered in ASCII art; so it can now arrange for the "Copy" menu
item to be greyed out depending on the game_params.

To do this I've introduced a new backend function
(can_format_as_text_now()), and renamed the existing static backend
field "can_format_as_text" to "can_format_as_text_ever". The latter
will cause compile errors for anyone maintaining a third-party front
end; if any such person is reading this, I apologise to them for the
inconvenience, but I did do it deliberately so that they'd know to
update their front end.

As yet, no checked-in game actually uses this feature; all current
games can still either copy always or copy never.

[originally from svn r8161]
2008-09-06 09:27:56 +00:00
c6b1d4472b Correction from James H: sqrt(0) shouldn't occur any more than
sqrt(1) should.

[originally from svn r8108]
2008-07-05 22:07:35 +00:00
4322b90cbb More operations and bug fixes from James H.
[originally from svn r8107]
2008-07-05 15:40:43 +00:00
71807719f6 Remove rogue diagnostic.
[originally from svn r8106]
2008-07-05 13:32:28 +00:00
8104b2c35d Add a build version designation to the NestedVM build, after Jacob
pointed out that Help > About in the Java applets on my website
currently reports "Unidentified build".

[originally from svn r8105]
2008-07-05 13:31:59 +00:00
c115e9f5c8 Build the Java versions of the puzzles automatically as part of the
build process. Also update the new-puzzle checklist to make sure I
set up and test the Java applet for any new game I add.

[originally from svn r8096]
2008-06-27 17:28:32 +00:00
0c88256a22 Handle a <param name="game_id"> by passing it in to the C side as
argv[1], which in turn feeds it into the midend as a game ID. This
can of course take any of the forms supported by the native C
puzzles: a pure game parameter string, a params:description specific
game ID, or a params#seed random game ID.

[originally from svn r8095]
2008-06-26 19:09:07 +00:00
82b6a6fd39 The Java console keeps showing up error reports due to being asked
to resize the puzzle to zero size. Ignore all such requests, in the
assumption that a more sensible resize will be along soon enough
(which does seem to happen, though I haven't debugged the NestedVM
front end hard enough to figure out why the bogus resizes happen in
the first place).

[originally from svn r8094]
2008-06-26 19:07:44 +00:00
1df94d233a James H has helpfully provided yet more silly operators for the -A
mode. I think some user-defined ruleset configuration options are
now required...

[originally from svn r8092]
2008-06-24 20:58:35 +00:00
49a077728f An option to enable a debugging mode for the BFS.
[originally from svn r8091]
2008-06-23 17:34:56 +00:00
dd85394bf6 Michael Schierl's patch to compile the puzzles as Java applets using
NestedVM. Wow!

[originally from svn r8064]
2008-06-10 20:35:17 +00:00
2066ddabd6 Just noticed that the return value of midend_process_key() wasn't
documented.

[originally from svn r8062]
2008-06-10 17:24:09 +00:00
3633fec8ae New -A mode permitting even madder operators, and also -m to try to
print all possible paths to a value. The latter has a lot of
de-duplication left to be done, due to multiple evaluation orders.

[originally from svn r8061]
2008-06-09 18:28:03 +00:00
83121fb826 Shamelessly pander to compilers whose data flow warning systems
insist that a variable should be initialised in all branches of an
if, instead of just all the non-assertion-failing ones.

[originally from svn r7989]
2008-04-14 11:32:06 +00:00
4bd99ecae9 Now that we're highlighting the currently selected preset in the
Type menu, it looks faintly silly that Fifteen doesn't have any
presets other than Custom: you open a Fifteen window in its default
state, and the Type menu appears to be telling you it has a custom
size! Fixed by adding a preset for the default parameters.

I'd quite like to fix this properly by revamping the presets
mechanism in a way that _enforces_ that there must always be a
preset which matches the default parameters, but that's more fiddly
than it sounds. For the moment, this change fixes the only
externally visible infelicity in the current game set.

[originally from svn r7983]
2008-04-10 11:11:33 +00:00
19172c4a30 Implement tick marks in the Type menu on Windows. Now all my front
ends have got them.

[originally from svn r7982]
2008-04-09 14:57:20 +00:00
810814823f Implement tick marks in the Type menu on OS X.
[originally from svn r7981]
2008-04-09 14:36:08 +00:00
ae6c738127 New feature in midend.c which allows us to ask for the number of the
currently selected preset, if any. I've used this in the GTK front
end to have the Type menu mark the currently selected menu item.
(After considerable beating of GTK with sticks, I might add. Grr.)
Currently the same UI feature is not yet supported on Windows or
MacOS, but I hope to do those too at some point if it's feasible.

[originally from svn r7980]
2008-04-08 16:25:39 +00:00