ESCAPE by ノトホホ

再生

 縦スクロールのアクションゲームだ。下からせまってくるトゲトゲに刺される前にどんどん上に逃げていこう。
 上から転がってくる火の玉にぶつかってもゲームオーバー。火の玉の動きには法則性があるので、うまく軌道を予測して逃げ切ろう。
 操作は十字ボタンで移動。ハシゴの下で↑ボタンを押せば上に登れるけど、うかつに壁(天井)に頭をぶつけると火の玉の出現率が上がってしまうぞ!

作ったのはこの人

ノトホホ
Twitter

PCゲーム代表作に『うっでぃ・ぽこ』『メルルーン』『今夜も朝までパワフルまあじゃん』など。現(株)スマイルブーム代表取締役。


 CHECK POiNT 

博士
このプログラムはBG面やスプライトのテストも兼ねて作ったそうじゃ。プログラミングの参考にもなるかもしれんぞ。

ワンパク
シット! 23~25行目のDATA文はなんだってんだ! &Hとか言われてもサッパリだぜ!

神崎
&H~~というと、16進数の表記だっけ。&H010Dは普通に書けば、269……?

博士
ふむふむ、これは上位4ビットで反転情報を管理しておるようじゃな。

ワンパク
ジョ……? ビッ……?

博士
ミラ・ジョボビッチではないぞ。この作者は欲張ってDATA文の中に2つの要素を埋め込んだようじゃ。
このDATA文をよく見ると、&H直後の数字が0の時、1の時と2、3の時があるじゃろう。この部分が1の時は左右反転、2の時は上下反転、3の時は上下左右反転で表示するように作っているようじゃの。304行目あたりで表示しておる。
残りの3ケタの数字はBGのキャラクタ番号なんじゃな。

ワンパク
ハン……ケタ……?

インテリ
僕にはわかりますよ。3ケタ目以降の番号は、サンプルプログラム「CHRED」で確認できますね。

ワンパク
ウォォ──! 分かるヤツにしか分からねえ話をしてんじぇねェぞテメエら──!

神崎
落ち着いて! 落ち着いて、ワンパク君! だいじょうぶ、ここはわからなくていいところだから! BGを表示してるって思えばそれでいいから!

プログラムリスト

  1. ’┌──────────┐
  2. ’│タ゛ッシュツケ゛-ム│
  3. ’└──────────┘
  4. VISIBLE 1,1,1,1,1,1
  5. CLS
  6. GPAGE 0:GCOLOR 0:GCLS
  7. SPPAGE 0:SPCLR
  8. BGPAGE 0
  9. BGOFS 0,0,0
  10. BGOFS 1,0,0
  11. ’---
  12. CLEAR
  13. WMAX=3:EMAX=16:HI=1000
  14. DIM W(WMAX,4),OX(4),OY(4)
  15. DIM E(EMAX,8)
  16. _X=0:_Y=1:_V=2:_S=3:’_____
  17. DATA 0,0,1,0,0,1,1,1
  18. FOR I=0 TO 3
  19.  READ OX(I),OY(I)
  20. NEXT
  21. ’---カヘ゛
  22. DATA &H010D,&H010E,&H012D,&H012E
  23. DATA &H0001,&H1001,&H2001,&H3001
  24. DATA &H0002,&H1002,&H0002,&H1002
  25. FOR I=0 TO WMAX-1
  26.  FOR J=0 TO 3
  27.   READ W(I,J)
  28.  NEXT
  29. NEXT
  30. ’---ショキカ
  31. PR=2:REQ=0:FLW=-1
  32. ’┌───────┐
  33. ’│メインル-フ゜│
  34. ’└───────┘
  35. @MLOOP
  36.  OLDB=B:B=BUTTON()
  37.  IF FLW==REQ GOTO @JPFLOW
  38.  FLW=REQ
  39.  ON FLW GOSUB @TINIT,@GINIT,@OVINIT
  40. @JPFLOW
  41.  ON FLW GOSUB @TITLE,@GAME,@GOVER
  42.  VSYNC 1
  43. GOTO @MLOOP
  44. END
  45. ’┌────┐
  46. ’│ケ゛-ム│
  47. ’└────┘
  48. @GAME
  49. GOSUB @PLAYER
  50. GOSUB @PUTSTAT
  51. GOSUB @WALL
  52. GOSUB @ENEMY
  53. RETURN
  54. ’---
  55. @PUTSTAT
  56. LOCATE 0,0:PRINT”1P:”;OY;”m”
  57. COLOR 13
  58. LOCATE 10,0:PRINT”HI:”;HI;”m”
  59. COLOR 0
  60. RETURN
  61. ’---
  62. @ENEMY
  63. ’---シ゛カンテ゛ハッセイ
  64. ET=ET-1
  65. IF ET!=0 GOTO @ELOOP
  66. GOSUB @EBORN
  67. ’---
  68. @ELOOP
  69. CX=PX+7
  70. FOR I=0 TO ECNT-1
  71.  IF E(I,_S)==0 GOTO @ENEXT
  72.  ’---テキイト゛ウ
  73.  EX=E(I,_X):V=E(I,_V)
  74.  EY=E(I,_Y)+OY
  75.  IF E(I,_S)==1 GOTO @EMOVE
  76.  ’---オリテルサイチュウ
  77.  E(I,_S)=E(I,_S)-1
  78.  EY=EY+1
  79.  GOTO @EPUT
  80.  ’---サユウイト゛ウ
  81. @EMOVE
  82.  EX=EX+V
  83.  IF EX<16 THEN EX=16:V=-V
  84.  IF EX>223 THEN EX=224:V=-V
  85.  E(I,_V)=V
  86.  ’---アシモトカクニン
  87.  X=((EX+8)/8) AND 63
  88.  Y=((EY+16-OY)/8) AND 63
  89.  BGREAD(1,X,Y),N,C,H,V
  90.  IF N==1 GOTO @EPUT
  91.  ’---オリル
  92.  E(I,_S)=32+1
  93.  ’---ヒョウシ゛
  94. @EPUT
  95.  SPOFS I+10,EX,EY
  96.  E(I,_X)=EX
  97.  E(I,_Y)=EY-OY
  98.  ’---シュウリョウカクニン
  99.  IF EY>192 THEN E(I,_S)=0
  100.  ’---アタリハンテイ
  101.  IF PY!=EY GOTO @ENEXT
  102.  IF CX<EX  GOTO @ENEXT
  103.  IF CX>EX+15 GOTO @ENEXT
  104.  ’---タ゛メ-シ゛
  105.  DM=DM+1
  106.  ’---
  107. @ENEXT
  108. NEXT
  109. RETURN
  110. ’---
  111. @WALL
  112. ST=ST-1
  113. IF ST>0 GOTO @MOVWALL
  114. ’---テキヲフヤス
  115. ST=1000
  116. ECNT=ECNT+1
  117. IF ECNT>EMAX THEN ECNT=EMAX
  118. ’---
  119. @MOVWALL
  120. HY=HY+0.5
  121. BGOFS 0,0,HY AND 511
  122. BGOFS 1,0,(511-OY) AND 511
  123. ’--- ヤラレタ?
  124. IF DM>0 GOTO @PDEAD
  125. IF HY<160 THEN RETURN
  126. @PDEAD
  127. COLSET ”BG”,0,”FF0000”
  128. REQ=2
  129. RETURN
  130. ’---
  131. @PLAYER
  132. ’---シ゛ョウケ゛イト゛ウチュウ?
  133. IF MY==0 GOTO @MOVP
  134. V=1
  135. MY=MY-V
  136. OY=OY+V:IF OY>HI THEN HI=OY
  137. HY=HY-V
  138. IF HY<0 THEN HY=0
  139. IF MY>0 THEN RETURN
  140. RETURN
  141. ’---イト゛ウ
  142. @MOVP
  143. IF B AND 1 GOTO @MOVUP
  144. @MOVPLR
  145. VX=0
  146. IF B AND 4 THEN PD=2:VX=VX-1
  147. IF B AND 8 THEN PD=0:VX=VX+1
  148. PX=PX+VX*2
  149. IF PX<16 THEN PX=16
  150. IF PX>223 THEN PX=224
  151. ’---
  152. @PEND
  153. SPOFS 0,PX,PY
  154. SPCHR 0,PD*2+128
  155. IF SPCHK(1) THEN RETURN
  156. SPOFS 1,-32,-32
  157. SPANGLE 1,0
  158. RETURN
  159. ’---ノホ゛レタラノホ゛ル
  160. @MOVUP
  161. X=((PX+8)/8) AND 63
  162. Y=((PY-8-OY)/8) AND 63
  163. IF BX==X GOTO @MOVPLR
  164. BX=X
  165. BGREAD(1,X,Y),N,C,H,V
  166. IF N!=1 GOTO @UPOK
  167. ’---フ゛ツカッタ
  168. SPOFS 1,PX+8,PY-8
  169. SPANGLE 1,270,15
  170. BEEP 11
  171. GOSUB @EBORN
  172. GOTO @MOVPLR
  173. ’---
  174. @UPOK
  175. MY=32:PD=3:BX=-1:VX=0
  176. GOSUB @PUTLINE
  177. GOTO @PEND
  178. ’---アタラシイマッフ゜ノセイセイ
  179. @PUTLINE
  180. SX=SX+(RND(3)*2)
  181. Y=(BY-2) AND 63
  182. FOR X=2 TO 29 STEP 2
  183.  N=1:SX=FLOOR(SX%28)
  184.  IF X!=SX+2 GOTO @SKPWALL
  185.  N=2:SX=SX+(RND(8)*2)
  186. @SKPWALL
  187.  C=0:GOSUB @PUTWALL
  188. NEXT
  189. BY=BY-4:BY=BY AND 63
  190. ’---テキノハッセイ
  191. @EBORN
  192. ET=RND(30)+30
  193. I=0
  194. @EBORNLP
  195. IF E(I,_S)==0 GOTO @ESET
  196. I=I+1
  197. IF I<EMAX GOTO @EBORNLP
  198. RETURN
  199. ’---
  200. @ESET
  201. E(I,_S)=1
  202. X=RND(256-32)+16
  203. V=SGN(PX-X)
  204. IF V==0 THEN V=1
  205. E(I,_X)=X
  206. E(I,_V)=V
  207. Y=FLOOR(OY/32)*32
  208. E(I,_Y)=-Y
  209. RETURN
  210. ’---
  211. @GINIT
  212. CLS
  213. BGPAGE 0
  214. BGCLIP 0,0,31,23
  215. BGOFS 0,0,0
  216. BGOFS 1,0,0
  217. ’--- キャラテイキ゛
  218. B$=”EEEEEEEE”
  219. C$=”EFFFFFFF”
  220. D$=”EFDDDDDD”
  221. CHRSET ”BGU0”,1,B$+C$+D$+D$+D$+D$+D$+D$
  222. C$=”07700000”
  223. D$=”07777777”
  224. CHRSET ”BGU0”,2,C$+D$+D$+C$+C$+D$+D$+C$
  225. C$=   ”000F0000”
  226. C$=C$+”000F1000”
  227. C$=C$+”00FFF100”
  228. C$=C$+”00FFF100”
  229. C$=C$+”0FFFFF10”
  230. C$=C$+”0FFFFF10”
  231. C$=C$+”FFFFFFF1”
  232. C$=C$+”FFFFFFF1”
  233. CHRSET ”BGU0”,3,C$
  234. ’--- カヘ゛カ゛ワ
  235. C=0
  236. FOR Y=0 TO 63 STEP 2
  237.  N=1:X=0:GOSUB @PUTWALL
  238.  FOR X=2 TO 28 STEP 2
  239.   N=0:GOSUB @PUTWALL
  240.  NEXT
  241.  N=1:X=30:GOSUB @PUTWALL
  242. NEXT
  243. FOR Y=0 TO 63
  244.  FOR X=0 TO 31
  245.   BGPUT 0,X,Y,&H000,0,0,0
  246.  NEXT
  247. NEXT
  248. ’--- トケ゛カ゛ワ
  249. FOR X=0 TO 31
  250.  BGPUT 0,X,32,&H3,0,0,0
  251. NEXT
  252. FOR Y=1 TO 31
  253.  FOR X=0 TO 31
  254.   BGPUT 0,X,32+Y,&H327,12,0,0
  255.  NEXT
  256. NEXT
  257. ’---フ゜レイヤ-アニメ
  258. SPSET 0,134,2,0,0,PR
  259. SPANIM 0,2,8,0
  260. SPOFS 0,PX,PY
  261. SPSET 1,48,0,0,0,0
  262. SPANIM 1,4,2,0
  263. SPOFS 1,PX,PY
  264. ’---テキアニメ
  265. FOR I=0 TO EMAX-1
  266.  E(I,_S)=0
  267.  SPSET I+10,248,2,0,0,PR
  268.  SPANIM I+10,4,4,0
  269.  SPOFS I+10,-32,-32
  270. NEXT
  271. ’---
  272. SP=5:SX=0
  273. BY=0:OY=0
  274. PX=120:PY=96:VX=0
  275. PD=3:MY=0:DM=0
  276. HY=0:ST=1000:ECNT=0
  277. ’---スタ-ト
  278. GOSUB @PUTLINE
  279. VISIBLE 1,1,1,1,1,1
  280. BGMPLAY 11
  281. LOCATE 9,23
  282. PRINT ”П↑ノホ゛ル П←→イト゛ウ”;
  283. RETURN
  284. ’---
  285. @PUTWALL
  286. FOR M=0 TO 3
  287.  GOSUB @PUT1
  288. NEXT
  289. RETURN
  290. @PUT1
  291. I=W(N,M):H=0:V=0
  292. IF I AND &H1000 THEN H=1
  293. IF I AND &H2000 THEN V=1
  294. I=I AND &H3FF
  295. BGPUT 1,X+OX(M),Y+OY(M),I,C,H,V
  296. RETURN
  297. ’┌────┐
  298. ’│タイトル│
  299. ’└────┘
  300. @TINIT
  301. CLS
  302. VISIBLE 1,1,0,0,1,1
  303. BGMPLAY 22
  304. SPSET 0,48,0,0,0,0
  305. SPOFS 0,230,32
  306. SPANIM 0,4,4,0
  307. LOCATE 0,5
  308. COLOR 11:PRINT”      ┝┿┿┸┝┿┿┸┝┿┿┸┝┿┿┸┝┿┿┸┝┿┿┸”
  309. COLOR 9 :PRINT”     ┝┸  ┝┸  ┝┸  ┝┸┝┸┝┸┝┸┝┸”
  310. COLOR 0 :PRINT”    ┝┿┿┸┝┿┿┸┝┸  ┝┿┿┸┝┿┿┸┝┿┿┸”
  311. COLOR 9 :PRINT”   ┝┸    ┝┸┝┸  ┝┸┝┸┝┸  ┝┸”
  312. COLOR 11:PRINT”  ┝┿┿┸┝┿┿┸┝┿┿┸┝┸┝┸┝┸  ┝┿┿┸”
  313. COLOR 13
  314. LOCATE 12,1:PRINT”HI:”;HI;”m”
  315. COLOR 0
  316. LOCATE 8,13
  317. PRINT ”PUSH ANY BUTTON”
  318. LOCATE 3,22
  319. PRINT ”(C)2011 SmileBoom Co.Ltd.”
  320. RETURN
  321. ’---
  322. @TITLE
  323. IF B==0 THEN RETURN
  324. REQ=1
  325. VISIBLE 1,1,0,0,0,0
  326. BGMSTOP
  327. RETURN
  328. ’┌─────────┐
  329. ’│ケ゛-ムオ-ハ゛-│
  330. ’└─────────┘
  331. @OVINIT
  332. VISIBLE 1,1,0,0,1,0
  333. CLS
  334. BGMPLAY 6
  335. SPCHR 0,128
  336. SPANIM 0,8,2,0
  337. LOCATE PX/8,11
  338. PRINT”ウヘッ!”
  339. LOCATE 10,20
  340. PRINT”タ゛ッシュツ シッハ゜イ”
  341. RETURN
  342. ’---
  343. @GOVER
  344. IF BGMCHK() THEN RETURN
  345. COLSET ”BG”,0,”000000”
  346. SPCLR
  347. REQ=0
  348. RETURN