プログラムリスト
SYS/GAME2RPG
トップメニュー「SmileBASICでプログラムを作る」から、LOAD"SYS/GAME2RPG"↵
でプログラムが読み込まれます。
キーボードの「EDIT」キーを押すと、このプログラムが自由に編集できます。
'
' GAME2RPG
' ダンジョン たんけん
' VER1.51 いしょくばん
'
XSCREEN 2
GPRIO 1024
VISIBLE 1,1,1,1
'
SPDEF "@SPDATA"
BTBAK=0
BTCNT=0
SLV=0.2
'---
MAPW=16
EQMAX=6
DIM MAP[MAPW,MAPW]
DIM NMAP[4,3]
DIM LF[24]
DIM GX[9],GY[9]
DIM ENAME$[2],ESP[2]
DIM ARROW$[4],X1[4],Y1[4]
DIM EQ$[EQMAX]
RESTORE @DIRDATA
FOR I=0 TO 3
READ ARROW$[I],X1[I],Y1[I]
NEXT
@DIRDATA
DATA "", 1, 0 'RIGHT
DATA "", 0, 1 'DOWN
DATA "",-1, 0 'LEFT
DATA "", 0,-1 'UP
RESTORE @WEAPON
FOR I=0 TO EQMAX-1
READ EQ$[I]
NEXT
@WEAPON
DATA "げんこつ"
DATA "こんぼう"
DATA "てつの ぼう"
DATA "ふつうの けん"
DATA "こうてつの けん"
DATA "でんせつの けん"
ECHR=0
EHP=0
TX=14
TY=23
TW=22
TH=7
MX=20-(16/2)
MY=15-(16/2)
ITMAX=3 'アイテムのかず
DIM PITEM[ITMAX]
'ダンジョン ノ セン ノ ザヒョウ
CX=200
CY=90
FOR I=1 TO 4
Z=(I+2)*(I+2)
X=Z*3
Y=Z*2.4
GX[5-I]=CX-X
GY[5-I]=CY-Y
GX[4+I]=CX+X
GY[4+I]=CY+Y
NEXT
'-----------
@TITLE
GOSUB @ALLCLR
'
SPOFS LOGOSP,200,32,-32
SPSHOW LOGOSP
'
FOR I=1 TO 600
X=RND(400)
Y=RND(240)
C=SQR(POW(X-200,2)+POW(Y-120,2))
GLINE CX,CY,X,Y,RGB(255-C,0,0)
NEXT
RESTORE @TITLEDATA
FOR I=0 TO 99
READ A$
IF A$=="" THEN BREAK
COLOR 14
X=25-LEN(A$)/2
Y=I+8
Z=-250
LOCATE X,Y,Z
PRINT A$
NEXT
@TITLEDATA
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA ""
COLOR 15
X=10:Y=22:Z=0
LOCATE X,Y,Z
PRINT "(C)2011-2014 SMILEBOOM CO.LTD.";
'
BGMPLAY 4
WHILE (BGMCHK()==TRUE)
WAIT 1
WEND
A$="ダンジョン たんけん":GOSUB @PUTTEXT
GOSUB @BWAIT
'----------
PHPMAX=100 'HIT POINT MAX
PHP=PHPMAX 'HIT POINT
PEQUIP=0 'WEAPON
LEVEL=0 'FLOOR LEVEL
FOR I=0 TO ITMAX-1
PITEM[I]=0
NEXT
'----------
WHILE 1
GOSUB @ALLCLR
DISPLAY 1
COLOR 5
X=MX-1
Y=MY-1
Z=0
W=MAPW+2
H=MAPW+2
GOSUB @TEXTBOX
DISPLAY 0
'
SPOFS LOGOSP,340,212,-32
SPSHOW LOGOSP
'マップ ヨミコミ
IF LEVEL==0 THEN RESTORE @MAP1
IF LEVEL==1 THEN RESTORE @MAP2
IF LEVEL==2 THEN RESTORE @MAP3
IF LEVEL>=3 THEN BREAK
READ BGMDUN,BGMBTL
READ ENAME$[0],ESP[0]
READ ENAME$[1],ESP[1]
READ PX,PY,PDIR
FOR Y=0 TO MAPW-1
read a$
FOR X=0 TO MAPW-1
MAP[Y,X]=val("&H"+mid$(a$,x,1))
NEXT X
NEXT Y
BGMPLAY BGMDUN
'メインル-チン
GOSUB @MAIN
IF PHP<=0 THEN BREAK
WEND
IF PHP<=0 THEN
GOSUB @GOVER
ELSE
GOSUB @GAMECLR
ENDIF
GOTO @TITLE
'---------
'メインル-チン
@MAIN
COLOR 3
X=TX
Y=TY
Z=-100
W=TW
H=TH
GOSUB @TEXTBOX
COLOR 14
X=10
Y=0
Z=-100
W=30
H=23
GOSUB @TEXTBOX
WHILE 1
IF (PX<0) THEN PX=0
IF (PX>=MAPW) THEN PX=MAPW-1
IF (PY<0) THEN PY=0
IF (PY>=MAPW) THEN PY=MAPW-1
GOSUB @PSTATUS 'ステ-タス
GOSUB @SUBMAP
'ジブン ノ マワリ ノ ミニマップ ヲ ツクル
GOSUB @MINIMAP
'ミニマップ カラ ドノ セン ヲ カクカ キメル
GOSUB @CALCMAP
GOSUB @DRAWITEM
'ダンジョン ノ セン ヲ カク
GCLS
FOR I=1 TO 23
DPARTS=I-1
IF LF[I]!=0 THEN GOSUB @DRAW
NEXT
'テキ シュツゲン チェック
IF RND(30)==0 THEN GOSUB @BATTLE
IF PHP<=0 THEN BREAK
'キ- ニュウリョク ガ アレバ イドウ
WHILE 1
WAIT 1
BT=STKANDBTN()
IF (BT AND 15) THEN BREAK
WEND
BEEP 9
ID=0
IF (BT AND 1) THEN GOSUB @FORWARD
IF (BT AND 2) THEN GOSUB @BACK
IF (BT AND 4) THEN GOSUB @LEFT
IF (BT AND 8) THEN GOSUB @RIGHT
IF ID>2 THEN GOSUB @TBOX 'TREASURE CHEST
IF PHP<=0 THEN BREAK
IF ID==2 THEN
OLDLVL=LEVEL
GOSUB @STAIR 'LADDER
IF LEVEL!=OLDLVL THEN BREAK
ENDIF
VSYNC 1
WEND
RETURN
'------------
@FORWARD
a$="ぜんしん":GOSUB @PUTTEXT
OLDX=PX:OLDY=PY
PX=PX+X1[PDIR]
PY=PY+Y1[PDIR]
ID=MAP[PY,PX]
IF ID!=0 THEN PX=OLDX:PY=OLDY
RETURN
'
@BACK
a$="こうたい":GOSUB @PUTTEXT
OLDX=PX:OLDY=PY
PX=PX-X1[PDIR]
PY=PY-Y1[PDIR]
IF MAP[PY,PX]!=0 THEN PX=OLDX:PY=OLDY
RETURN
'
@LEFT
a$="ひだりを むく":GOSUB @PUTTEXT
PDIR=PDIR-1
IF PDIR<0 THEN PDIR=3
RETURN
'
@RIGHT
a$="みぎを むく":GOSUB @PUTTEXT
PDIR=PDIR+1
IF PDIR>3 THEN PDIR=0
RETURN
'------
@ALLCLR
DISPLAY 1
CLS
GCLS
DISPLAY 0
GCLS
CLS
SPCLR
'
LOGOSP=255
SPSET LOGOSP,4095
SPHIDE LOGOSP
RETURN
'------
@TEXTBOX
LOCATE X,Y,Z
PRINT "";
PRINT ""*(W-2);
PRINT "";
FOR I=1 TO H-2
LOCATE X,Y+I,Z:PRINT "";
PRINT " "*(W-2);
PRINT ""
NEXT
LOCATE X,Y+H-1,Z:PRINT "";
PRINT ""*(W-2);
PRINT "";
RETURN
'------
@SUBMAP
DISPLAY 1
COLOR 7
LOCATE 13,2
PRINT "(FLOOR LEVEL ";LEVEL+1;")"
FOR Y=-1 TO 1
FOR X=-1 TO 1
LOCATE MX+PX+X,MY+PY+Y
COLOR (MAP[PY+Y,PX+X]+1) AND 15
PRINT ""
NEXT
NEXT
COLOR 15
LOCATE MX+PX,MY+PY
PRINT ARROW$[PDIR]
DISPLAY 0
RETURN
'-------
'ミニマップ サクセイ
@MINIMAP
PD2=PDIR+1
IF PD2>3 THEN PD2=0
NX1=X1[PDIR]:NY1=Y1[PDIR]
NX2=X1[PD2 ]:NY2=Y1[PD2 ]
FOR Y=0 TO 3
FOR X=0 TO 2
YY=PY+(NY1*Y)+(NY2*X)-NY2
XX=PX+(NX1*Y)+(NX2*X)-NX2
IF(XX<0)OR(XX>=MAPW)OR(YY<0)OR(YY>=MAPW) THEN
NMAP[Y,X]=1
ELSE
NMAP[Y,X]=MAP[YY,XX]
ENDIF
NEXT
NEXT
RETURN
'ミニマップ カラ ドノ セン ヲ カクカ キメル
@CALCMAP
FOR I=1 TO 23
LF[I]=0
NEXT
IF NMAP[3,0]==1 THEN LF[7]=1 :LF[20]=1
IF NMAP[3,2]==1 THEN LF[14]=1:LF[23]=1
IF NMAP[3,1]==1 THEN LF[17]=1:LF[20]=1:LF[23]=1
IF NMAP[2,0]==1 THEN
LF[3] =1:LF[5] =1:LF[6]=1:
LF[19]=1:LF[20]=1:LF[7]=0
ENDIF
IF NMAP[2,2]==1 THEN
LF[10]=1:LF[12]=1:LF[13]=1:
LF[22]=1:LF[23]=1:LF[14]=0
ENDIF
IF NMAP[2,1]==1 THEN @CM21
GOTO @CMN21
@CM21
LF[16]=1:LF[19]=1:LF[22]=1:LF[6] =0:LF[7] =0:
LF[13]=0:LF[14]=0:LF[17]=0:LF[20]=0:LF[23]=0
@CMN21
IF NMAP[1,0]==1 THEN
LF[2]=1:LF[4]=1:LF[18]=1:LF[19]=1:
LF[3]=0:LF[5]=0
ENDIF
IF NMAP[1,2]==1 THEN
LF[9] =1:LF[11]=1:LF[21]=1:LF[22]=1:
LF[10]=0:LF[12]=0
ENDIF
IF NMAP[1,1]==1 THEN @CM11
GOTO @CMN11
@CM11
LF[15]=1:LF[18]=1:LF[21]=1
LF[4] =0:LF[5] =0:LF[6] =0:LF[7] =0:LF[11]=0:
LF[12]=0:LF[13]=0:LF[14]=0:LF[16]=0:LF[17]=0:
LF[19]=0:LF[20]=0:LF[22]=0:LF[23]=0
@CMN11
IF NMAP[0,0]==1 THEN
LF[1]=1:LF[18]=1:LF[2]=0:LF[3]=0
ENDIF
IF NMAP[0,2]==1 THEN
LF[8]=1:LF[21]=1:LF[9]=0:LF[10]=0
ENDIF
RETURN
'ダンジョン ノ セン ヲ カク
@DRAW
IF DPARTS<12 THEN ON DPARTS GOTO @D1,@D2,@D3,@D4, @D5, @D6,@D7,@D8,@D9,@D10,@D11,@D12
DPARTS=DPARTS-12
ON DPARTS GOTO @D13,@D14,@D15,@D16,@D17,@D18,@D19,@D20,@D21,@D22,@D23
RETURN
@D1
LSX=0:LSY=0:LEX=1:LEY=1
GOTO @LINE2
@D2
LSX=0:LSY=1:LEX=1:LEY=1
GOTO @LINE2
@D3
LSX=0:LSY=2:LEX=1:LEY=2
GOTO @LINE2
@D4
LSX=1:LSY=1:LEX=2:LEY=2
GOTO @LINE2
@D5
LSX=1:LSY=2:LEX=2:LEY=2
GOTO @LINE2
@D6
LSX=2:LSY=2:LEX=3:LEY=3
GOTO @LINE2
@D7
LSX=2:LSY=3:LEX=3:LEY=3
GOTO @LINE2
@D8
LSX=7:LSY=0:LEX=6:LEY=1
GOTO @LINE2
@D9
LSX=7:LSY=1:LEX=6:LEY=1
GOTO @LINE2
@D10
LSX=7:LSY=2:LEX=6:LEY=2
GOTO @LINE2
@D11
LSX=6:LSY=1:LEX=5:LEY=2
GOTO @LINE2
@D12
LSX=6:LSY=2:LEX=5:LEY=2
GOTO @LINE2
@D13
LSX=5:LSY=2:LEX=4:LEY=3
GOTO @LINE2
@D14
LSX=5:LSY=3:LEX=4:LEY=3
GOTO @LINE2
@D15
LSX=1:LSY=1:LEX=6:LEY=1
GOTO @LINE2
@D16
LSX=2:LSY=2:LEX=5:LEY=2
GOTO @LINE2
@D17
LSX=3:LSY=3:LEX=4:LEY=3
GOTO @LINE2
@D18
LSX=1:LSY=1:LEX=1:LEY=6
GOTO @LINE1
@D19
LSX=2:LSY=2:LEX=2:LEY=5
GOTO @LINE1
@D20
LSX=3:LSY=3:LEX=3:LEY=4
GOTO @LINE1
@D21
LSX=6:LSY=1:LEX=6:LEY=6
GOTO @LINE1
@D22
LSX=5:LSY=2:LEX=5:LEY=5
GOTO @LINE1
@D23
LSX=4:LSY=3:LEX=4:LEY=4
GOTO @LINE1
@LINE1
GLINE GX[LSX+1],GY[LSY+1],GX[LEX+1],GY[LEY+1]
RETURN
@LINE2
GLINE GX[LSX+1],GY[LSY+1],GX[LEX+1],GY[LEY+1]
GLINE GX[LSX+1],GY[7-LSY+1],GX[LEX+1],GY[7-LEY+1]
RETURN
'マップナイ ノ アイテム ヲ ヒョウジ
@DRAWITEM
SPCLR 1
SPCLR 2
FOR I=1 TO 2
ID=NMAP[I,1]
IF ID==0 THEN CONTINUE 'NONE
IF ID==1 THEN BREAK 'WALL
IF ID>=3 THEN SPSET I,0 'TREASURE
IF ID==2 THEN SPSET I,1 'LADDER
IF I==1 THEN
SPOFS I,CX,CY,-180
SPSCALE I,6,6
ELSE
SPOFS I,CX,CY,0
SPSCALE I,3,3
ENDIF
NEXT
RETURN
'-------ステータス
@PSTATUS
SX=0
SY=23
SW=14
SH=7
COLOR 9
X=SX
Y=SY
Z=-100
W=SW
H=SH
GOSUB @TEXTBOX
IF (PHP/PHPMAX)<0.2 THEN
COLOR 11
ELSE
COLOR 15
ENDIF
IF PHP>PHPMAX THEN PHP=PHPMAX
IF PHP<0 THEN PHP=0
LOCATE SX+1,SY+1,0:PRINT "HP ";PHP;
PRINT "/";PHPMAX
LOCATE SX+1,SY+2,0:PRINT EQ$[PEQUIP];
FOR Y=0 TO ITMAX-1
IF PITEM[Y]==0 THEN CONTINUE
LOCATE SX+1,Y+SY+3,0:PRINT"やくそう";
NEXT
RETURN
'-----------
'セントウ
@BATTLE
ECHR=RND(2)
BGMPLAY BGMBTL
EHP=(ECHR*10+10)*(LEVEL+1)
SPSET 0,ESP[ECHR]
SPHOME 0,8,8
SPOFS 0,CX,CY,-240
SPSCALE 0,6,6
SPANIM 0,"I", 10,ESP[ECHR],10,ESP[ECHR]+1,0
EN$=ENAME$[ECHR]
BCMD=0
BEEP 14
WHILE 1
GOSUB @PSTATUS
A$= EN$+" が あらわれた!":GOSUB @PUTTEXT
A$=" たたかう":GOSUB @PUTTEXT
A$=" まほう" :GOSUB @PUTTEXT
A$=" アイテム":GOSUB @PUTTEXT
A$=" にげる" :GOSUB @PUTTEXT
MCMD=BCMD:MMAXCMD=4
GOSUB @MENUSEL
BCMD=MCMD
RUNAWAY=0
ON BCMD GOSUB @ATTACK,@SPELL,@ITEM,@RUNAWAY
IF RUNAWAY==1 THEN BREAK
IF EHP<=0 THEN
GOSUB @EDEAD
BREAK
ENDIF
GOSUB @EATTACK 'ENEMY ATTACK
IF PHP<=0 THEN
BREAK
ENDIF
WEND
BGMPLAY BGMDUN
GOSUB @NULLTEXT
RETURN
@EDEAD
BGMPLAY 5
SPANIM 0,"S+", -60,0,0
SPANIM 0,"XY", -60,CX,CY,1,999,999
WHILE (BGMCHK()==TRUE)
WAIT 1
WEND
'SPCLR 0
GOSUB @PSTATUS
A$= EN$+"を たおした!":GOSUB @PUTTEXT
GOSUB @BWAIT
RETURN
@GOVER
BGMSTOP
A$="あなたは しにました":GOSUB @PUTTEXT
A$=" GAME OVER ":GOSUB @PUTTEXT
GOSUB @BWAIT
RETURN
@EATTACK
MYDMG=(RND(4)+(ECHR*3+1))*(LEVEL+1)
BEEP 4
A$=" ":GOSUB @PUTTEXT
A$=EN$+" の こうげき!":GOSUB @PUTTEXT
A$="あなたに "+STR$(MYDMG)+"の ダメ-ジ!":GOSUB @PUTTEXT
PHP=PHP-MYDMG
GOSUB @PSTATUS
GOSUB @BWAIT
RETURN
@ATTACK
GOSUB @PSTATUS
BDMG=(RND(4)+4)*(PEQUIP+1)
BEEP 11
A$=" ":GOSUB @PUTTEXT
A$="あなたの こうげき!":GOSUB @PUTTEXT
A$= EN$+"に "+STR$(BDMG)+"の ダメ-ジ!":GOSUB @PUTTEXT
EHP=EHP-BDMG
WAIT 20
RETURN
@SPELL
GOSUB @PSTATUS
BDMG=RND(10)+5
MYDMG=3
BEEP 13
A$="あなたは まほうを となえた!":GOSUB @PUTTEXT
A$=EN$+" に "+STR$(BDMG)+"のダメ-ジ!":GOSUB @PUTTEXT
EHP=EHP-BDMG
PHP=PHP-MYDMG
GOSUB @PSTATUS
WAIT 20
RETURN
'ニゲル
@RUNAWAY
BEEP 1
GOSUB @PSTATUS
IF RND(100)>=50 THEN
'シッパイ
A$="にげられなかった!":GOSUB @PUTTEXT
GOSUB @BWAIT
RETURN
ENDIF
SPCLR 0
BGMSTOP
A$="なんとか にげられた・・・":GOSUB @PUTTEXT
GOSUB @BWAIT
RUNAWAY=1
RETURN
'アイテム
@ITEM
FOR I=ITMAX-1 TO 0 STEP -1
IF PITEM[I]!=0 THEN
SELITEM=PITEM[I]
PITEM[I]=0
BREAK
ENDIF
NEXT
IF (I<0)OR(I>=ITMAX) THEN
A$="アイテム を もっていない!":GOSUB @PUTTEXT
ELSE
BEEP 5
A$="あなたは やくそう を つかった!":GOSUB @PUTTEXT
PHP=PHP+RND(30)+30
ENDIF
GOSUB @PSTATUS
GOSUB @BWAIT
RETURN
'---------
'
@BWAIT
BWCNT=0
BWX=TX+TW-2:BWY=TY+(TH-2):BWZ=0
WHILE 1
IF (BUTTON() AND 16+32)==0 THEN BREAK
WAIT 1
WEND
WHILE 1
IF (BUTTON(1) AND 16+32)!=0 THEN BREAK
WAIT 1
BWCNT=BWCNT+1
IF BWCNT>40 THEN BWCNT=0
COLOR 15
LOCATE BWX,BWY,BWZ
IF BWCNT<20 THEN PRINT"";
IF BWCNT>=20 THEN PRINT" ";
WEND
LOCATE BWX,BWY,BWZ
PRINT" ";
RETURN
'---------------
'タカラバコ
@TBOX
A$="たからばこが ある・・・":GOSUB @PUTTEXT
A$=" こじあける":GOSUB @PUTTEXT
A$=" じゅもんを つかう":GOSUB @PUTTEXT
A$=" むし する":GOSUB @PUTTEXT
MCMD=0:MMAXCMD=3:GOSUB @MENUSEL
GOSUB @NULLTEXT
ON MCMD GOSUB @TOPENF,@TOPENS,@TIGNORE
RETURN
'ムシ
@TIGNORE
A$="むし した":GOSUB @PUTTEXT
GOSUB @BWAIT
GOSUB @NULLTEXT
RETURN
'ジュモンデ アケル
@TOPENS
MYDMG=(RND(5)+3)*(LEVEL+1)
A$="たいりょくを"+STR$(MYDMG)+" しょうもうした!":GOSUB @PUTTEXT
PHP=PHP-MYDMG
GOSUB @PSTATUS
GOSUB @BWAIT
IF PHP<=0 THEN RETURN
GOSUB @TOSUCC
RETURN
'コジアケル
@TOPENF
IF RND(10)<7 THEN
A$="かいじょに せいこうした":GOSUB @PUTTEXT
GOSUB @TOSUCC
RETURN
ENDIF
'シッパイ
BEEP 10
A$="わなだ!":GOSUB @PUTTEXT
MYDMG=(RND(8)+4)*(LEVEL+1)
A$=STR$(MYDMG)+"の ダメ-ジを うけた!":GOSUB @PUTTEXT
PHP=PHP-MYDMG
GOSUB @PSTATUS
GOSUB @BWAIT
GOSUB @NULLTEXT
RETURN
'セイコウ
@TOSUCC
BEEP 12
GOSUB @PSTATUS
A$="たからばこを あけた!":GOSUB @PUTTEXT
TITEM=NMAP[1,1]-3
IF TITEM>0 THEN
PEQUIP=TITEM
A$= EQ$[PEQUIP]+"を みつけた!":GOSUB @PUTTEXT
ELSE
A$="やくそうを みつけた!":GOSUB @PUTTEXT
FOR I=0 TO ITMAX-1
IF PITEM[I]==0 THEN BREAK 'EMPTY
NEXT
IF (I<0)OR(I>=ITMAX) THEN
A$="もちきれないので すてた":GOSUB @PUTTEXT
ELSE
PITEM[I]=1
ENDIF
ENDIF
MAP[PY+Y1[PDIR],PX+X1[PDIR]]=0
GOSUB @PSTATUS
GOSUB @BWAIT
GOSUB @NULLTEXT
RETURN
'はしご
@STAIR
A$="うえへ のぼる はしごを みつけた・・・":GOSUB @PUTTEXT
A$="のぼりますか?":GOSUB @PUTTEXT
A$=" はい":GOSUB @PUTTEXT
A$=" いいえ":GOSUB @PUTTEXT
MCMD=0:MMAXCMD=2
GOSUB @MENUSEL
IF MCMD==0 THEN
GOSUB @NULLTEXT
A$="うえに あがった!":GOSUB @PUTTEXT
WAIT 60
LEVEL=LEVEL+1
ELSE
GOSUB @NULLTEXT
ENDIF
RETURN
'ゲ-ムクリア
@GAMECLR
GOSUB @ALLCLR
FOR X=0 TO 399
Y=SIN(RAD(X*5))*120+120
GPSET X,Y,RGB(0,0,255)
NEXT
BGMPLAY 6
WHILE (BGMCHK()==TRUE)
WAIT 1
WEND
BGMPLAY 7
RESTORE @STAFFDATA
COLOR 15
WHILE 1
READ A$
IF A$=="" THEN BREAK
LOCATE 9,29
PRINT A$
WAIT 40
WEND
WAIT 120
GOSUB @BWAIT
CLS
BGMSTOP
RETURN
@STAFFDATA
DATA " GAME CLEAR!!"
DATA " "
DATA " "
DATA " STAFF"
DATA " "
DATA " DIRECTOR オレ"
DATA " "
DATA " PROGRAMMER ワシ"
DATA " "
DATA " PLAYTESTER ボク"
DATA " "
DATA " DESIGNER ゴト-"
DATA " "
DATA " ALL SOUND COMPOSED BY JOEDOWN"
DATA " "
DATA " ソシテ、コノゲ-ムヲモットオモシロクスルノハ"
DATA " アナタデス。"
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA ""
@NULLTEXT
FOR IY=1 TO TH-2
FOR IX=1 TO TW-2
LOCATE TX+IX,TY+IY
PRINT " ";
NEXT
NEXT
RETURN
@PUTTEXT
COLOR 15
FOR IY=1 TO TH-2
FOR IX=1 TO TW-2
LOCATE TX+IX,TY+IY,0
C$=CHR$(CHKCHR(TX+IX,TY+IY+1))
IF IY==(TH-2) THEN C$=" "
PRINT C$
NEXT
NEXT
LOCATE TX+1,TY+TH-2,0
PRINT A$
RETURN
'メニュ-センタクサブル-チン
@MENUSEL
MTOPY=TY+TH-1-MMAXCMD
WHILE 1
COLOR 15
LOCATE TX+1,MTOPY+MCMD:PRINT"";
WAIT 1
MBTN=STKANDBTN()
OLDMCMD=MCMD
IF (MBTN AND 1) THEN MCMD=MCMD-1
IF (MBTN AND 2) THEN MCMD=MCMD+1
IF (MBTN AND 16+32) THEN BREAK
IF MCMD<0 THEN MCMD=MMAXCMD-1
IF MCMD>=MMAXCMD THEN MCMD=0
LOCATE TX+1,MTOPY+OLDMCMD:PRINT" ";
WEND
RETURN
'---
DEF STKANDBTN()
' BTBAK=0 'BACKUP(GLOBAL)
' BTCNT=0 'COUNT(GLOBAL)
SLV=0.2 'THRESHOLD
BTN=BUTTON()
STICK OUT SX,SY
IF (SY>SLV) THEN BTN=BTN OR 1
IF (SY<-SLV) THEN BTN=BTN OR 2
IF (SX<-SLV) THEN BTN=BTN OR 4
IF (SX>SLV) THEN BTN=BTN OR 8
IF BTBAK!=BTN THEN BTCNT=0
BTBAK=BTN
BTCNT=BTCNT+1
IF BTCNT==1 THEN RETURN BTN
IF BTCNT>90 THEN BTCNT=BTCNT-20:RETURN BTN
RETURN 0
END
'SPRITE DATA
@SPDATA
DATA 14
' U, V, W, H,X,Y,ATR
DATA 256, 80,16,16,8,8,1 'TREASURE BOX
DATA 304, 80,16,16,8,8,1 'LADDER
DATA 0,256,16,16,8,8,1 'SLIME1
DATA 16,256,16,16,8,8,1 'SLIME2
DATA 432,240,16,16,8,8,1 'BAT1
DATA 448,240,16,16,8,8,1 'BAT2
DATA 304,240,16,16,8,8,1 'GHOST1
DATA 320,240,16,16,8,8,1 'GHOST2
DATA 64,240,16,16,8,8,1 'MUMMY1
DATA 48,240,16,16,8,8,1 'MUMMY2
DATA 192,240,16,16,8,8,1 'SKELETON1
DATA 176,240,16,16,8,8,1 'SKELETON2
DATA 176,176,16,16,8,8,1 'BLACK KNIGHT1
DATA 160,176,16,16,8,8,1 'BLACK KNIGHT2
@MAP1
'BGM
DATA 1,2
'テキキャラクタ-
DATA "スライム",2
DATA "コウモリ",4
'プレイヤ-ノ ショキイチ ト ムキ
DATA 14,1,1
'マップデ-タ
'1:カベ 2:ハシゴ 3-9:タカラバコ
DATA "1111111111111111"
DATA "13 1 41 313 1 1"
DATA "111 1 1 11 1 1"
DATA "1 1 1 1 1 1"
DATA "1 1111 1 1 11 1"
DATA "1 1 1 1 11 11 1"
DATA "1 1 1 1"
DATA "1 1 11 1 11111 1"
DATA "1 1 1 1"
DATA "11111 111 1111 1"
DATA "1 1 1 12 1 1"
DATA "1 1 1 11 11 1"
DATA "1 1 1 1 1"
DATA "1 111111111 1 1"
DATA "1 1 31"
DATA "1111111111111111"
@MAP2
DATA 9,3
DATA "ゴースト",6
DATA "ミイラ",8
DATA 11,10,3
DATA "1111111111111111"
DATA "111 1"
DATA "1 11111 1 1 11"
DATA "1 111 1 1 1 31"
DATA "1 15 111 1 1 11"
DATA "1 111 1 1 1 1"
DATA "1 1 111 1 11 1"
DATA "1 111 11 1 1 1"
DATA "1 11 111 1 1"
DATA "1 111111 1 1 1"
DATA "1 1 1 1 1"
DATA "1 1111 1 11111 1"
DATA "1 312 1 131 1"
DATA "1 11111 1 1 1"
DATA "1 13 1 16 1"
DATA "1111111111111111"
@MAP3
DATA 23,13
DATA "スケルトン",10
DATA "ブラックナイト",12
DATA 4,12,0
DATA "1111111111111111"
DATA "171 11111 121"
DATA "1 1 11 13 1 1 1"
DATA "1 1 11 1 1 1 1"
DATA "1 1 13 111 1 1 1"
DATA "1 1 11 111 1 1"
DATA "1 1 1 111"
DATA "111 11111 11 1"
DATA "1 3 1 1 1 1 1"
DATA "1 1 1 1 1 1 1"
DATA "1 1 1 1 1 1 1"
DATA "1 111111 1 1 1 1"
DATA "1 11 1 1 131"
DATA "1 1111 1 1111111"
DATA "1 1 81"
DATA "1111111111111111"