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