WALL by ノトホホ

再生

 雑誌『日経ソフトウエア』10月号('11年8月24日発売)連動企画! 第2特集「『プチコン』でニンテンドー3DS/DSiゲームプログラミング入門」に掲載される……かもしれなかったプログラムのリストをここで公開するぞ。
 この『WALL』はサイドビューの縦スクロールアクションゲーム。十字ボタン左右で移動、Aボタンでジャンプして、塔のカギを取って出口をめざそう。
 ガイコツにぶつかれば倒せるものの、LIFEが減ってしまう。減ったLIFEは薬を取れば回復するが、油断は禁物だ。足場から落ちて画面より下に行ってしまうと、その場でゲームオーバーになってしまうぞ。

作ったのはこの人

ノトホホ
Twitter

おなじみ「日曜プログラマーのプロ」ことスマイルブーム社長。サイドビューのジャンプ処理を作るたびにいつも「ここは前回どう作ってたっけ?」と忘れていて苦労するので、今回は自分でもこのリストを見て思い出せるように、と気合が入っているとか。


 CHECK POiNT 

神崎
なにか説明がおかしい気がするんだけど……「掲載されるかもしれなかった」?

インテリ
うん、雑誌に載ると思って気合を入れすぎて、誌面スペースを取りすぎるリストになっちゃったんだ。簡単に言うとボツになったということかな。

ワンパク
載ってねェのかよ! ちょっとは考えてプログラムしやがれ!

博士
温情で写真1枚くらいは掲載されるそうじゃが……。もっとも、読者にわかりやすいよう整理した結果、長いプログラムになってしまったと言えんこともなくはないかもしれん。
ジャンプの処理や、最初から最後まで変数の値で一元管理しとる画面遷移など、リストを読むと参考になるハズじゃぞ。

インテリ
このプログラムは載らないけど、『日経ソフトウエア』10月号('11年8月24日発売)でプチコン特集は本当に掲載! ショートプログラムでいろんなテクニックが解説される予定だよ。

博士
諸君がここを読んでいるのが発売期間ならもちろん今月号をスグ買うのがオススメじゃが、すでに次の号が出ているというときはバックナンバーの販売もあるのじゃぞ。

ワンパク
シット、魂を売り渡したみてえな宣伝臭さがしやがるぜ!

プログラムリスト

  1. ’┌──────────────────────┐
  2. ’│ニッケイソフトウェア フ゜チコン トクシュウ│
  3. ’├──────────────────────┤
  4. ’│ (c)SmileBoom Co.Ltd. │
  5. ’└──────────────────────┘
  6. CLEAR
  7. VISIBLE 1,1,0,0,0,0
  8. COLOR 0:CLS
  9. PRINT”Жチョット マッテテネ...”
  10. GPAGE 0:GCLS 0
  11. SPPAGE 0:SPCLR
  12. BGPAGE 0:GOSUB @BGCLR
  13. GOSUB @CHRCOPY
  14. ’------------------ メモリ-ショキカ
  15. MAPMAX=100:STGMAX=3
  16. DIM M$(MAPMAX)
  17. WALLMAX=9:WALLST=8
  18. SPC=717:BLOCK=721:PR=2
  19. DIM W(WALLMAX,WALLST)
  20. GOSUB @SETWALL
  21. OBJMAX=20:_MAX=10
  22. _X=0:_Y=1:_W=2:_H=3:_S=4
  23. _D=5:_N=6:_T=7:_O=8:_B=9
  24. DIM O(OBJMAX,_MAX)
  25. ’------------------- リセットル-フ゜
  26. @RESET
  27. MC=0:FL=-1:RQ=0
  28. STG=1:SCTOP=5000
  29. ’-------------------- メインル-フ゜
  30. @MAINLOOP
  31. OB=BT:BT=BUTTON()
  32. BI=BT AND (NOT OB)
  33. GOSUB @FLOW
  34. MC=MC+1:VSYNC 1
  35. IF BI!=1024 THEN @MAINLOOP
  36. ’-------------------- シュウリョウ
  37. COLOR 0:CLS:GCLS 0:BGMSTOP
  38. FOR I=0 TO 191
  39.  COLINIT ”GRP”,I
  40. NEXT
  41. VISIBLE 1,1,0,0,0,0
  42. PRINT”Жマタアソンテ゛ネ!”
  43. END
  44. ’■カ゛メンセンイ
  45. ’───────────────────────────
  46. @FLOW
  47. IF FL==RQ THEN @FLSKIP
  48. FL=RQ
  49. ON FL GOSUB @TI,@OI,@GI,@CI
  50. @FLSKIP
  51. ON FL GOSUB @TM,@OM,@GM,@CM
  52. RETURN
  53. ’■FL=0:タイトル
  54. ’───────────────────────────
  55. @TI
  56. VISIBLE 0,1,0,0,0,0
  57. CLS:S$=”        ”:BGMPLAY 15
  58. LOCATE 5,3:COLOR 1
  59. ?”ニッケイソフトウェア フ゜チコン トクシュウ”
  60. PRINT:COLOR 0
  61. ? S$;”┌──────────────┐”
  62. ? S$;”│┌┐┌┐┌──┐┌┐ ┌┐ │”
  63. ? S$;”││├┤││┌┐│││ ││ │”
  64. ? S$;”││││││├┤││└┐│└┐│”
  65. ? S$;”│└──┘└┘└┘└─┘└─┘│”
  66. ? S$;”└──────────────┘”
  67. ? S$;”シ゛ャンフ゜アクションケ゛-ム!”
  68. LOCATE 4,22:COLOR 1
  69. ?”(C)2011 SmileBoom Co.Ltd.”
  70. ’----------------- ク゛ラテ゛-ション
  71. FOR I=0 TO 191
  72.  C=(255-I)*2:GOSUB @MKCOL
  73.  B$=C$:C=I*1.5:GOSUB @MKCOL
  74.  G$=C$:C=I/2:GOSUB @MKCOL
  75.  COLSET ”GRP”,I+1,C$+G$+B$
  76.  GLINE 0,I,255,I,I+1
  77. NEXT
  78. STG=0:ENDY=192+15
  79. VISIBLE 1,1,0,0,0,1
  80. RETURN
  81. ’------------------ タイトル メイン
  82. @TM
  83. S$=”              ”
  84. IF (MC AND 15)>7 THEN @TMPUT
  85. S$=”PUSH А BUTTON”
  86. @TMPUT
  87. LOCATE 9,16:COLOR 13
  88. PRINT S$:COLOR 0
  89. IF BI==16 THEN RQ=1
  90. RETURN
  91. ’■FL=1:ケ゛-ムマエ
  92. ’───────────────────────────
  93. @OI
  94. CLS:BGMPLAY 4
  95. VISIBLE 1,1,0,0,0,1
  96. LOCATE 12,10:COLOR 0
  97. PRINT”STAGE:”;STG+1
  98. MOY=0:MVY=0:OVY=0:MPY=0
  99. OBJ=0:GOSUB @OBJINIT
  100. BGOFS 0,0,0:BGOFS 1,0,0
  101. GOSUB @BGCLR
  102. GOSUB @SETMAP
  103. VISIBLE 1,1,1,1,1,1
  104. WC=60*2:RETURN
  105. ’---------------- ケ゛-ムマエ メイン
  106. @OM
  107. ’--- キ゛ョウタンイテ゛ マッフ゜ヒョウシ゛
  108. IF MPY<12 THEN @PUTLINE
  109. ’--- マッフ゜カキオワッタラ ユウコウ
  110. @OMSKIP
  111. WC=WC-1:IF WC==0 THEN RQ=2
  112. IF BI==16 THEN RQ=2
  113. RETURN
  114. ’■FL=3:ケ゛-ムアト
  115. ’───────────────────────────
  116. @CI
  117. CLS:VISIBLE 1,1,1,1,1,1
  118. LS=0:X=12:B=6:C$=”GAMEOVER”
  119. IF LIFE<0 GOTO @CIEND
  120. LS=1:X=13:B=5:C$=”CLEAR!”
  121. @CIEND
  122. BGMPLAY B:COLOR 0
  123. LOCATE X,10:PRINT C$
  124. RETURN
  125. ’---------------- ケ゛-ムアト メイン
  126. @CM
  127. ON LS GOTO @CMG,@CMC,@CME
  128. ’--- LS=2:エンテ゛ィンク゛
  129. @CME
  130. IF (MC AND 7) THEN RETURN
  131. IF EC<RLC THEN READ C$:? C$
  132. EC=EC+1
  133. IF EC>=RLC+60 THEN RQ=0
  134. RETURN
  135. ’--- LS=0:ケ゛-ムオ-ハ゛-
  136. @CMG
  137. IF BI==16 THEN RQ=0
  138. RETURN
  139. ’--- LS=1:クリア
  140. @CMC
  141. GOSUB @CMG:IF RQ THEN RETURN
  142. ’--- ステ-シ゛コウシン
  143. STG=STG+1:RQ=1
  144. IF STG<STGMAX THEN RETURN
  145. ’--- エンテ゛ィンク゛カイシ
  146. LS=2:EC=0:RQ=3
  147. RESTORE @STAFF:READ RLC
  148. CLS:BGMPLAY 7
  149. VISIBLE 1,1,0,0,0,0
  150. RETURN
  151. ’--- 
  152. @STAFF
  153. DATA 33
  154. DATA ”■STAFF”
  155. DATA ”---------------------”
  156. DATA ”◎PROGRAM”
  157. DATA ”  SmileBoom”
  158. DATA ””
  159. DATA ”◎DESIGN”
  160. DATA ”  SmileBoom”
  161. DATA ””
  162. DATA ”◎PLANING”
  163. DATA ”  SmileBoom”
  164. DATA ””,””,””,””,””
  165. DATA ””,””,””,””,””
  166. DATA ””,””,””,””,””
  167. DATA ””,””,””,””,””
  168. DATA ”┌──────────┐”
  169. DATA ”│THANK YOU!│”
  170. DATA ”└──────────┘”
  171. ’■FL=2:ケ゛-ム
  172. ’───────────────────────────
  173. @GI
  174. ’--- ヘンスウショキカ
  175. TIME=99*60:LIFE=3:SC=0:DMG=0
  176. SPD=2:JVY=1:JC=0:DMGC=0
  177. O(0,_N)=64
  178. ’--- カ゛メンシ゛ュンヒ゛
  179. CLS:COLOR 1:BGMPLAY MAPBGM
  180. LOCATE 29, 1:PRINT”TOP”
  181. LOCATE 27, 4:PRINT”SCORE”
  182. LOCATE 28, 7:PRINT”TIME”
  183. LOCATE 28,10:PRINT”LIFE”
  184. LOCATE 27,13:PRINT”STAGE”
  185. GOTO @PUTSTAT
  186. ’------------------ ケ゛-ム メイン
  187. @GM
  188. GOSUB @BGSCRL
  189. IX=0
  190. ’---------------------------
  191. @GMLOOP
  192. T=O(IX,_T)
  193. IF T==0 THEN @GMSKIP
  194. ’--- ハイレツカラコヒ゜-
  195. PX=O(IX,_X):PY=O(IX,_Y)
  196. OX=PX:OY=PY
  197. ST=O(IX,_S):NM=O(IX,_N)
  198. VX=O(IX,_W):VY=O(IX,_H)
  199. ’--- スクロ-ルフ゛ン コウリョ
  200. PY=PY+OVY
  201. ’--- オフ゛シ゛ェクト セイキ゛ョ
  202. GOSUB @OBJMOVE
  203. ’--- ハイレツヘモト゛ス
  204. O(IX,_W)=VX:O(IX,_H)=VY
  205. O(IX,_S)=ST:O(IX,_N)=NM
  206. O(IX,_X)=PX:O(IX,_Y)=PY
  207. SPCHR IX,NM
  208. SPOFS IX,PX-8,PY-16
  209. ’---------------------------
  210. @GMSKIP
  211. IX=IX+1
  212. IF IX<OBJMAX THEN @GMLOOP
  213. ’---
  214. TIME=TIME-1
  215. IF (MC AND 63) THEN RETURN
  216. GOTO @PUTSTAT
  217. ’■オフ゛シ゛ェクト
  218. ’───────────────────────────
  219. @OBJMOVE
  220. ON T GOTO @OF,@OP,@OE,@OD
  221. ’--- T=0:ナシ
  222. @OF
  223. RETURN
  224. ’--- T=3:ト゛ア
  225. @OD
  226. IF O(0,_S) THEN RETURN
  227. GOSUB @CHKHIT
  228. IF C THEN RQ=3
  229. RETURN
  230. ’--- フ゜レイヤ-トノセッショク
  231. @CHKHIT
  232. Y=ABS(PLY-PY)
  233. IF Y>8 THEN C=0:RETURN
  234. X=ABS(PLX-PX)
  235. IF X>6 THEN C=0:RETURN
  236. C=1:RETURN
  237. ’--- T=2:テキ
  238. @OE
  239. IF PY>ENDY THEN @DEAD
  240. ON ST GOTO @OE0,@OE1
  241. ’---
  242. PY=PY+VY:VY=VY+1:RETURN
  243. ’---
  244. @OE0
  245. ST=1:VX=1
  246. IF RND(6)<3 THEN VX=-1
  247. ’---
  248. @OE1
  249. GOSUB @CHKHIT
  250. IF C THEN @ENEDEAD
  251. ’---
  252. NM=128:IF VX<0 THEN NM=132
  253. PX=PX+VX
  254. GOSUB @CHKSD :’サユウホセイ
  255. IF C THEN @OEREV
  256. GOSUB @CHKFL :’アシモトカクニン
  257. IF C THEN RETURN
  258. @OEREV
  259. PX=OX:ST=0:RETURN
  260. ’--- テキシホ゛ウ
  261. @ENEDEAD
  262. ST=2:VY=-10:BEEP 6,-4000
  263. SPCHR IX,NM,15,0,1,PR
  264. ’--- フ゜レイヤ-ヘタ゛メ-シ゛
  265. O(0,_N)=88:DMGC=16
  266. LIFE=LIFE-1
  267. IF LIFE>=0 THEN @EDEND
  268. SPCHR 0,88:RQ=3
  269. @EDEND
  270. GOTO @PUTLIFE
  271. ’---
  272. @DEAD
  273. T=0:O(IX,_T)=T:BEEP 14
  274. IF IX THEN RETURN
  275. RQ=3:LIFE=-1:GOTO @PUTLIFE
  276. ’--- T=1:フ゜レイヤ-
  277. @OP
  278. IF DMGC==0 THEN @OP2
  279. DMGC=DMGC-1:RETURN
  280. ’
  281. @OP2
  282. V=0:N=NM
  283. IF BT AND 4 THEN V=-1:N=72
  284. IF BT AND 8 THEN V=1:N=64
  285. NM=N
  286. ON ST GOSUB @PW,@PJ,@PH,@PF
  287. ’---
  288. IF PY>ENDY THEN @DEAD
  289. GOSUB @CHKCOIN
  290. ’--- ハンテイヨウニ サ゛ヒョウヲノコス
  291. PLX=PX:PLY=PY:RETURN
  292. ’●ST=0(ツウシ゛ョウイト゛ウ
  293. ’---------------------------
  294. @PW
  295. VX=V:PX=PX+VX*SPD
  296. GOSUB @CHKSD :’サユウホセイ
  297. GOSUB @CHKFL :’アシモトカクニン
  298. IF C==0 THEN @PFALL
  299. ’--- Аホ゛タンオシタ?
  300. IF (BI AND 16)==0 THEN RETURN
  301. ’--- シ゛ャンフ゜スタ-ト
  302. @PJUMP
  303. ST=1:VY=-4:JC=0:BEEP 8
  304. O(IX,_O)=PY AND &H1F0
  305. O(IX,_B)=SPC
  306. RETURN
  307. ’●ST=1(シ゛ャンフ゜シ゛ョウショウチュウ
  308. ’---------------------------
  309. @PJ
  310. IF V!=0 THEN VX=V
  311. PX=PX+VX*SPD
  312. GOSUB @CHKSD :’サユウホセイ
  313. PY=PY+VY
  314. GOSUB @CHKHD :’アタマホセイ
  315. IF C!=0 THEN @PJHEND
  316. ’--- Аホ゛タンオサレツツ゛ケテル?
  317. JC=JC+1
  318. IF (BT AND 16)==0 THEN JC=8
  319. IF JC<8 THEN RETURN
  320. ’--- ホウフ゛ツセン カイシ
  321. @PJEND
  322. O(IX,_B)=0:ST=2:RETURN
  323. ’--- シ゛ョウショウチュウ アタマヲフ゛ツケタ
  324. @PJHEND
  325. IF JC==0 THEN @PGLAND
  326. GOTO @PHEND
  327. ’--- ラッカ カイシ
  328. @PFALL
  329. C=BLOCK
  330. IF VY>=0 THEN GOSUB @GETFL
  331. O(IX,_B)=C:ST=3:VY=0:RETURN
  332. ’●ST=2(ホウフ゛ツセン→ラッカ
  333. ’---------------------------
  334. @PH
  335. IF V!=0 THEN VX=V
  336. PX=PX+VX*SPD
  337. GOSUB @CHKSD :’サユウホセイ
  338. PY=PY+VY:VY=VY+JVY
  339. GOSUB @CHKHD :’アタマホセイ
  340. IF C!=0 THEN @PHEND
  341. IF VY>=0 THEN @PHEND
  342. ’--- シ゛ョウショウチュウ
  343. GOSUB @GETFL
  344. O(IX,_B)=C:RETURN
  345. ’--- 
  346. @PHEND
  347. GOSUB @CHKFL :’アシモトカクニン
  348. IF C==0 THEN @PFALL
  349. ’--- チョクセ゛ンハ カヘ゛?
  350. IF O(IX,_B) THEN @PFALL
  351. GOTO @PGLAND
  352. ’●ST=3(ラッカ
  353. ’---------------------------
  354. @PF
  355. IF V!=0 THEN VX=V:GOTO @PF2
  356. VX=VX+SGN(0-VX)*0.05
  357. @PF2
  358. PX=PX+VX*SPD
  359. GOSUB @CHKSD :’サユウホセイ
  360. PY=PY+VY:VY=VY+JVY
  361. IF VY>4 THEN VY=4
  362. GOSUB @CHKFL :’アシモトカクニン
  363. I=O(IX,_B):O(IX,_B)=C
  364. IF C==0 THEN RETURN
  365. ’--- チョクセ゛ンハスヘ゜-ス?
  366. IF I!=0 THEN RETURN
  367. ’--- チャクチ&ホセイ
  368. @PGLAND
  369. VY=0:ST=0:O(IX,_B)=SPC
  370. PY=PY AND &H1F0
  371. I=O(IX,_O):O(IX,_O)=PY
  372. Y=I-PY:IF Y<=0 THEN RETURN
  373. IF I>159 THEN RETURN
  374. ’--- スクロ-ルカイシ
  375. I=Y AND &H0F
  376. ADDY=Y AND &H1F0
  377. IF I THEN ADDY=ADDY+16
  378. MVY=MVY+ADDY
  379. RETURN
  380. ’■ヒョウシ゛ホシ゛ョ
  381. ’───────────────────────────
  382. @PUTN
  383. LOCATE 25,Y
  384. N$=”       ”+STR$(N)
  385. N$=MID$(N$,LEN(N$)-7,7)
  386. PRINT N$:Y=Y+3:RETURN
  387. ’---
  388. @PUTSTAT
  389. COLOR 0:Y=2
  390. IF SC>SCTOP THEN SCTOP=SC
  391. N=SCTOP:GOSUB @PUTN
  392. N=SC:GOSUB @PUTN
  393. N=FLOOR(TIME/60):GOSUB @PUTN
  394. N=STG+1:GOSUB @PUTN
  395. ’---
  396. @PUTLIFE
  397. IF LIFE<0 THEN RETURN
  398. N$=”・・・・・・・ааааааа”
  399. N$=MID$(N$,LIFE,7)
  400. LOCATE 25,11:COLOR 13
  401. PRINT N$
  402. @PSTE
  403. COLOR 0:RETURN
  404. ’---
  405. @MKCOL
  406. IF C>255 THEN C=255
  407. C$=”0”+HEX$(FLOOR(C))
  408. C$=MID$(C$,LEN(C$)-2,2)
  409. RETURN
  410. ’■テ゛-タ
  411. ’───────────────────────────
  412. ’--- マッフ゜1
  413. @M1
  414. DATA 0
  415. DATA ”□Щ      Ц□”
  416. DATA ”□┏┏┏┏ ┏┏┏□”
  417. DATA ”□  Ш┏ Ш  □”
  418. DATA ”□┏ ┏┏┏┏┏┏□”
  419. DATA ”□Ъ      г□”
  420. DATA ”□□□□□□□□□□”
  421. DATA ””
  422. ’--- マッフ゜2
  423. @M2
  424. DATA 2
  425. DATA ”□Щ   Ш  Ц□”
  426. DATA ”□┏┏┏┏Ш┏┏┏□”
  427. DATA ”□ Ц  Ш Ш □”
  428. DATA ”□┏┏┏┏Ш┏┏ □”
  429. DATA ”□ ┏  Ш   □”
  430. DATA ”□ ┏┏┏┏┏ ┏□”
  431. DATA ”□ ШШШШШ  □”
  432. DATA ”□   ┏ Ц  □”
  433. DATA ”□ ┏┏┏┏┏Ш┏□”
  434. DATA ”□  ┏  ШШШ□”
  435. DATA ”□   Ц ┏Ш □”
  436. DATA ”□┏┏┏┏┏┏ ┏□”
  437. DATA ”□  ШШШ ┏ □”
  438. DATA ”□      ┏ □”
  439. DATA ”□ ┏┏┏┏┏ ┏□”
  440. DATA ”□ШШ  ┏   □”
  441. DATA ”□ШШ ┏    □”
  442. DATA ”□┏┏┏┏┏┏ ┏□”
  443. DATA ”□  Ш┏Ц Ё □”
  444. DATA ”□ ┏┏┏┏┏┏┏□”
  445. DATA ”□ Ш Ш┏┏┏ □”
  446. DATA ”□        □”
  447. DATA ”□┏┏┏┏┏┏Ш┏□”
  448. DATA ”□   ┏ Ш  □”
  449. DATA ”□ Ё ЦШ   □”
  450. DATA ”□ ┏┏┏┏┏ ┏□”
  451. DATA ”□   □□ ┏ □”
  452. DATA ”□ Ц ШШШ  □”
  453. DATA ”□┏┏┏┏┏┏Ш┏□”
  454. DATA ”□ Ш    ┏ □”
  455. DATA ”□   ЦШШ  □”
  456. DATA ”□┏┏┏┏┏┏ ┏□”
  457. DATA ”□  Ш   Ш □”
  458. DATA ”□ Ш Ш  ┏ □”
  459. DATA ”□Ш   ШЦ  □”
  460. DATA ”□ ┏┏┏┏┏Ё┏□”
  461. DATA ”□ШШШШШ ┏ □”
  462. DATA ”□   Ц┏□  □”
  463. DATA ”□  ┏┏   Ш□”
  464. DATA ”□ШШШ г Ё □”
  465. DATA ”□□□□□□□□□□”
  466. DATA ””
  467. ’--- マッフ゜3
  468. @M3
  469. DATA 29
  470. DATA ”□        □”
  471. DATA ”□ЩШШ г  Ц□”
  472. DATA ”□□□□□□□□□□”
  473. DATA ””
  474. ’--- マッフ゜ヨミコミ
  475. @SETMAP
  476. MY=0
  477. ON STG GOTO @SM1,@SM2,@SM3
  478. @SM1
  479. RESTORE @M1:GOTO @READMAP
  480. @SM2
  481. RESTORE @M2:GOTO @READMAP
  482. @SM3
  483. RESTORE @M3
  484. ’---
  485. @READMAP
  486. READ MAPBGM
  487. ’---
  488. @SETMLOOP
  489. READ M$(MY)
  490. IF M$(MY)==”” THEN RETURN
  491. MY=MY+1
  492. GOTO @SETMLOOP
  493. ’--- BGカヘ゛フ゛ヒンヨミコミ
  494. @WALL
  495. ’0:スヘ゜-ス
  496. DATA 717,15,717,15
  497. DATA 717,15,717,15
  498. ’1:В
  499. DATA 908,12,909,12
  500. DATA 940,12,941,12
  501. ’2:□
  502. DATA 721,10,722,10
  503. DATA 753,10,754,10
  504. ’3:┏
  505. DATA  45, 9, 47, 9
  506. DATA 717,11,717,11
  507. ’4:Т
  508. DATA 929,15,929,15
  509. DATA 929,15,929,15
  510. ’5:エラ-ヨウ
  511. DATA 717, 0,717, 0
  512. DATA 717, 0,717, 0
  513. ’6:Ё カイフク
  514. DATA   4, 0,  5, 0
  515. DATA   6, 0,  7, 0
  516. ’7:◎ コイン
  517. DATA   8, 0,  9, 0
  518. DATA  10, 0, 11, 0
  519. ’8:
  520. DATA   0, 0,  0, 0
  521. DATA   0, 0,  0, 0
  522. ’---
  523. @SETWALL
  524. RESTORE @WALL
  525. FOR I=0 TO WALLMAX-1
  526.  FOR J=0 TO WALLST-1
  527.   READ W(I,J)
  528.  NEXT
  529. NEXT
  530. RETURN
  531. ’■BGホシ゛ョ
  532. ’───────────────────────────
  533. ’--- BGハンテイ
  534. @CHKHD
  535. X=(PX/8) AND 31
  536. Y=((PY+MOY-16)/8) AND 63
  537. BGREAD(1,X,Y),C,P,W,H
  538. IF C<48 THEN C=0:RETURN
  539. IF C==SPC THEN C=0:RETURN
  540. PY=(PY AND &HF0)+16
  541. RETURN
  542. ’---
  543. @CHKFL
  544. X=(PX/8) AND 31
  545. Y=((PY+MOY)/8) AND 63
  546. BGREAD(1,X,Y),C,P,W,H
  547. IF C!=SPC THEN RETURN
  548. C=0:RETURN
  549. ’---
  550. @CHKCOIN
  551. X=((PX/16) AND 15)*2
  552. Y=(((PY+MOY-8)/16) AND 31)*2
  553. BGREAD(0,X,Y),C,P,W,H
  554. IF C<4 THEN RETURN
  555. IF C<8 THEN @LIFEUP
  556. SC=SC+10:BEEP 7
  557. GOSUB @CLRWALL:GOTO @PUTSTAT
  558. @LIFEUP
  559. LIFE=LIFE+1:BEEP 5
  560. GOSUB @CLRWALL:GOTO @PUTSTAT
  561. ’---
  562. @GETFL
  563. X=(PX/8) AND 31
  564. Y=((PY+MOY)/8) AND 63
  565. BGREAD(1,X,Y),C,P,W,H
  566. IF C==SPC THEN C=0
  567. RETURN
  568. ’---
  569. @CHKSD
  570. X=(PX/8) AND 31
  571. Y=((PY+MOY-16)/8) AND 63
  572. BGREAD(1,X,Y),C,P,W,H
  573. IF C==SPC THEN C=0:RETURN
  574. IF C<48 THEN C=0:RETURN
  575. ’---
  576. @CS1
  577. IF C==721 THEN @CSL
  578. IF C!=753 THEN @CS2
  579. @CSL
  580. PX=X*8-1:RETURN
  581. ’---
  582. @CS2
  583. IF C==722 THEN @CSR
  584. IF C!=754 THEN C=0:RETURN
  585. @CSR
  586. PX=X*8+8:RETURN
  587. ’--- BGショウキョ
  588. @BGCLR
  589. FOR P=0 TO 1
  590.  FOR Y=0 TO 63
  591.   FOR X=0 TO 63
  592.    BGPUT P,X,Y,0,0,0,0
  593.   NEXT
  594.  NEXT
  595. NEXT
  596. RETURN
  597. ’--- BGスクロ-ル
  598. @BGSCRL
  599. IF MVY<=0 THEN OVY=0:RETURN
  600. I=MOY AND 15
  601. IF I==0 THEN GOSUB @PUTLINE
  602. OVY=2
  603. MVY=MVY-OVY:MOY=MOY-OVY
  604. BGOFS 0,0,MOY
  605. BGOFS 1,0,MOY
  606. RETURN
  607. ’--- スフ゜ライトキャラヲBGヘ テンソウ
  608. @CHRCOPY
  609. N=60*4:B=4:GOSUB @CCPSUB
  610. N=36*4:B=8
  611. @CCPSUB
  612. FOR I=0 TO 3
  613.  CHRREAD(”SPU0”,N+I),C$
  614.  CHRSET ”BGU0”,B+I,C$
  615. NEXT
  616. RETURN
  617. ’■マッフ゜ホシ゛ョ
  618. ’───────────────────────────
  619. ’--- BG2x2ヒョウシ゛
  620. @PUTWALL ’D$,X,Y
  621. B=0
  622. IF W$==”Ё” THEN I=6:GOTO @PFR
  623. IF W$==”Ш” THEN I=7:GOTO @PFR
  624. B=1
  625. IF W$==”В” THEN I=1:GOTO @PWP
  626. IF W$==”□” THEN I=2:GOTO @PWP
  627. IF W$==”┏” THEN I=3:GOTO @PWP
  628. IF W$==”Т” THEN I=4:GOTO @PWP
  629. IF W$==” ” THEN I=0:GOTO @PWP
  630. ’--- フ゜レイヤ-?
  631. I=0:N=252:T=1:C=4
  632. IF W$==”г” THEN @PWOSET
  633. ’--- アキヲサカ゛ス
  634. N=128:T=2:C=2
  635. @WOLP
  636. IF O(I,_T)==0 THEN @PWOSET
  637. I=I+1:IF I<OBJMAX THEN @WOLP
  638. ’--- アキカ゛ナイノテ゛エラ-アツカイ
  639. I=5:GOTO @PWP
  640. ’--- オフ゛シ゛ェクト シンキトウロク
  641. @PWOSET
  642. OBJ=OBJ+1:O(I,_X)=X*8+8
  643. O(I,_Y)=Y*8+16-MOY
  644. IF W$!=”Щ” THEN @PWOANM
  645. N=59:T=3:C=1
  646. SPCHR I,N,3,0,0,PR
  647. ’---
  648. @PWOANM
  649. O(I,_T)=T:O(I,_N)=N
  650. O(I,_S)=0:O(I,_W)=0:O(I,_H)=0
  651. SPANIM I,C,8,0
  652. SPCHR I,N,0,0,0,PR
  653. SPOFS I,O(I,_X)-8,O(I,_Y)-16
  654. I=0:GOTO @PWP
  655. ’--- オモテケス
  656. @CLRWALL
  657. B=0:I=8
  658. GOTO @PWP
  659. ’--- オモテ2カイカク
  660. @PFR
  661. GOSUB @PWP
  662. B=1:I=0
  663. ’--- 2x2ヒョウシ゛
  664. @PWP
  665. J=Y AND 63
  666. N=W(I,0):C=W(I,1)
  667. BGPUT B,X,J,N,C,0,0
  668. N=W(I,2):C=W(I,3)
  669. BGPUT B,X+1,J,N,C,0,0
  670. N=W(I,4):C=W(I,5)
  671. J=(J+1) AND 63
  672. BGPUT B,X,J,N,C,0,0
  673. N=W(I,6):C=W(I,7)
  674. BGPUT B,X+1,J,N,C,0,0
  675. RETURN
  676. ’--- マッフ゜1キ゛ョウヒョウシ゛
  677. @PUTLINE ’MPY
  678. Y=22-(MPY*2):X=4
  679. J=(Y+1) AND 63
  680. FOR I=4 TO 23
  681.  BGPUT 0,I,Y,0,0,0,0
  682.  BGPUT 0,I,J,0,0,0,0
  683. NEXT
  684. ’---
  685. D$=”ТТТТТТТТТТ”
  686. IF MPY>MY+2 THEN @PLOFF
  687. D$=”□        □”
  688. IF MPY>=MY THEN @PLOFF
  689. D$=M$(MY-1-MPY)
  690. ’---
  691. @PLOFF
  692. FOR IM=0 TO 9
  693.  W$=MID$(D$,IM,1)
  694.  GOSUB @PUTWALL
  695.  X=X+2
  696. NEXT
  697. MPY=MPY+1
  698. RETURN
  699. ’■オフ゛シ゛ェクトホシ゛ョ
  700. ’───────────────────────────
  701. @OBJINIT
  702. FOR I=0 TO OBJMAX-1
  703.  FOR J=0 TO _MAX-1
  704.   O(I,J)=0
  705.  NEXT
  706.  SPSET I,128+I,2,0,0,PR
  707.  SPOFS I,-16,0
  708. NEXT
  709. ’--- フ゜レイヤ-
  710. SPSET 0,0,2,0,0,2
  711. SPOFS 0,-16,0
  712. O(0,_T)=1
  713. ’--- ト゛クケムリ
  714. FOR I=0 TO 15
  715.  N=I+84
  716.  SPSET N,240,5,0,0,0
  717.  SPOFS N,I*16,180
  718.  SPANIM N,8,4,0
  719. NEXT
  720. RETURN