E N E M Y
for PB-100+OR-1 / PB-SIM(fast) / PokecomGO(fast)
Programmed by NUAO / 2024/1/20
迫りくる魔物の息遣い・・・。
伝説の秘宝「ブルーダイヤモンド」を求めて、あなたは魔物が巣食う迷宮Melfortに足を踏み入れた。
敵(魔物)の追跡を振り切って3D表示のダンジョンを探索するゲームです。
<はじめに>
プログラムを入力してください。プログラム・サイズは1563ステップです。
PB-100シリーズ+OR-1で動作します。PB-SIMシミュレータ(fast)、PokecomGO(fast)だと快適にプレイできます。
Shift+[0]で第一階層(Gate to Ruin)から冒険を開始します。
<遊び方>
迷宮Melfortは4階層です。最深部のどこかにある伝説の秘宝「ブルーダイヤモンド」に到達したらゲームクリアです。
各階層には次の階層に降りる階段がランダムに一か所存在し、そこへ到達すると自動的に次の階層に降りていきます。
各階層には魔物が徘徊していて、プレイヤーを追跡し、隣接するとプレイヤーを攻撃します。(攻撃されたことは体力が減ることで分かります)
魔物からは逃げることが基本ですが、正面一歩前で[5]キーを押すと攻撃し、うまくすれば倒すことができますが、反撃を受けます。体力がマイナスになるとゲームオーバーです。
<注意>
魔物を倒しても、再びその階層のどこかに出現します。
魔物を倒すと体力が1だけ回復します。
魔物は階層が深くなるほど執拗に追跡してきて、攻撃された時の最大ダメージも大きくなります。
プレイヤーのパラメータは体力のみです。経験値や強さの設定はありません。
階段にたどりつき、下の階層に降りると体力は9に回復します。
<迷宮Melfortについて>
第一階層:Gate to Ruin(廃墟の門へ通じる道)の階
人を寄せ付けぬ密林の古い遺跡の地下牢に迷宮Melfortの入口がある。比較的小さな階に小さな魔物たちが蠢(うごめ)いている。
第二階層:Wau R’Mel(幻のワウ・ル・メール)の階
亡都ワウ・ル・メールから逃れた者たちが住み着いていた要塞のような階。曲がり角が連続し方向感覚が失われる。少し攻撃的な魔物が潜んでいるという。
第三階層:Gorgan(ゴルガンの迷宮)の階
悪霊の気配に満ちた階で、長い通路の先から魔物が一直線に向かってくるらしい。できることは角を曲がって魔物の追跡から逃れることぐらいだろうか。
第四階層:Vosque(閉ざされたボスク)の階
万物に陰と陽があるならVosqueはまさしく陰だ。湿った土の圧迫感が迫る袋小路に満ちた広い階だという。魔物は俊敏で近くに現れると極めて危険だ。行き止まりに追い込まれたら一か八か戦うしかない。この階のどこかに伝説の秘宝があるとも伝えられる。
第一階層 (Gate to Ruinの階)
第二階層
(Wau R'Melの階)(一部)
![](https://www.google.com/images/icons/product/drive-32.png)
![](https://www.google.com/images/icons/product/drive-32.png)
<変数アサイン>
A 階段/出口X座標
B 階段/出口Y座標
C$ 敵表示用
E 参照先X座標
F 参照先Y座標
G 敵X座標
H 敵Y座標
I$ キー入力
K 一時使用
L 自体力
M 読み出したマップデータ
N$ 一時使用
P マップ階層
V 自方向ベクトル
W 自方向ベクトル
X 自X座標
Y 自Y座標
$ マップデータ
PB-100実機形式
PB-SIM形式
[P0]
2 VAC:W=1
4 L=9:X=P*2+11:Y=7:GOSUB #2:A=E:B=F
6 GOSUB #2:G=E:H=F
8 IF RAN#*5>P+1 THEN 22
10 IF X<>G;E=G+SGN(X-G:F=H:GOSUB #1:IF M=0 THEN 18
12 E=G:F=H+SGN(Y-H:GOSUB #1:IF M=0 THEN 18
14 GOTO 22
18 IF E=X;IF F=Y THEN 22
20 G=E:H=F
22 E=X+W:F=Y-V:PRINT CSR 0;:GOSUB #1:IF M=1;PRINT ")";:GOTO 28
26 PRINT "]";
28 E=X+V:F=Y+W:GOSUB #1:C$="":IF M=1;PRINT "OOO";:GOTO 42
29 IF G=E;IF H=F;C$="@"
30 E=X+V+W:F=Y-V+W:GOSUB #1:IF M=1;PRINT ">";:GOTO 34
32 PRINT "\SQ";
34 E=X+2*V:F=Y+2*W:GOSUB #1:IF M=1;PRINT "\SQ";:GOTO 38
36 PRINT "\CR";:IF G=E;IF H=F;PRINT CSR 2;"\TR";
38 E=X+V-W:F=Y+V+W:GOSUB #1:IF M=1;PRINT "<";:GOTO 42
40 PRINT "\SQ";
42 E=X-W:F=Y+V:GOSUB #1:IF M=1;PRINT "(";:GOTO 46
44 PRINT "[";
46 PRINT L;CSR 2;C$;:IF X=A;IF Y=B THEN 50
48 GOTO 56
50 P=P+1:IF P=4;PRINT CSR 2;"\DI";CSR 6;"CLEAR!":END
52 PRINT CSR2;"\DA":GOTO 4
56 IF ABS(G-X)+ABS(H-Y)>1 THEN 64
58 IF RAN#<.5 THEN 64
60 L=L-INT(RAN#*P+1:PRINT CSR 5;L;:IF L<0;PRINT CSR1;"_+_":END
64 I$=KEY:IF I$="" THEN 64
66 PRINT CSR 5;"*";:IF I$<>"5" THEN 72
68 IF G=X+V;IF H=Y+W THEN 78
70 E=X+V:F=Y+W:GOSUB #1:IF M=0;X=E:Y=F
72 IF I$="1";K=V:V=W:W=-K
74 IF I$="3";K=V:V=-W:W=K
76 GOTO 8
78 PRINT CSR 2;"/";:IF RAN#>.3 THEN 22
80 PRINT CSR 2;"_";:GOSUB #2:L=L+SGN(9-L:GOTO 6
[P1]
1 IF E<0;E=E+30
2 IF E>29;E=E-30
3 IF F<0;F=F+16
4 IF F>15;F=F-16
5 GOSUB F+10:N$=MID(E+1,1):M=VAL(N$):RETURN
10 $="100101101000100000101101111010":RETURN
11 $="101000100110001101000000000000":RETURN
12 $="001010010101110100101010101011":RETURN
13 $="100001011100000010101000001000":RETURN
14 $="010100000011101010010110101011":RETURN
15 $="000110111000100001000010000001":RETURN
16 $="110000101010011010111011101111":RETURN
17 $="001011000110101010101000101000":RETURN
18 $="010101010010101010000110111011":RETURN
19 $="100100001001001011110000100010":RETURN
20 $="110010100100010010000111010110":RETURN
21 $="101000010001101011010100010100":RETURN
22 $="000101001010000000110110110001":RETURN
23 $="101000100101111010110010000100":RETURN
24 $="000010010000101000001000101001":RETURN
25 $="011011000111001111101010100101":RETURN
[P2]
1 E=INT(P/2)*23+INT(RAN#*7:F=FRAC(P/2)*18+INT(RAN#*7
2 GOSUB #1:IF M=1 THEN 1
3 RETURN