雑誌『日経ソフトウエア』10月号('11年8月24日発売)連動企画! 第2特集「『プチコン』でニンテンドー3DS/DSiゲームプログラミング入門」に掲載される……かもしれなかったプログラムのリストをここで公開するぞ。
この『WALL』はサイドビューの縦スクロールアクションゲーム。十字ボタン左右で移動、Aボタンでジャンプして、塔のカギを取って出口をめざそう。
ガイコツにぶつかれば倒せるものの、LIFEが減ってしまう。減ったLIFEは薬を取れば回復するが、油断は禁物だ。足場から落ちて画面より下に行ってしまうと、その場でゲームオーバーになってしまうぞ。
ノトホホ
Twitter
おなじみ「日曜プログラマーのプロ」ことスマイルブーム社長。サイドビューのジャンプ処理を作るたびにいつも「ここは前回どう作ってたっけ?」と忘れていて苦労するので、今回は自分でもこのリストを見て思い出せるように、と気合が入っているとか。
- ’┌──────────────────────┐
- ’│ニッケイソフトウェア フ゜チコン トクシュウ│
- ’├──────────────────────┤
- ’│ (c)SmileBoom Co.Ltd. │
- ’└──────────────────────┘
- CLEAR
- VISIBLE 1,1,0,0,0,0
- COLOR 0:CLS
- PRINT”Жチョット マッテテネ...”
- GPAGE 0:GCLS 0
- SPPAGE 0:SPCLR
- BGPAGE 0:GOSUB @BGCLR
- GOSUB @CHRCOPY
- ’------------------ メモリ-ショキカ
- MAPMAX=100:STGMAX=3
- DIM M$(MAPMAX)
- WALLMAX=9:WALLST=8
- SPC=717:BLOCK=721:PR=2
- DIM W(WALLMAX,WALLST)
- GOSUB @SETWALL
- OBJMAX=20:_MAX=10
- _X=0:_Y=1:_W=2:_H=3:_S=4
- _D=5:_N=6:_T=7:_O=8:_B=9
- DIM O(OBJMAX,_MAX)
- ’------------------- リセットル-フ゜
- @RESET
- MC=0:FL=-1:RQ=0
- STG=1:SCTOP=5000
- ’-------------------- メインル-フ゜
- @MAINLOOP
- OB=BT:BT=BUTTON()
- BI=BT AND (NOT OB)
- GOSUB @FLOW
- MC=MC+1:VSYNC 1
- IF BI!=1024 THEN @MAINLOOP
- ’-------------------- シュウリョウ
- COLOR 0:CLS:GCLS 0:BGMSTOP
- FOR I=0 TO 191
- COLINIT ”GRP”,I
- NEXT
- VISIBLE 1,1,0,0,0,0
- PRINT”Жマタアソンテ゛ネ!”
- END
- ’■カ゛メンセンイ
- ’───────────────────────────
- @FLOW
- IF FL==RQ THEN @FLSKIP
- FL=RQ
- ON FL GOSUB @TI,@OI,@GI,@CI
- @FLSKIP
- ON FL GOSUB @TM,@OM,@GM,@CM
- RETURN
- ’■FL=0:タイトル
- ’───────────────────────────
- @TI
- VISIBLE 0,1,0,0,0,0
- CLS:S$=” ”:BGMPLAY 15
- LOCATE 5,3:COLOR 1
- ?”ニッケイソフトウェア フ゜チコン トクシュウ”
- PRINT:COLOR 0
- ? S$;”┌──────────────┐”
- ? S$;”│┌┐┌┐┌──┐┌┐ ┌┐ │”
- ? S$;”││├┤││┌┐│││ ││ │”
- ? S$;”││││││├┤││└┐│└┐│”
- ? S$;”│└──┘└┘└┘└─┘└─┘│”
- ? S$;”└──────────────┘”
- ? S$;”シ゛ャンフ゜アクションケ゛-ム!”
- LOCATE 4,22:COLOR 1
- ?”(C)2011 SmileBoom Co.Ltd.”
- ’----------------- ク゛ラテ゛-ション
- FOR I=0 TO 191
- C=(255-I)*2:GOSUB @MKCOL
- B$=C$:C=I*1.5:GOSUB @MKCOL
- G$=C$:C=I/2:GOSUB @MKCOL
- COLSET ”GRP”,I+1,C$+G$+B$
- GLINE 0,I,255,I,I+1
- NEXT
- STG=0:ENDY=192+15
- VISIBLE 1,1,0,0,0,1
- RETURN
- ’------------------ タイトル メイン
- @TM
- S$=” ”
- IF (MC AND 15)>7 THEN @TMPUT
- S$=”PUSH А BUTTON”
- @TMPUT
- LOCATE 9,16:COLOR 13
- PRINT S$:COLOR 0
- IF BI==16 THEN RQ=1
- RETURN
- ’■FL=1:ケ゛-ムマエ
- ’───────────────────────────
- @OI
- CLS:BGMPLAY 4
- VISIBLE 1,1,0,0,0,1
- LOCATE 12,10:COLOR 0
- PRINT”STAGE:”;STG+1
- MOY=0:MVY=0:OVY=0:MPY=0
- OBJ=0:GOSUB @OBJINIT
- BGOFS 0,0,0:BGOFS 1,0,0
- GOSUB @BGCLR
- GOSUB @SETMAP
- VISIBLE 1,1,1,1,1,1
- WC=60*2:RETURN
- ’---------------- ケ゛-ムマエ メイン
- @OM
- ’--- キ゛ョウタンイテ゛ マッフ゜ヒョウシ゛
- IF MPY<12 THEN @PUTLINE
- ’--- マッフ゜カキオワッタラ ユウコウ
- @OMSKIP
- WC=WC-1:IF WC==0 THEN RQ=2
- IF BI==16 THEN RQ=2
- RETURN
- ’■FL=3:ケ゛-ムアト
- ’───────────────────────────
- @CI
- CLS:VISIBLE 1,1,1,1,1,1
- LS=0:X=12:B=6:C$=”GAMEOVER”
- IF LIFE<0 GOTO @CIEND
- LS=1:X=13:B=5:C$=”CLEAR!”
- @CIEND
- BGMPLAY B:COLOR 0
- LOCATE X,10:PRINT C$
- RETURN
- ’---------------- ケ゛-ムアト メイン
- @CM
- ON LS GOTO @CMG,@CMC,@CME
- ’--- LS=2:エンテ゛ィンク゛
- @CME
- IF (MC AND 7) THEN RETURN
- IF EC<RLC THEN READ C$:? C$
- EC=EC+1
- IF EC>=RLC+60 THEN RQ=0
- RETURN
- ’--- LS=0:ケ゛-ムオ-ハ゛-
- @CMG
- IF BI==16 THEN RQ=0
- RETURN
- ’--- LS=1:クリア
- @CMC
- GOSUB @CMG:IF RQ THEN RETURN
- ’--- ステ-シ゛コウシン
- STG=STG+1:RQ=1
- IF STG<STGMAX THEN RETURN
- ’--- エンテ゛ィンク゛カイシ
- LS=2:EC=0:RQ=3
- RESTORE @STAFF:READ RLC
- CLS:BGMPLAY 7
- VISIBLE 1,1,0,0,0,0
- RETURN
- ’---
- @STAFF
- DATA 33
- DATA ”■STAFF”
- DATA ”---------------------”
- DATA ”◎PROGRAM”
- DATA ” SmileBoom”
- DATA ””
- DATA ”◎DESIGN”
- DATA ” SmileBoom”
- DATA ””
- DATA ”◎PLANING”
- DATA ” SmileBoom”
- DATA ””,””,””,””,””
- DATA ””,””,””,””,””
- DATA ””,””,””,””,””
- DATA ””,””,””,””,””
- DATA ”┌──────────┐”
- DATA ”│THANK YOU!│”
- DATA ”└──────────┘”
- ’■FL=2:ケ゛-ム
- ’───────────────────────────
- @GI
- ’--- ヘンスウショキカ
- TIME=99*60:LIFE=3:SC=0:DMG=0
- SPD=2:JVY=1:JC=0:DMGC=0
- O(0,_N)=64
- ’--- カ゛メンシ゛ュンヒ゛
- CLS:COLOR 1:BGMPLAY MAPBGM
- LOCATE 29, 1:PRINT”TOP”
- LOCATE 27, 4:PRINT”SCORE”
- LOCATE 28, 7:PRINT”TIME”
- LOCATE 28,10:PRINT”LIFE”
- LOCATE 27,13:PRINT”STAGE”
- GOTO @PUTSTAT
- ’------------------ ケ゛-ム メイン
- @GM
- GOSUB @BGSCRL
- IX=0
- ’---------------------------
- @GMLOOP
- T=O(IX,_T)
- IF T==0 THEN @GMSKIP
- ’--- ハイレツカラコヒ゜-
- PX=O(IX,_X):PY=O(IX,_Y)
- OX=PX:OY=PY
- ST=O(IX,_S):NM=O(IX,_N)
- VX=O(IX,_W):VY=O(IX,_H)
- ’--- スクロ-ルフ゛ン コウリョ
- PY=PY+OVY
- ’--- オフ゛シ゛ェクト セイキ゛ョ
- GOSUB @OBJMOVE
- ’--- ハイレツヘモト゛ス
- O(IX,_W)=VX:O(IX,_H)=VY
- O(IX,_S)=ST:O(IX,_N)=NM
- O(IX,_X)=PX:O(IX,_Y)=PY
- SPCHR IX,NM
- SPOFS IX,PX-8,PY-16
- ’---------------------------
- @GMSKIP
- IX=IX+1
- IF IX<OBJMAX THEN @GMLOOP
- ’---
- TIME=TIME-1
- IF (MC AND 63) THEN RETURN
- GOTO @PUTSTAT
- ’■オフ゛シ゛ェクト
- ’───────────────────────────
- @OBJMOVE
- ON T GOTO @OF,@OP,@OE,@OD
- ’--- T=0:ナシ
- @OF
- RETURN
- ’--- T=3:ト゛ア
- @OD
- IF O(0,_S) THEN RETURN
- GOSUB @CHKHIT
- IF C THEN RQ=3
- RETURN
- ’--- フ゜レイヤ-トノセッショク
- @CHKHIT
- Y=ABS(PLY-PY)
- IF Y>8 THEN C=0:RETURN
- X=ABS(PLX-PX)
- IF X>6 THEN C=0:RETURN
- C=1:RETURN
- ’--- T=2:テキ
- @OE
- IF PY>ENDY THEN @DEAD
- ON ST GOTO @OE0,@OE1
- ’---
- PY=PY+VY:VY=VY+1:RETURN
- ’---
- @OE0
- ST=1:VX=1
- IF RND(6)<3 THEN VX=-1
- ’---
- @OE1
- GOSUB @CHKHIT
- IF C THEN @ENEDEAD
- ’---
- NM=128:IF VX<0 THEN NM=132
- PX=PX+VX
- GOSUB @CHKSD :’サユウホセイ
- IF C THEN @OEREV
- GOSUB @CHKFL :’アシモトカクニン
- IF C THEN RETURN
- @OEREV
- PX=OX:ST=0:RETURN
- ’--- テキシホ゛ウ
- @ENEDEAD
- ST=2:VY=-10:BEEP 6,-4000
- SPCHR IX,NM,15,0,1,PR
- ’--- フ゜レイヤ-ヘタ゛メ-シ゛
- O(0,_N)=88:DMGC=16
- LIFE=LIFE-1
- IF LIFE>=0 THEN @EDEND
- SPCHR 0,88:RQ=3
- @EDEND
- GOTO @PUTLIFE
- ’---
- @DEAD
- T=0:O(IX,_T)=T:BEEP 14
- IF IX THEN RETURN
- RQ=3:LIFE=-1:GOTO @PUTLIFE
- ’--- T=1:フ゜レイヤ-
- @OP
- IF DMGC==0 THEN @OP2
- DMGC=DMGC-1:RETURN
- ’
- @OP2
- V=0:N=NM
- IF BT AND 4 THEN V=-1:N=72
- IF BT AND 8 THEN V=1:N=64
- NM=N
- ON ST GOSUB @PW,@PJ,@PH,@PF
- ’---
- IF PY>ENDY THEN @DEAD
- GOSUB @CHKCOIN
- ’--- ハンテイヨウニ サ゛ヒョウヲノコス
- PLX=PX:PLY=PY:RETURN
- ’●ST=0(ツウシ゛ョウイト゛ウ
- ’---------------------------
- @PW
- VX=V:PX=PX+VX*SPD
- GOSUB @CHKSD :’サユウホセイ
- GOSUB @CHKFL :’アシモトカクニン
- IF C==0 THEN @PFALL
- ’--- Аホ゛タンオシタ?
- IF (BI AND 16)==0 THEN RETURN
- ’--- シ゛ャンフ゜スタ-ト
- @PJUMP
- ST=1:VY=-4:JC=0:BEEP 8
- O(IX,_O)=PY AND &H1F0
- O(IX,_B)=SPC
- RETURN
- ’●ST=1(シ゛ャンフ゜シ゛ョウショウチュウ
- ’---------------------------
- @PJ
- IF V!=0 THEN VX=V
- PX=PX+VX*SPD
- GOSUB @CHKSD :’サユウホセイ
- PY=PY+VY
- GOSUB @CHKHD :’アタマホセイ
- IF C!=0 THEN @PJHEND
- ’--- Аホ゛タンオサレツツ゛ケテル?
- JC=JC+1
- IF (BT AND 16)==0 THEN JC=8
- IF JC<8 THEN RETURN
- ’--- ホウフ゛ツセン カイシ
- @PJEND
- O(IX,_B)=0:ST=2:RETURN
- ’--- シ゛ョウショウチュウ アタマヲフ゛ツケタ
- @PJHEND
- IF JC==0 THEN @PGLAND
- GOTO @PHEND
- ’--- ラッカ カイシ
- @PFALL
- C=BLOCK
- IF VY>=0 THEN GOSUB @GETFL
- O(IX,_B)=C:ST=3:VY=0:RETURN
- ’●ST=2(ホウフ゛ツセン→ラッカ
- ’---------------------------
- @PH
- IF V!=0 THEN VX=V
- PX=PX+VX*SPD
- GOSUB @CHKSD :’サユウホセイ
- PY=PY+VY:VY=VY+JVY
- GOSUB @CHKHD :’アタマホセイ
- IF C!=0 THEN @PHEND
- IF VY>=0 THEN @PHEND
- ’--- シ゛ョウショウチュウ
- GOSUB @GETFL
- O(IX,_B)=C:RETURN
- ’---
- @PHEND
- GOSUB @CHKFL :’アシモトカクニン
- IF C==0 THEN @PFALL
- ’--- チョクセ゛ンハ カヘ゛?
- IF O(IX,_B) THEN @PFALL
- GOTO @PGLAND
- ’●ST=3(ラッカ
- ’---------------------------
- @PF
- IF V!=0 THEN VX=V:GOTO @PF2
- VX=VX+SGN(0-VX)*0.05
- @PF2
- PX=PX+VX*SPD
- GOSUB @CHKSD :’サユウホセイ
- PY=PY+VY:VY=VY+JVY
- IF VY>4 THEN VY=4
- GOSUB @CHKFL :’アシモトカクニン
- I=O(IX,_B):O(IX,_B)=C
- IF C==0 THEN RETURN
- ’--- チョクセ゛ンハスヘ゜-ス?
- IF I!=0 THEN RETURN
- ’--- チャクチ&ホセイ
- @PGLAND
- VY=0:ST=0:O(IX,_B)=SPC
- PY=PY AND &H1F0
- I=O(IX,_O):O(IX,_O)=PY
- Y=I-PY:IF Y<=0 THEN RETURN
- IF I>159 THEN RETURN
- ’--- スクロ-ルカイシ
- I=Y AND &H0F
- ADDY=Y AND &H1F0
- IF I THEN ADDY=ADDY+16
- MVY=MVY+ADDY
- RETURN
- ’■ヒョウシ゛ホシ゛ョ
- ’───────────────────────────
- @PUTN
- LOCATE 25,Y
- N$=” ”+STR$(N)
- N$=MID$(N$,LEN(N$)-7,7)
- PRINT N$:Y=Y+3:RETURN
- ’---
- @PUTSTAT
- COLOR 0:Y=2
- IF SC>SCTOP THEN SCTOP=SC
- N=SCTOP:GOSUB @PUTN
- N=SC:GOSUB @PUTN
- N=FLOOR(TIME/60):GOSUB @PUTN
- N=STG+1:GOSUB @PUTN
- ’---
- @PUTLIFE
- IF LIFE<0 THEN RETURN
- N$=”・・・・・・・ааааааа”
- N$=MID$(N$,LIFE,7)
- LOCATE 25,11:COLOR 13
- PRINT N$
- @PSTE
- COLOR 0:RETURN
- ’---
- @MKCOL
- IF C>255 THEN C=255
- C$=”0”+HEX$(FLOOR(C))
- C$=MID$(C$,LEN(C$)-2,2)
- RETURN
- ’■テ゛-タ
- ’───────────────────────────
- ’--- マッフ゜1
- @M1
- DATA 0
- DATA ”□Щ Ц□”
- DATA ”□┏┏┏┏ ┏┏┏□”
- DATA ”□ Ш┏ Ш □”
- DATA ”□┏ ┏┏┏┏┏┏□”
- DATA ”□Ъ г□”
- DATA ”□□□□□□□□□□”
- DATA ””
- ’--- マッフ゜2
- @M2
- DATA 2
- DATA ”□Щ Ш Ц□”
- DATA ”□┏┏┏┏Ш┏┏┏□”
- DATA ”□ Ц Ш Ш □”
- DATA ”□┏┏┏┏Ш┏┏ □”
- DATA ”□ ┏ Ш □”
- DATA ”□ ┏┏┏┏┏ ┏□”
- DATA ”□ ШШШШШ □”
- DATA ”□ ┏ Ц □”
- DATA ”□ ┏┏┏┏┏Ш┏□”
- DATA ”□ ┏ ШШШ□”
- DATA ”□ Ц ┏Ш □”
- DATA ”□┏┏┏┏┏┏ ┏□”
- DATA ”□ ШШШ ┏ □”
- DATA ”□ ┏ □”
- DATA ”□ ┏┏┏┏┏ ┏□”
- DATA ”□ШШ ┏ □”
- DATA ”□ШШ ┏ □”
- DATA ”□┏┏┏┏┏┏ ┏□”
- DATA ”□ Ш┏Ц Ё □”
- DATA ”□ ┏┏┏┏┏┏┏□”
- DATA ”□ Ш Ш┏┏┏ □”
- DATA ”□ □”
- DATA ”□┏┏┏┏┏┏Ш┏□”
- DATA ”□ ┏ Ш □”
- DATA ”□ Ё ЦШ □”
- DATA ”□ ┏┏┏┏┏ ┏□”
- DATA ”□ □□ ┏ □”
- DATA ”□ Ц ШШШ □”
- DATA ”□┏┏┏┏┏┏Ш┏□”
- DATA ”□ Ш ┏ □”
- DATA ”□ ЦШШ □”
- DATA ”□┏┏┏┏┏┏ ┏□”
- DATA ”□ Ш Ш □”
- DATA ”□ Ш Ш ┏ □”
- DATA ”□Ш ШЦ □”
- DATA ”□ ┏┏┏┏┏Ё┏□”
- DATA ”□ШШШШШ ┏ □”
- DATA ”□ Ц┏□ □”
- DATA ”□ ┏┏ Ш□”
- DATA ”□ШШШ г Ё □”
- DATA ”□□□□□□□□□□”
- DATA ””
- ’--- マッフ゜3
- @M3
- DATA 29
- DATA ”□ □”
- DATA ”□ЩШШ г Ц□”
- DATA ”□□□□□□□□□□”
- DATA ””
- ’--- マッフ゜ヨミコミ
- @SETMAP
- MY=0
- ON STG GOTO @SM1,@SM2,@SM3
- @SM1
- RESTORE @M1:GOTO @READMAP
- @SM2
- RESTORE @M2:GOTO @READMAP
- @SM3
- RESTORE @M3
- ’---
- @READMAP
- READ MAPBGM
- ’---
- @SETMLOOP
- READ M$(MY)
- IF M$(MY)==”” THEN RETURN
- MY=MY+1
- GOTO @SETMLOOP
- ’--- BGカヘ゛フ゛ヒンヨミコミ
- @WALL
- ’0:スヘ゜-ス
- DATA 717,15,717,15
- DATA 717,15,717,15
- ’1:В
- DATA 908,12,909,12
- DATA 940,12,941,12
- ’2:□
- DATA 721,10,722,10
- DATA 753,10,754,10
- ’3:┏
- DATA 45, 9, 47, 9
- DATA 717,11,717,11
- ’4:Т
- DATA 929,15,929,15
- DATA 929,15,929,15
- ’5:エラ-ヨウ
- DATA 717, 0,717, 0
- DATA 717, 0,717, 0
- ’6:Ё カイフク
- DATA 4, 0, 5, 0
- DATA 6, 0, 7, 0
- ’7:◎ コイン
- DATA 8, 0, 9, 0
- DATA 10, 0, 11, 0
- ’8:
- DATA 0, 0, 0, 0
- DATA 0, 0, 0, 0
- ’---
- @SETWALL
- RESTORE @WALL
- FOR I=0 TO WALLMAX-1
- FOR J=0 TO WALLST-1
- READ W(I,J)
- NEXT
- NEXT
- RETURN
- ’■BGホシ゛ョ
- ’───────────────────────────
- ’--- BGハンテイ
- @CHKHD
- X=(PX/8) AND 31
- Y=((PY+MOY-16)/8) AND 63
- BGREAD(1,X,Y),C,P,W,H
- IF C<48 THEN C=0:RETURN
- IF C==SPC THEN C=0:RETURN
- PY=(PY AND &HF0)+16
- RETURN
- ’---
- @CHKFL
- X=(PX/8) AND 31
- Y=((PY+MOY)/8) AND 63
- BGREAD(1,X,Y),C,P,W,H
- IF C!=SPC THEN RETURN
- C=0:RETURN
- ’---
- @CHKCOIN
- X=((PX/16) AND 15)*2
- Y=(((PY+MOY-8)/16) AND 31)*2
- BGREAD(0,X,Y),C,P,W,H
- IF C<4 THEN RETURN
- IF C<8 THEN @LIFEUP
- SC=SC+10:BEEP 7
- GOSUB @CLRWALL:GOTO @PUTSTAT
- @LIFEUP
- LIFE=LIFE+1:BEEP 5
- GOSUB @CLRWALL:GOTO @PUTSTAT
- ’---
- @GETFL
- X=(PX/8) AND 31
- Y=((PY+MOY)/8) AND 63
- BGREAD(1,X,Y),C,P,W,H
- IF C==SPC THEN C=0
- RETURN
- ’---
- @CHKSD
- X=(PX/8) AND 31
- Y=((PY+MOY-16)/8) AND 63
- BGREAD(1,X,Y),C,P,W,H
- IF C==SPC THEN C=0:RETURN
- IF C<48 THEN C=0:RETURN
- ’---
- @CS1
- IF C==721 THEN @CSL
- IF C!=753 THEN @CS2
- @CSL
- PX=X*8-1:RETURN
- ’---
- @CS2
- IF C==722 THEN @CSR
- IF C!=754 THEN C=0:RETURN
- @CSR
- PX=X*8+8:RETURN
- ’--- BGショウキョ
- @BGCLR
- FOR P=0 TO 1
- FOR Y=0 TO 63
- FOR X=0 TO 63
- BGPUT P,X,Y,0,0,0,0
- NEXT
- NEXT
- NEXT
- RETURN
- ’--- BGスクロ-ル
- @BGSCRL
- IF MVY<=0 THEN OVY=0:RETURN
- I=MOY AND 15
- IF I==0 THEN GOSUB @PUTLINE
- OVY=2
- MVY=MVY-OVY:MOY=MOY-OVY
- BGOFS 0,0,MOY
- BGOFS 1,0,MOY
- RETURN
- ’--- スフ゜ライトキャラヲBGヘ テンソウ
- @CHRCOPY
- N=60*4:B=4:GOSUB @CCPSUB
- N=36*4:B=8
- @CCPSUB
- FOR I=0 TO 3
- CHRREAD(”SPU0”,N+I),C$
- CHRSET ”BGU0”,B+I,C$
- NEXT
- RETURN
- ’■マッフ゜ホシ゛ョ
- ’───────────────────────────
- ’--- BG2x2ヒョウシ゛
- @PUTWALL ’D$,X,Y
- B=0
- IF W$==”Ё” THEN I=6:GOTO @PFR
- IF W$==”Ш” THEN I=7:GOTO @PFR
- B=1
- IF W$==”В” THEN I=1:GOTO @PWP
- IF W$==”□” THEN I=2:GOTO @PWP
- IF W$==”┏” THEN I=3:GOTO @PWP
- IF W$==”Т” THEN I=4:GOTO @PWP
- IF W$==” ” THEN I=0:GOTO @PWP
- ’--- フ゜レイヤ-?
- I=0:N=252:T=1:C=4
- IF W$==”г” THEN @PWOSET
- ’--- アキヲサカ゛ス
- N=128:T=2:C=2
- @WOLP
- IF O(I,_T)==0 THEN @PWOSET
- I=I+1:IF I<OBJMAX THEN @WOLP
- ’--- アキカ゛ナイノテ゛エラ-アツカイ
- I=5:GOTO @PWP
- ’--- オフ゛シ゛ェクト シンキトウロク
- @PWOSET
- OBJ=OBJ+1:O(I,_X)=X*8+8
- O(I,_Y)=Y*8+16-MOY
- IF W$!=”Щ” THEN @PWOANM
- N=59:T=3:C=1
- SPCHR I,N,3,0,0,PR
- ’---
- @PWOANM
- O(I,_T)=T:O(I,_N)=N
- O(I,_S)=0:O(I,_W)=0:O(I,_H)=0
- SPANIM I,C,8,0
- SPCHR I,N,0,0,0,PR
- SPOFS I,O(I,_X)-8,O(I,_Y)-16
- I=0:GOTO @PWP
- ’--- オモテケス
- @CLRWALL
- B=0:I=8
- GOTO @PWP
- ’--- オモテ2カイカク
- @PFR
- GOSUB @PWP
- B=1:I=0
- ’--- 2x2ヒョウシ゛
- @PWP
- J=Y AND 63
- N=W(I,0):C=W(I,1)
- BGPUT B,X,J,N,C,0,0
- N=W(I,2):C=W(I,3)
- BGPUT B,X+1,J,N,C,0,0
- N=W(I,4):C=W(I,5)
- J=(J+1) AND 63
- BGPUT B,X,J,N,C,0,0
- N=W(I,6):C=W(I,7)
- BGPUT B,X+1,J,N,C,0,0
- RETURN
- ’--- マッフ゜1キ゛ョウヒョウシ゛
- @PUTLINE ’MPY
- Y=22-(MPY*2):X=4
- J=(Y+1) AND 63
- FOR I=4 TO 23
- BGPUT 0,I,Y,0,0,0,0
- BGPUT 0,I,J,0,0,0,0
- NEXT
- ’---
- D$=”ТТТТТТТТТТ”
- IF MPY>MY+2 THEN @PLOFF
- D$=”□ □”
- IF MPY>=MY THEN @PLOFF
- D$=M$(MY-1-MPY)
- ’---
- @PLOFF
- FOR IM=0 TO 9
- W$=MID$(D$,IM,1)
- GOSUB @PUTWALL
- X=X+2
- NEXT
- MPY=MPY+1
- RETURN
- ’■オフ゛シ゛ェクトホシ゛ョ
- ’───────────────────────────
- @OBJINIT
- FOR I=0 TO OBJMAX-1
- FOR J=0 TO _MAX-1
- O(I,J)=0
- NEXT
- SPSET I,128+I,2,0,0,PR
- SPOFS I,-16,0
- NEXT
- ’--- フ゜レイヤ-
- SPSET 0,0,2,0,0,2
- SPOFS 0,-16,0
- O(0,_T)=1
- ’--- ト゛クケムリ
- FOR I=0 TO 15
- N=I+84
- SPSET N,240,5,0,0,0
- SPOFS N,I*16,180
- SPANIM N,8,4,0
- NEXT
- RETURN