=begin
ゲーム名「蛇の寝床はままならぬ」
casio basic language FX-CG50グラフ電卓で動くスライドパズル。
堀江伸一
盤面にある同じ数字は1匹の蛇を表しています。
数字の両端は蛇の頭かしっぽ、真ん中は胴体を表しています。
選択モード
2,4,6,8キーで選択マスを上下左右に移動できます。
頭かしっぽで5キーを押すと蛇をつかみ蛇引っ張りモードになります。
蛇引っ張りモード
引っ張りモードでは2,4,6,8キーで引っ張る方向を決めて蛇を空白マスに引っ張れます。
5キーを押すと蛇から手を放して、選択モードに戻れます。
蛇を引っ張って
###########
#111222333#
#444555 #
###########
の配置にしたらゴールです。
処理速度の関係でゴール判定はしてないので、目視でゴールを確認してください。
作者感想
今回のパズルは狭い中で工夫して移動する楽しみを考えてみました。
このパズルはスライドパズルですが。
作成時はスライドするとスライドしたものの形が変わるパズル。
という発想で考えてみました。
蛇の長さや何匹いるかを変更したり、盤面を四角以外の形にするのも面白いかもしれません。
蛇以外にも形が変わるのは何かいい発想があるかもしれません。
蛇足
今回のパズルは縦と横で考えましたが。
高さと横の2D画面にして落下という概念を入れるのもいいかもしれません。
そこからアイディアを追加して落ちものゲームに発展したら楽しそうですね。
捕らぬ狸の皮算用でした。
'ProgramMode:RUN
[[0,0,5,2,6,2,6,3,0,0][0,0,2,3,2,2,3,2,0,0][0,0,7,3,8,3,8,2,0,0][0,0,4,2,4,3,5,3,0,0][0,0,9,2,10,2,10,3,0,0]]->Mat D
[[9,9,9,9,9,9,9,9,9,9,9][9,0,0,0,0,0,0,0,0,0,9][9,0,0,0,0,0,0,0,0,0,9][9,9,9,9,9,9,9,9,9,9,9]]->Mat M
0->T
0->K
0->A
0->P
0->K
For 2->I To 3
For 2->J To 11
Locate J,I,"_#E6A5_"
Next
Next
For 1->I To 5 Step 1
For 3->J To 7 Step 2
Mat D[I,J]->X
Mat D[I,J+1]->Y
I->Mat M[Y,X]
Locate X,Y,I
Next
Next
For 1->I To 4
Locate 1,I,"_#E6A6_"
Locate 11,I,"_#E6A6_"
Next
For 1->I To 11
Locate I,1,"_#E6A6_"
Locate I,4,"_#E6A6_"
Next
2->X
2->Y
Green Locate X,Y,Mat M[Y,X]
While K<>31
If 11<T
Then
0->T
Goto 0
Lbl 1
If A=1
Then
Goto 4
Lbl 5
Else
If X<>V Or Y<>W
Then
Goto 2
Lbl 3
IfEnd
IfEnd
0->K
IfEnd
If K=0
Then
Getkey->K
IfEnd
T+1->T
WhileEnd
ClrText
Locate 3,5,"HOR"
Goto 8
Lbl 0
X->V
Y->W
If K=53
Then
X+1->X
IfEnd
If K=73
Then
X-1->X
IfEnd
If K=62
Then
Y+1->Y
IfEnd
If K=64
Then
Y-1->Y
IfEnd
If Mat M[Y,X]=9
Then
V->X
W->Y
IfEnd
Mat M[W,V]->E
If K=63 And E<>0
Then
Mat D[E,3]->Q
Mat D[E,4]->R
If Q=V And R=W And A=0
Then
Red Locate X,Y,E
1->A
1->P
0->K
IfEnd
Mat D[E,7]->Q
Mat D[E,8]->R
If V=Q And W=R And A=0
Then
1->A
3->P
0->K
Red Locate X,Y,E
IfEnd
IfEnd
Goto 1
Lbl 8
Locate 6,5,"IE"
Goto 9
Lbl 2
If Mat M[W,V]=0
Then
Locate V,W,"_#E6A5_"
Else
Locate V,W,Mat M[W,V]
IfEnd
Mat M[Y,X]->Z
If Z=0
Then
Green Locate X,Y,"_#E6A5_"
Else
Green Locate X,Y,Z
IfEnd
Goto 3
Lbl 4
Mat M[Y,X]->E
Mat M[W,V]->Z
If E=0
Then
If P=1
Then
Mat D[Z,3]->V
Mat D[Z,4]->W
Locate V,W,Z
X->Mat D[Z,1]
Y->Mat D[Z,2]
Mat D[Z,7]->V
Mat D[Z,8]->W
0->Mat M[W,V]
Locate V,W,"_#E6A5_"
For 7->I To 3 Step (-2)
Mat D[Z,I-2]->Mat D[Z,I]
Mat D[Z,I-1]->Mat D[Z,I+1]
Next
Red Locate X,Y,Z
Z->Mat M[Y,X]
IfEnd
If P=3
Then
Mat D[Z,7]->V
Mat D[Z,8]->W
Locate V,W,Z
X->Mat D[Z,9]
Y->Mat D[Z,10]
Mat D[Z,3]->V
Mat D[Z,4]->W
0->Mat M[W,V]
Locate V,W,"_#E6A5_"
For 3->I To 7 Step 2
Mat D[Z,I+2]->Mat D[Z,I]
Mat D[Z,I+3]->Mat D[Z,I+1]
Next
Red Locate X,Y,Z
Z->Mat M[Y,X]
IfEnd
X->V
Y->W
Else
V->X
W->Y
IfEnd
If K=63
Then
0->A
0->P
Green Locate X,Y,Z
IfEnd
Goto 5
Lbl 9
Locate 3,2,"GAME CLEAR"
=end
puts "casio basic FX-CG50で動くパズルゲーム"
PWJlZ2luCuOCsuODvOODoOWQjeOAjOibh+OBruWvneW6iuOBr+OBvuOBvuOBquOCieOBrOOAjQpjYXNpbyBiYXNpYyBsYW5ndWFnZSBGWC1DRzUw44Kw44Op44OV6Zu75Y2T44Gn5YuV44GP44K544Op44Kk44OJ44OR44K644Or44CCCuWggOaxn+S8uOS4gAoK55uk6Z2i44Gr44GC44KL5ZCM44GY5pWw5a2X44Gv77yR5Yy544Gu6JuH44KS6KGo44GX44Gm44GE44G+44GZ44CCCuaVsOWtl+OBruS4oeerr+OBr+ibh+OBrumgreOBi+OBl+OBo+OBveOAgeecn+OCk+S4reOBr+iDtOS9k+OCkuihqOOBl+OBpuOBhOOBvuOBmeOAggoK6YG45oqe44Oi44O844OJCjLvvIw077yMNu+8jDjjgq3jg7zjgafpgbjmip7jg57jgrnjgpLkuIrkuIvlt6blj7Pjgavnp7vli5XjgafjgY3jgb7jgZnjgIIK6aCt44GL44GX44Gj44G944Gn77yV44Kt44O844KS5oq844GZ44Go6JuH44KS44Gk44GL44G/6JuH5byV44Gj5by144KK44Oi44O844OJ44Gr44Gq44KK44G+44GZ44CCCgrom4flvJXjgaPlvLXjgorjg6Ljg7zjg4kK5byV44Gj5by144KK44Oi44O844OJ44Gn44GvMu+8jDTvvIw277yMOOOCreODvOOBp+W8leOBo+W8teOCi+aWueWQkeOCkuaxuuOCgeOBpuibh+OCkuepuueZveODnuOCueOBq+W8leOBo+W8teOCjOOBvuOBmeOAggrvvJXjgq3jg7zjgpLmirzjgZnjgajom4fjgYvjgonmiYvjgpLmlL7jgZfjgabjgIHpgbjmip7jg6Ljg7zjg4njgavmiLvjgozjgb7jgZnjgIIK6JuH44KS5byV44Gj5by144Gj44GmCiMjIyMjIyMjIyMjCiMxMTEyMjIzMzMjCiM0NDQ1NTUgICAjCiMjIyMjIyMjIyMjCuOBrumFjee9ruOBq+OBl+OBn+OCieOCtOODvOODq+OBp+OBmeOAggrlh6bnkIbpgJ/luqbjga7plqLkv4LjgafjgrTjg7zjg6vliKTlrprjga/jgZfjgabjgarjgYTjga7jgafjgIHnm67oppbjgafjgrTjg7zjg6vjgpLnorroqo3jgZfjgabjgY/jgaDjgZXjgYTjgIIKCuS9nOiAheaEn+aDswrku4rlm57jga7jg5Hjgrrjg6vjga/ni63jgYTkuK3jgaflt6XlpKvjgZfjgabnp7vli5XjgZnjgovmpb3jgZfjgb/jgpLogIPjgYjjgabjgb/jgb7jgZfjgZ/jgIIKCuOBk+OBruODkeOCuuODq+OBr+OCueODqeOCpOODieODkeOCuuODq+OBp+OBmeOBjOOAggrkvZzmiJDmmYLjga/jgrnjg6njgqTjg4njgZnjgovjgajjgrnjg6njgqTjg4njgZfjgZ/jgoLjga7jga7lvaLjgYzlpInjgo/jgovjg5Hjgrrjg6vjgIIK44Go44GE44GG55m65oOz44Gn6ICD44GI44Gm44G/44G+44GX44Gf44CCCuibh+OBrumVt+OBleOChOS9leWMueOBhOOCi+OBi+OCkuWkieabtOOBl+OBn+OCiuOAgeebpOmdouOCkuWbm+inkuS7peWkluOBruW9ouOBq+OBmeOCi+OBruOCgumdoueZveOBhOOBi+OCguOBl+OCjOOBvuOBm+OCk+OAggrom4fku6XlpJbjgavjgoLlvaLjgYzlpInjgo/jgovjga7jga/kvZXjgYvjgYTjgYTnmbrmg7PjgYzjgYLjgovjgYvjgoLjgZfjgozjgb7jgZvjgpPjgIIKCgrom4fotrMK5LuK5Zue44Gu44OR44K644Or44Gv57im44Go5qiq44Gn6ICD44GI44G+44GX44Gf44GM44CCCumrmOOBleOBqOaoquOBru+8ku+8pOeUu+mdouOBq+OBl+OBpuiQveS4i+OBqOOBhOOBhuamguW/teOCkuWFpeOCjOOCi+OBruOCguOBhOOBhOOBi+OCguOBl+OCjOOBvuOBm+OCk+OAggrjgZ3jgZPjgYvjgonjgqLjgqTjg4fjgqPjgqLjgpLov73liqDjgZfjgabokL3jgaHjgoLjga7jgrLjg7zjg6DjgavnmbrlsZXjgZfjgZ/jgonmpb3jgZfjgZ3jgYbjgafjgZnjga3jgIIK5o2V44KJ44Gs54u444Gu55qu566X55So44Gn44GX44Gf44CCCgoKJ1Byb2dyYW1Nb2RlOlJVTgpbWzAsMCw1LDIsNiwyLDYsMywwLDBdWzAsMCwyLDMsMiwyLDMsMiwwLDBdWzAsMCw3LDMsOCwzLDgsMiwwLDBdWzAsMCw0LDIsNCwzLDUsMywwLDBdWzAsMCw5LDIsMTAsMiwxMCwzLDAsMF1dLT5NYXQgRAoKW1s5LDksOSw5LDksOSw5LDksOSw5LDldWzksMCwwLDAsMCwwLDAsMCwwLDAsOV1bOSwwLDAsMCwwLDAsMCwwLDAsMCw5XVs5LDksOSw5LDksOSw5LDksOSw5LDldXS0+TWF0IE0KCjAtPlQKMC0+SwowLT5BCjAtPlAKMC0+SwoKCkZvciAyLT5JIFRvIDMKRm9yIDItPkogVG8gMTEKTG9jYXRlIEosSSwiXyNFNkE1XyIKTmV4dApOZXh0CgpGb3IgMS0+SSBUbyA1IFN0ZXAgMQpGb3IgMy0+SiBUbyA3IFN0ZXAgMgpNYXQgRFtJLEpdLT5YCk1hdCBEW0ksSisxXS0+WQpJLT5NYXQgTVtZLFhdCkxvY2F0ZSBYLFksSQpOZXh0Ck5leHQKCkZvciAxLT5JIFRvIDQKTG9jYXRlIDEsSSwiXyNFNkE2XyIKTG9jYXRlIDExLEksIl8jRTZBNl8iCk5leHQKRm9yIDEtPkkgVG8gMTEKTG9jYXRlIEksMSwiXyNFNkE2XyIKTG9jYXRlIEksNCwiXyNFNkE2XyIKTmV4dAoKMi0+WAoyLT5ZCkdyZWVuIExvY2F0ZSBYLFksTWF0IE1bWSxYXQoKV2hpbGUgSzw+MzEKCklmIDExPFQKVGhlbiAKMC0+VAoKR290byAwCkxibCAxCgpJZiBBPTEKVGhlbiAKCkdvdG8gNApMYmwgNQoKRWxzZSAKSWYgWDw+ViBPciBZPD5XClRoZW4gCkdvdG8gMgpMYmwgMwpJZkVuZAoKSWZFbmQKCjAtPksKSWZFbmQKCklmIEs9MApUaGVuIApHZXRrZXktPksKSWZFbmQKVCsxLT5UCldoaWxlRW5kCgpDbHJUZXh0CkxvY2F0ZSAzLDUsIkhPUiIKR290byA4CgpMYmwgMApYLT5WClktPlcKCklmIEs9NTMKVGhlbiAKWCsxLT5YCklmRW5kCgpJZiBLPTczClRoZW4gClgtMS0+WApJZkVuZAoKSWYgSz02MgpUaGVuIApZKzEtPlkKSWZFbmQKCklmIEs9NjQKVGhlbiAKWS0xLT5ZCklmRW5kCgpJZiBNYXQgTVtZLFhdPTkKVGhlbiAKVi0+WApXLT5ZCklmRW5kCgpNYXQgTVtXLFZdLT5FCgpJZiBLPTYzIEFuZCBFPD4wClRoZW4gCk1hdCBEW0UsM10tPlEKTWF0IERbRSw0XS0+UgoKSWYgUT1WIEFuZCBSPVcgQW5kIEE9MApUaGVuIApSZWQgTG9jYXRlIFgsWSxFCjEtPkEKMS0+UAowLT5LCklmRW5kCgpNYXQgRFtFLDddLT5RCk1hdCBEW0UsOF0tPlIKSWYgVj1RIEFuZCBXPVIgQW5kIEE9MApUaGVuIAoxLT5BCjMtPlAKMC0+SwpSZWQgTG9jYXRlIFgsWSxFCklmRW5kCgpJZkVuZAoKR290byAxCgpMYmwgOApMb2NhdGUgNiw1LCJJRSIKR290byA5CgpMYmwgMgoKSWYgTWF0IE1bVyxWXT0wClRoZW4gCkxvY2F0ZSBWLFcsIl8jRTZBNV8iCkVsc2UgCkxvY2F0ZSBWLFcsTWF0IE1bVyxWXQpJZkVuZAoKTWF0IE1bWSxYXS0+WgpJZiBaPTAKVGhlbiAKR3JlZW4gTG9jYXRlIFgsWSwiXyNFNkE1XyIKRWxzZSAKR3JlZW4gTG9jYXRlIFgsWSxaCklmRW5kCgpHb3RvIDMKCkxibCA0CgpNYXQgTVtZLFhdLT5FCk1hdCBNW1csVl0tPloKCklmIEU9MApUaGVuIAoKSWYgUD0xClRoZW4gCgpNYXQgRFtaLDNdLT5WCk1hdCBEW1osNF0tPlcKCkxvY2F0ZSBWLFcsWgoKWC0+TWF0IERbWiwxXQpZLT5NYXQgRFtaLDJdCgpNYXQgRFtaLDddLT5WCk1hdCBEW1osOF0tPlcKCjAtPk1hdCBNW1csVl0KCkxvY2F0ZSBWLFcsIl8jRTZBNV8iCgoKRm9yIDctPkkgVG8gMyBTdGVwICgtMikKTWF0IERbWixJLTJdLT5NYXQgRFtaLEldCk1hdCBEW1osSS0xXS0+TWF0IERbWixJKzFdCk5leHQKClJlZCBMb2NhdGUgWCxZLFoKWi0+TWF0IE1bWSxYXQoKSWZFbmQKCklmIFA9MwpUaGVuIAoKTWF0IERbWiw3XS0+VgpNYXQgRFtaLDhdLT5XCkxvY2F0ZSBWLFcsWgpYLT5NYXQgRFtaLDldClktPk1hdCBEW1osMTBdCgpNYXQgRFtaLDNdLT5WCk1hdCBEW1osNF0tPlcKMC0+TWF0IE1bVyxWXQpMb2NhdGUgVixXLCJfI0U2QTVfIgoKRm9yIDMtPkkgVG8gNyBTdGVwIDIKCk1hdCBEW1osSSsyXS0+TWF0IERbWixJXQpNYXQgRFtaLEkrM10tPk1hdCBEW1osSSsxXQoKTmV4dAoKUmVkIExvY2F0ZSBYLFksWgpaLT5NYXQgTVtZLFhdCgpJZkVuZAoKWC0+VgpZLT5XCgpFbHNlIAoKVi0+WApXLT5ZCgpJZkVuZAoKSWYgSz02MwpUaGVuIAowLT5BCjAtPlAKR3JlZW4gTG9jYXRlIFgsWSxaCklmRW5kCgpHb3RvIDUKCkxibCA5CgpMb2NhdGUgMywyLCJHQU1FIENMRUFSIgoKCj1lbmQKCnB1dHMgImNhc2lvIGJhc2ljIEZYLUNHNTDjgafli5XjgY/jg5Hjgrrjg6vjgrLjg7zjg6AiIA==