Thanks David for your suggested solution - it looks very promising. I am not
sure what 4-connected means? But I think I understand the general idea
I am just wondering if your solution would guarantee that there will always
be a matching tile within a clear path?
For example if the random sequence is
4,4,27,27,1,1,36,36, <BLANK>
-1,-1,-1
-1,-1,-1
-1,-1,-1
then
-1,-1,-1
-1,-1,04
-1,-1,-1
then
-1,-1,-1
-1,-1,04
-1,-1,04
then
-1,-1,27
-1,-1,04
-1,-1,04
then
-1,-1,27
-1,-1,04
-1,27,04
then
-1,-1,27
-1,01,04
-1,27,04
then
-1,-1,27
-1,01,04
01,27,04
then
-1,36,27
-1,01,04
01,27,04
then
-1,36,27
36,01,04
01,27,04
then
00,36,27
36,01,04
01,27,04
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of David
Hershberger
Sent: 11 March 2009 17:40
To: Flash Coders List
Subject: Re: [Flashcoders] Advice on creating random grid of pairs for a
game
My first thought for your algorithm is to essentially follow the solution
path that your user might end up taking. Your user will be clearing areas
out, opening them up. Your algorithm could start with an empty grid and
fill in around a starting seed, growing the tile array outward.
1) empty grid
2) generate random sequence of pairs with the blank embedded in it, such as
4,4,27,27,1,1,36,<blank>,36, etc
3) choose random location for first tile, and place it there, and take it
off the pair queue.
4) choose an unfilled location which is 4-connected to any filled location,
and put the next tile from the queue in it.
5) repeat 4) until the queue is empty.
In this system, putting the "blank" in a location counts as filling that
location, so the value for "blank" needs to be different than the initial
values in the grid.
So for example, if -1 means uninitialized and 0 means blank:
-1,-1,-1
-1,-1,-1
-1,-1,-1
then
-1,-1,-1
-1,-1,04
-1,-1,-1
then
-1,-1,04
-1,-1,04
-1,-1,-1
then
-1,-1,04
-1,27,04
-1,-1,-1
then
-1,-1,04
-1,27,04
-1,27,-1
then
-1,-1,04
01,27,04
-1,27,-1
then
-1,-1,04
01,27,04
-1,27,01
then
36,-1,04
01,27,04
-1,27,01
then
36,00,04
01,27,04
-1,27,01
then
36,00,04
01,27,04
36,27,01
This guarantees that a solution exists, because the algorithm essentially
traces out the solution as it generates the level.
This presumes that players are not allowed to move tiles around yet leave
them on the board while solving the puzzle - it assumes that tiles just
disappear from the grid when the user selects a pair which has a clear path
between it, and that's the only interaction allowed. If they can slide them
around, my algorithm will still produce solve-able puzzles, but they won't
be as difficult as they could be, I think. :)
Interesting problem!
/mailman/listinfo/flashcoders
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders