【´・ω・`】:下がB5:E8の4×4のマス目に1~15までの数字と
1枚のブランクパネルをランダムに並べるコードだ。
!!第1ブロック
!!変数%Panelの初期化
For %i = 1 To 15
%Panel(%i)=%i
Next
%Panel(16)= ""
!!第2ブロック
!!500回シャッフル
Randomize(ThisTime())
For %i = 1 To 500
%x=Int(Rand()*16)+1
%y=Int(Rand()*16)+1
%Temp=%Panel(%x)
%Panel(%x)=%Panel(%y)
%Panel(%y)=%Temp
Next
!!第3ブロック
!!B5:E8の4×4のマス目に
!!1~15までの数字と
!!1枚のブランクパネルを書き込む
%i =1
For %y = 5 To 8
For %x = 2 To 5
Cells(%y, %x)=%Panel(%i)
%i = %i +1
Next
Next
【´・ω・`】:今までやってきたコードを並べただけだから
特に解説の必要は無いと思う。
ただ、このコードでパネルを並べると本当に
ランダムに並んでしまう。
(●`ε´●):ランダムに並べようとして書いたコードなのだから
当たり前じゃないか。何か不都合でもあるのか?
【´・ω・`】:うん、15パズルではブランクパネルと隣り合った
パネルを交換することによってゲームを進めて
行くわけだろう?
(●`ε´●):ああ。
【´・ω・`】:本当にランダムに並べてしまうと解けるかどうかの
保証が無くなってしまうそうだ。だから、頑張れば
必ず、解けるようにするためにはこのコードでは
不都合があるんだ。
(●`ε´●):どうすればいいんだ?
(続く)
コメント