|
From: | Brian Huffman |
Subject: | Re: [Enigma-devel] level submission: minesweeper |
Date: | Tue, 15 Apr 2008 08:46:52 -0700 |
User-agent: | Internet Messaging Program (IMP) H3 (4.1.6) |
Quoting Ronald Lamprecht <address@hidden>:
The problem of unsolvable bomb distributions can be fixed by a simple algorithm. All bomb free fields must be connected to the outside area by direct path. For all bomb free fields of the border mark all reachable fields by a recursive depth run. Marking all visited fields allows to limit the recursive depth run to those border fields that are not yet marked.
I have now implemented such a reachability check. Unreachable tiles do not occur very often, but the check does occasionally reject a mine distribution.
This would reduce the problem to bomb distributions that are not "solvable" due to the intrinsic ambiguity. A simple solution would be to set enigma.ConserveLevel to TRUE and provide a panelty that keeps players from misusing it. E.g. an it-weight on each resurrection would be fair. That would be o.k. for solving one or two last ambiguities by trial. But it should keep players from using it on a regular basis.
I am experimenting with using it-cross to trigger a hint mechanism that will uncover a single random tile. I figured that having to wait 10 seconds would discourage people from using it too much. However, I found what seems to be a bug: You can touch the cross briefly, then go somewhere else; the cross will be triggered 10 seconds later, whether you stay there or not. This behavior does not agree with the description on the wiki, which says that you need to stay on the cross for 10 seconds.
Of course you are welcome to write an algorithm that rejects ambiguos bomb distributions. This would allow you to give the user a solvable start of a few opened fields, too. But the algorithm might be more complex.
Yes, I think an algorithm to test for solvability would be too complex; minesweeper problems are NP-complete, after all. I think a hint mechanism with a time penalty would be a better approach.
- Brian
[Prev in Thread] | Current Thread | [Next in Thread] |