SmileBASIC

プログラムリスト

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"

ページトップへ