OBONO’s Diary

へっぽこプログラマの戯言

ダンジョン探索ゲーム 改造版

Twitter のタイムラインで流れてきた記事。IchigoJamローグライクなゲームとな。
なかなかの良作なのだが、WAIT で指定している数値が大きすぎるためか、イマイチテンポが悪い。他にもいろいろ気になるところや、こうしたら面白そうだというアイディアがあったので、勝手に改造してみた。

  • WAIT の値を調整し、サクサク進むように
  • 階段を上がったときの主人公の初期位置を右下に
  • 敵のバリエーションとして大文字/小文字を追加 (大文字はHPが2倍)
  • 経験値獲得量とレベルアップタイミングを調整し、レベルを上がりやすく
  • 勇者の剣と鎧を廃止し、代わりに4段階の強さの剣と鎧にして出現確率を調整
  • ステータス表記を変更 A: 剣の強さ(0~4) D: 鎧の強さ(0~4)
  • 剣や鎧を何度も取得した場合のメッセージ表示の不具合を修正
  • ダメージを受けてHPの桁が減ったときの表示の不具合を修正

この改造の結果、オリジナルは「2時間くらいかかります」となっていたのが、10分くらいでクリアできるお手軽な内容となった。もしよろしければ、遊んでみてくださいませ。(すぐに遊べる IchigoJam web版はこちら)
f:id:OBONO:20211104182648g:plain

メインプログラム (ファイル0)

1 CLV:F=1:L=1:M=8:H=M
2 LRUNFILE()+1
3 C=46:GSB25:LC0,21:?CHR$(24):?CHR$(24)
4 W=X-BTN(28)+BTN(29):V=Y-BTN(30)+BTN(31):S=SCR(W,V):CLK
5 IFS<33||S=45||S>122GOTO4
6 LCX,Y:?CHR$(C):X=W:Y=V:C=S:LCX,Y:?CHR$(249):WAIT6
7 IFC=36GOTO13
8 IFC=60&&F>1F=F-1:GOTO2
9 IFC=62&&F<25F=F+1:GOTO2
10 IFC=64BEEP10:LC0,21:?"*CLEAR":END
11 IFC>64&&C<123GSB18
12 GOTO4
13 LC0,21:?"*";:R=RND(64):J=(F-1)/5
14 IFJ>O&&R=0O=O+1:?"ツルギ";O;:GOTO17
15 IFJ>D&&R=1D=D+1:?"ヨロイ";D;:GOTO17
16 R=2:?"ヤクソウ";:H=H+20:IFH>MH=M
17 ?" ヲ テニ イレタ":BEEP4-(R<2):WAIT20+(R<2)*20:GOTO3
18 LC0,21:?"*BATTLE":R=C%32:K=R*(3+(C<91)*3):P=K:GSB26
19 A=L*(O+4)-RND(R*2):A=A*!(A<0):BEEP
20 P=P-A:P=P*!(P<0):GSB26:IFP<1GOTO24
21 A=R*2-RND(L*(D+4)):A=A*!(A<0):BEEP30
22 H=H-A:H=H*!(H<0):GSB25:WAIT10:IFH>0GOTO19
23 BEEP30,20:LC0,21:?CHR$(24);"*ユウシャ シス":END
24 BEEP10,20:LC0,21:?CHR$(24);"*モンスターヲ タオシタ":E=E+K:L=L+(E>L*L*20):M=L*8:WAIT20:GOTO3
25 LC0,20:?"B";F;"F L";L;" H";H;"/";M;" E";E;" A";O;" D";D;" ":RTN
26 LC0,22:?"モンスター";CHR$(C);" H";P;" ":WAIT10:RTN

マップ生成プログラム (ファイル1)

1 BEEP19+F:CLS:T=(F-1)*12+177*8
2 FORY=0TO2:V=Y*6:FORX=Y%2TO3STEP2:W=X*6+3:Z=X+Y*4:Q=PEEK(T+Z):U=16*(Q>15):IFQ&10U=15
3 IF!ZU=17
4 IFX=2&&Y=2U=18+(F=25)
5 IFU>15GSB19
6 IFU=15GSB15:GSB16:GSB17:GSB18
7 [Z]=U:NEXT:NEXT
8 FORY=0TO2:V=Y*6:FORX=1-Y%2TO3STEP2:W=X*6+3:Z=X+Y*4:U=0
9 IFZ=9&&(F=3||F=4||F=8)GSB16:GSB17
10 IFX>0Q=Z-1:GSB24:IFAOR[Q]&2>0GSB15:[Q]=[Q]+32
11 IFX<3Q=Z+1:GSB24:IFAOR[Q]&1>0GSB16:[Q]=[Q]+32
12 IFY>0Q=Z-4:GSB24:IFAOR[Q]&8>0GSB17:[Q]=[Q]+32
13 IFY<2Q=Z+4:GSB24:IFAOR[Q]&4>0GSB18:[Q]=[Q]+32
14 [Z]=U:NEXT:NEXT:X=6+(C=60)*12:Y=X-4:LRUNFILE()-1,3
15 LCW,V+3:?"####":U=U|1:RTN
16 LCW+3,V+3:?"####":U=U|2:RTN
17 FORI=0TO3:LCW+3,V+I:?"#":NEXT:U=U|4:RTN
18 FORI=3TO6:LCW+3,V+I:?"#":NEXT:U=U|8:RTN
19 LCW,V:?"-------":FORI=1TO5:LCW,V+I:?"|.....|":NEXT:LCW,V+6:?"-------"
20 FORI=1TO7STEP2:LCW+1+I%3*2,V+1+I/3*2:GSB21:NEXT:LCW+3,V+3:?STR$(".<>@"+U-16,1):RTN
21 R=RND(4):IFR=1?"$"
22 IFR>1?CHR$(R*32+F+RND(2))
23 RTN
24 A=!RND(1+[Q]/32*2)*[Q]+(Q>7)*[8]:RTN