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