★すぐに遊べるIchigoJam web版はこちら↓
http://comich.net/ichigojam/dungeon.html
先日作ったダンジョン探索ゲーム
www.ichigojaman.jpを、facebookのIchigoJam-FANグループで公開したのですが、それを改造してくださった方がいました。ゲームバランスを調整すると共に、フロアマップを12個のユニットに分けて短いデータで持つ素晴らしい工夫で、かなり面白くなりました。
そのプログラムをいただいてさらに改造。文字ROMのカタカナ部分のデータを使って、マップをB1F~B25Fまで自動生成するようにしました。
全25フロアをクリアするのは果てしない冒険です。
(2時間くらいかかります。途中で勇者の剣や鎧を入手する幸運があれば、早く終わります)
遊び方
- あなたは勇者になって、地下ダンジョンを探索します。カーソルキー(矢印キー)の上下左右で勇者を操作します。
- ダンジョンは地下1階(B1F)からスタートします。地下25階(B25F)にある「勇者の印」を手に入れるのが最終目的です。
画面説明
- 「.」…普通の床。
- 「-」「|」…壁。通り抜けられません。
- 「#」…廊下。廊下の中は移動できますが、脇へ出ることはできません。
- 「$」…宝箱。宝箱を取るとアイテムがゲットできます。
- ほとんどは「薬草」で、勇者のHP(体力)が20ポイント回復します(現在の最大値まで)。
- 「勇者の剣(つるぎ)」…勇者の攻撃ポイントが2倍になります。
- 「勇者の鎧(よろい)」…モンスターからの攻撃で受けるダメージを半分にします。
- 「A」~「Z」…モンスター。「A」が一番弱く、「Z」が一番強いです。モンスターに出会うとバトルとなり、勇者とモンスターがターン制で互いに攻撃します。モンスターのHPを0にすると勝利です。勇者のHPが0になるとゲームオーバーです。
- モンスターを倒すと勇者の経験値が上がります。強いモンスターを倒すと得られる経験値も増えます。経験値がある程度上がると勇者のレベルが上がり、攻撃力や防御力が上がります。
- 「<」「>」…階段。「<」は上り階段で、1フロア上へ上ります。「>」は下り階段で、1フロア下へ下ります。フロアを上下移動するとマップが初期化されて、モンスターや宝箱が復活します。
- 廊下の生成に一部乱数が入っているので、ごくまれに下り階段まで辿り着けないことがあります。その時は上のフロアへ一度戻って、もう一度下のフロアへ下りてください。レベルアップのために何度か往復していればいずれ道が開けます。
- 「@」…勇者の印。最下層にあります。これをゲットするとゲームクリアです。
- 画面の下3行はステータス表示で、通常は勇者の状態が表示されます。「[ ]」内はアイテムで、勇者の剣を持っていると「+」、勇者の鎧を持っていると「-」が表示されます。モンスターとのバトルになると、モンスターのHPやバトル勝敗などが表示されます。
プログラム
メインプログラムをファイル0、マップ生成プログラムをファイル1に置いて、ファイル0から実行してください。
※連続したファイル番号であればよいです。0番・1番でなくても構いません。
メインプログラム(ファイル0)
※10/28修正
- ステータス行を1行上へ変更
- アイテム出現のバグ修正
1 CLV:F=1:L=1:M=8:H=M 2 BEEP20:C=46:CLS:LRUNFILE()+1 3 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=0||S=32||S=45||S=124||S=249GOTO4 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,30:LC0,21:?"*CLEAR":END 11 IFC>64&&C<91GSB18 12 GOTO4 13 LC0,21:?"*";:C=46:R=RND(255) 14 IFR=1&&!O?"ユウシャノ ツルギ";:O=1 15 IFR=2&&!D?"ユウシャノ ヨロイ";:D=1 16 IF!R||R>2?"ヤクソウ";:H=H+20:IFH>MH=M 17 ?"ヲ テニ イレタ":WAIT90:GOTO3 18 LC0,21:?"*BATTLE":R=(C-64):P=R*3:GSB26 19 A=L*4*(O+1)-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*4*(D+1)):A=A*!(A<0):BEEP30 22 H=H-A:H=H*!(H<0):GSB25:WAIT90:IFH>0GOTO19 23 BEEP30,30:LC0,21:?CHR$(24);"*ユウシャ シス":END 24 BEEP10,30:LC0,21:?CHR$(24);"*モンスターヲ タオシタ":E=E+R:L=L+(E>L*L*8):M=L*8:C=46:WAIT90:GOTO3 25 LC0,20:?"B";F;"F L";L;" H";H;"/";M;" E";E;" [";CHR$(O*43,D*45);"] ":RTN 26 LC0,22:?"モンスター";CHR$(C);" H";P;" ":WAIT90:RTN
マップ生成プログラム(ファイル1)
※10/28修正
- ユニットのループをシンプルにしてバイト数を削減
- B3F・B4F・B8Fを例外処理して、下り階段のルームへ廊下を確実に接続
- ユニット8(左下)のルームが孤立しやすいので、廊下をつなげる例外処理
- 以上の対策で、下り階段へ辿り着けなかったり、孤立したルームや廊下があるフロアはほぼ無くなるはず
1 T=(F-1)*12+177*8 2 FORY=0TO2:V=Y*6:FORX=Y%2TO3STEP2:W=X*6+3 3 Z=X+Y*4:Q=PEEK(T+Z):U=16*(Q>15):IFQ&10U=15 4 IFZ=0U=17 5 IFX=2&&Y=2U=18+(F=25) 6 IFU>15GSB22 7 IFU=15GSB18:GSB19:GSB20:GSB21 8 [Z]=U:NEXT:NEXT 9 FORY=0TO2:V=Y*6:FORX=1-Y%2TO3STEP2:W=X*6+3 10 Z=X+Y*4:U=0 11 IFZ=9&&(F=3||F=4||F=8)GSB19:GSB20 12 IFX>0Q=Z-1:GSB33:IFAOR[Q]&2>0GSB18:[Q]=[Q]+32 13 IFX<3Q=Z+1:GSB33:IFAOR[Q]&1>0GSB19:[Q]=[Q]+32 14 IFY>0Q=Z-4:GSB33:IFAOR[Q]&8>0GSB20:[Q]=[Q]+32 15 IFY<2Q=Z+4:GSB33:IFAOR[Q]&4>0GSB21:[Q]=[Q]+32 16 [Z]=U:NEXT:NEXT 17 X=6:Y=2:LRUNFILE()-1,3 18 LCW,V+3:?"####":U=U|1:RTN 19 LCW+3,V+3:?"####":U=U|2:RTN 20 FORI=0TO3:LCW+3,V+I:?"#":NEXT:U=U|4:RTN 21 FORI=3TO6:LCW+3,V+I:?"#":NEXT:U=U|8:RTN 22 LCW,V:?"-------":FORI=1TO5:LCW,V+I:?"|.....|":NEXT:LCW,V+6:?"-------" 23 LCW+1,V+3:GSB29:LCW+5,V+3:GSB29:LCW+3,V+1:GSB29:LCW+3,V+5:GSB29 24 LCW+3,V+3 25 IFU=17?"<" 26 IFU=18?">" 27 IFU=19?"@" 28 RTN 29 R=RND(3) 30 IFR=1?"$" 31 IFR=2?CHR$(64+F+RND(2)) 32 RTN 33 A=!RND(1+[Q]/32*2)*[Q]+(Q>7)*[8]:RTN
フロアユニット配列[0]~[11]の値は以下のようになっています。
- ルームなし=0
- 廊下←=+1
- 廊下→=+2
- 廊下↑=+4
- 廊下↓=+8
- ルーム通常=16
- ルーム<=17
- ルーム>=18
- ルーム@=19
- 廊下接続=+32×本数
攻略作戦
勇者のレベル(L*)は、同じ階層(B*F)のモンスターを倒せる程度だと思ってください。フロア階層と同等のレベルになるように、フロアを上下に往復してレベルを上げていってください。途中で勇者の剣や鎧が手に入れば、もっと低いレベルでも攻略できます。
IchigoJam web版
IchigoJam webで遊べるようにしました。画面に「Loaded ○byte」を表示しないように対策しています。
http://comich.net/ichigojam/dungeon.html