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