fork(1) download
  1. =begin
  2. ゲーム名「蛇の寝床はままならぬ」
  3. casio basic language FX-CG50グラフ電卓で動くスライドパズル。
  4. 堀江伸一
  5.  
  6. 盤面にある同じ数字は1匹の蛇を表しています。
  7. 数字の両端は蛇の頭かしっぽ、真ん中は胴体を表しています。
  8.  
  9. マス目選択モード(みどり)
  10. 2,4,6,8キーで選択マスを上下左右に移動できます。
  11. 頭かしっぽで5キーを押すと蛇をつかみ蛇引っ張りモード(選択マス赤)になります。
  12.  
  13.  
  14. 蛇引っ張りモード(選択マス赤)
  15. 引っ張りモードでは2,4,6,8キーで引っ張る方向を決めて蛇を空白マスに引っ張れます。
  16. 5キーを押すと蛇から手を放して、マス目選択モード(みどり)に戻れます。
  17.  
  18. 蛇を引っ張って
  19. ###########
  20. #111222333#
  21. #444555 #
  22. ###########
  23. の配置にしたらゴールです。
  24. 処理速度の関係でゴール判定はしてないので、目視でゴールを確認してください。
  25.  
  26. 作者感想
  27. 今回のパズルは狭い中で工夫して移動する楽しみを考えてみました。
  28.  
  29. このパズルはスライドパズルですが。
  30. 作成時はスライドするとスライドしたものの形が変わるパズル。
  31. という発想で考えてみました。
  32. 蛇の長さや何匹いるかを変更したり、盤面を四角以外の形にするのも面白いかもしれません。
  33. 蛇以外にも形が変わるのは何かいい発想があるかもしれません。
  34.  
  35.  
  36. 蛇足
  37. 今回のパズルは縦と横で考えましたが。
  38. 高さと横の2D画面にして落下という概念を入れるのもいいかもしれません。
  39. そこからアイディアを追加して落ちものゲームに発展したら楽しそうですね。
  40. 捕らぬ狸の皮算用でした。
  41.  
  42.  
  43. 'ProgramMode:RUN
  44. [[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
  45.  
  46. [[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
  47.  
  48. 0->T
  49. 0->K
  50. 0->A
  51. 0->P
  52. 0->K
  53.  
  54.  
  55. For 2->I To 3
  56. For 2->J To 11
  57. Locate J,I,"_#E6A5_"
  58. Next
  59. Next
  60.  
  61. For 1->I To 5 Step 1
  62. For 3->J To 7 Step 2
  63. Mat D[I,J]->X
  64. Mat D[I,J+1]->Y
  65. I->Mat M[Y,X]
  66. Locate X,Y,I
  67. Next
  68. Next
  69.  
  70. For 1->I To 4
  71. Locate 1,I,"_#E6A6_"
  72. Locate 11,I,"_#E6A6_"
  73. Next
  74. For 1->I To 11
  75. Locate I,1,"_#E6A6_"
  76. Locate I,4,"_#E6A6_"
  77. Next
  78.  
  79. 2->X
  80. 2->Y
  81. Green Locate X,Y,Mat M[Y,X]
  82.  
  83. While K<>31
  84.  
  85. If 11<T
  86. Then
  87. 0->T
  88.  
  89. Goto 0
  90. Lbl 1
  91.  
  92. If A=1
  93. Then
  94.  
  95. Goto 4
  96. Lbl 5
  97.  
  98. Else
  99. If X<>V Or Y<>W
  100. Then
  101. Goto 2
  102. Lbl 3
  103. IfEnd
  104.  
  105. IfEnd
  106.  
  107. 0->K
  108. IfEnd
  109.  
  110. If K=0
  111. Then
  112. Getkey->K
  113. IfEnd
  114. T+1->T
  115. WhileEnd
  116.  
  117. ClrText
  118. Locate 3,5,"HOR"
  119. Goto 8
  120.  
  121. Lbl 0
  122. X->V
  123. Y->W
  124.  
  125. If K=53
  126. Then
  127. X+1->X
  128. IfEnd
  129.  
  130. If K=73
  131. Then
  132. X-1->X
  133. IfEnd
  134.  
  135. If K=62
  136. Then
  137. Y+1->Y
  138. IfEnd
  139.  
  140. If K=64
  141. Then
  142. Y-1->Y
  143. IfEnd
  144.  
  145. If Mat M[Y,X]=9
  146. Then
  147. V->X
  148. W->Y
  149. IfEnd
  150.  
  151. Mat M[W,V]->E
  152.  
  153. If K=63 And E<>0
  154. Then
  155. Mat D[E,3]->Q
  156. Mat D[E,4]->R
  157.  
  158. If Q=V And R=W And A=0
  159. Then
  160. Red Locate X,Y,E
  161. 1->A
  162. 1->P
  163. 0->K
  164. IfEnd
  165.  
  166. Mat D[E,7]->Q
  167. Mat D[E,8]->R
  168. If V=Q And W=R And A=0
  169. Then
  170. 1->A
  171. 3->P
  172. 0->K
  173. Red Locate X,Y,E
  174. IfEnd
  175.  
  176. IfEnd
  177.  
  178. Goto 1
  179.  
  180. Lbl 8
  181. Locate 6,5,"IE"
  182. Goto 9
  183.  
  184. Lbl 2
  185.  
  186. If Mat M[W,V]=0
  187. Then
  188. Locate V,W,"_#E6A5_"
  189. Else
  190. Locate V,W,Mat M[W,V]
  191. IfEnd
  192.  
  193. Mat M[Y,X]->Z
  194. If Z=0
  195. Then
  196. Green Locate X,Y,"_#E6A5_"
  197. Else
  198. Green Locate X,Y,Z
  199. IfEnd
  200.  
  201. Goto 3
  202.  
  203. Lbl 4
  204.  
  205. Mat M[Y,X]->E
  206. Mat M[W,V]->Z
  207.  
  208. If E=0
  209. Then
  210.  
  211. If P=1
  212. Then
  213.  
  214. Mat D[Z,3]->V
  215. Mat D[Z,4]->W
  216.  
  217. Locate V,W,Z
  218.  
  219. X->Mat D[Z,1]
  220. Y->Mat D[Z,2]
  221.  
  222. Mat D[Z,7]->V
  223. Mat D[Z,8]->W
  224.  
  225. 0->Mat M[W,V]
  226.  
  227. Locate V,W,"_#E6A5_"
  228.  
  229.  
  230. For 7->I To 3 Step (-2)
  231. Mat D[Z,I-2]->Mat D[Z,I]
  232. Mat D[Z,I-1]->Mat D[Z,I+1]
  233. Next
  234.  
  235. Red Locate X,Y,Z
  236. Z->Mat M[Y,X]
  237.  
  238. IfEnd
  239.  
  240. If P=3
  241. Then
  242.  
  243. Mat D[Z,7]->V
  244. Mat D[Z,8]->W
  245. Locate V,W,Z
  246. X->Mat D[Z,9]
  247. Y->Mat D[Z,10]
  248.  
  249. Mat D[Z,3]->V
  250. Mat D[Z,4]->W
  251. 0->Mat M[W,V]
  252. Locate V,W,"_#E6A5_"
  253.  
  254. For 3->I To 7 Step 2
  255.  
  256. Mat D[Z,I+2]->Mat D[Z,I]
  257. Mat D[Z,I+3]->Mat D[Z,I+1]
  258.  
  259. Next
  260.  
  261. Red Locate X,Y,Z
  262. Z->Mat M[Y,X]
  263.  
  264. IfEnd
  265.  
  266. X->V
  267. Y->W
  268.  
  269. Else
  270.  
  271. V->X
  272. W->Y
  273.  
  274. IfEnd
  275.  
  276. If K=63
  277. Then
  278. 0->A
  279. 0->P
  280. Green Locate X,Y,Z
  281. IfEnd
  282.  
  283. Goto 5
  284.  
  285. Lbl 9
  286.  
  287. Locate 3,2,"GAME CLEAR"
  288.  
  289.  
  290. =end
  291.  
  292. puts "casio basic FX-CG50で動くパズルゲーム"
Success #stdin #stdout 0.01s 8084KB
stdin
Standard input is empty
stdout
casio basic FX-CG50で動くパズルゲーム