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について>

第一階層:Gate to Ruin(廃墟の門へ通じる道)の階

人を寄せ付けぬ密林の古い遺跡の地下牢に迷宮Melfortの入口がある。比較的小さな階に小さな魔物たちが蠢(うごめ)いている。


第二階層:Wau R’Mel(幻のワウ・ル・メール)の階

亡都ワウ・ル・メールから逃れた者たちが住み着いていた要塞のような階。曲がり角が連続し方向感覚が失われる。少し攻撃的な魔物が潜んでいるという。


第三階層:Gorgan(ゴルガンの迷宮)の階

悪霊の気配に満ちた階で、長い通路の先から魔物が一直線に向かってくるらしい。できることは角を曲がって魔物の追跡から逃れることぐらいだろうか。


第四階層:Vosque(閉ざされたボスク)の階

万物に陰と陽があるならVosqueはまさしく陰だ。湿った土の圧迫感が迫る袋小路に満ちた広い階だという。魔物は俊敏で近くに現れると極めて危険だ。行き止まりに追い込まれたら一か八か戦うしかない。この階のどこかに伝説の秘宝があるとも伝えられる。

第一階層 (Gate to Ruinの階)

第二階層

(Wau R'Melの階)(一部)

ENEMY説明書.pdf
enemy_flowchart.pdf

<変数アサイン>

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