for PB-100F+OR-1、PB-120
Programmed by NUAO 2024/5/20
あなたはアテーナイの英雄テーセウス。脱出不可能といわれるクノッソスの迷宮ラビュリントスの中央広場で牛頭人身の怪物ミノタウロスを倒し、今まさにここから脱出しようとしています。あちこちで迷宮が崩れつつあるなか、無事出口に辿り着けるでしょうか…。
注意
本ゲームは、新BASICを搭載した新PB-100シリーズ(PB-100F+拡張RAM,PB-120など)を対象とします。旧BASICを搭載したPB-100シリーズ(PB-100,300,200,FX-700P,820Pなど)やPB-100シミュレータ(PB-SIM、PokecomGO)では動作しないと思われます。なお、開発はPB-100F及びPB-120上で行い、それ以外の機種での動作は確認しておりません。
一度プレイすると迷宮データが変化し、再度新規プレイしても変化した迷宮でスタートとなります。初期状態から再プレイしたい場合は、[P0]プログラムを再入力または再ロードしてください。
迷宮データの変更は、アドレス計算して[P0]プログラムを直接書き換えて行ないます。従ってプログラムリストはミス無く入力願います。ミスがあるとポケコンの動作がおかしくなる可能性がありますので、もしそうなった場合はオールリセット(裏面ボタン押下)してプログラムを全消去して下さい。
※当方ではオールリセットにて特段不具合はありませんが、一応、自己責任ということでお願いします。
はじめに
プログラムを入力又はロードします。プログラム・サイズは1,568stepsです。
Shift+[1]でゲーム開始です。中断後の再開はREADY P1においてRUN 10[EXE]です。
★注意★ PB-120の場合は[P1]の5行目を「B=347」に変更してください。
遊び方
3D表示されたクノッソスの迷宮ラビュリントス中央広場からスタートします。
操作はターン制です。
[5]キーを押すと一歩前進します。[1]←→[3]キーを押すと左右に向きを変えます。
[Z]キーを押すと一歩前の壁やガレキを破壊して通れるようにします。
3D表示について
迷宮は壁で構成されています。壁の状態と3D表示の対応は次の通り。
3D表示例
注意
テーセウスは、恋人アリアドネーから渡された赤い麻糸をたどることで、現在向いている方角と出口までの距離がわかりますので、それを頼りに出口の階段(1箇所のみ)にたどり着いて下さい。
ラビュリントスは崩壊しつつあります。一歩前の壁やガレキの山を破壊すると、その衝撃により近くで崩落が起きます。どんどん崩落が増していきますので、壁の破壊は3回が限度です。
ラビュリントスは南北15、東西20の大きさですが、魔法がかけられているため南北と東西の端は互いに繋がっています。(PDF末尾のマッピングシートを利用ください)
壁を破壊!
通れるようになったが…
近くで崩落が発生!
崩落で生き埋めになってしまった。
GameOver.
迷宮から脱出成功!
![](https://www.google.com/images/icons/product/drive-32.png)
(参考)KnossoSプログラムのメモリ格納状況
![](https://www.google.com/images/icons/product/drive-32.png)
プログラム・リスト(PB-SIM形式)
※PB-SIM形式ですが実機へのダウンロード用であり、PB-SIMでは実行できません。
<注意!>PB-120では[P1]の5行目を以下に変更してください。
[P1] 5 VAC:X=8:Y=6:V=1:B=347:MODE 4:PRINT "KnossoS"
[P0]
1 GOTO 30
10 $="22111132221301321232":RETURN
11 $="32131202210212112232":RETURN
12 $="22030331032220122112":RETURN
13 $="12120111303322132011":RETURN
14 $="21132000000021121312":RETURN
15 $="00113000010020111022":RETURN
16 $="31202000030021313311":RETURN
17 $="11133000000011000202":RETURN
18 $="11111111011312233131":RETURN
19 $="10112123232112113201":RETURN
20 $="31211210110203011133":RETURN
21 $="12013022012130330111":RETURN
22 $="12211323030302013212":RETURN
23 $="22321222332232213222":RETURN
24 $="20013211203003103133":RETURN
30 IF E<0;E=E+20
35 IF E>19;E=E-20
40 IF F<0;F=F+15
45 IF F>14;F=F-15
50 S=E:IF G<0;S=S-1:IF S<0;S=19
55 T=F:IF H<0;T=T-1:IF T<0;T=14
60 GOSUB T+10:D$=MID(S+1,1):M=VAL(D$)
65 IF C=1 THEN 80
70 IF G=0;M=SGN FRAC(M/2:RETURN
75 M=INT(M/2:RETURN
80 C=0:IF G=0;M=M+SGN(.2-FRAC(M/2:GOTO 90
85 M=M-2*SGN(M-1.5
90 MODE 19(B+S+T*29,M+16):RETURN
[P1]
5 VAC:X=8:Y=6:V=1:B=283:MODE 4:PRINT "KnossoS"
10 GOSUB #3:IF X*Y=234;PRINT:PRINT "Exit!":END
20 I$=KEY:IF I$="" THEN 20
25 PRINT CSR5;" ";:IF I$<>"5" THEN 35
30 E=X:F=Y:G=V:H=W:GOSUB #0:IF M=0;X=E+V:Y=F+W
35 IF I$="1";K=V:V=W:W=-K
40 IF I$="3";K=V:V=-W:W=K
45 IF I$="Z";GOSUB #2
50 GOTO 10
[P2]
10 E=X:F=Y:G=V:H=W:GOSUB #0:IF M=0;RETURN
15 U=U+1:PRINT CSR2;"/";:C=1:GOSUB #0
20 PRINT CSR1;"o/o";:GOSUB #4:PRINT CSR1;"_/_";
25 GOSUB #4:FOR L=1 TO U
30 E=X-3+INT(RAN#*7:F=Y-3+INT(RAN#*7
35 K=90*INT(RAN#*4:G=COS K:H=SIN K
40 GOSUB #0:IF M=1 THEN 30
45 $="\DGo.\DGo":FOR J=1 TO 3:GOSUB #4
50 PRINT CSR1;MID(J,3);:NEXT J
55 C=1:GOSUB #0:NEXT L:IF U=4;PRINT:PRINT "Die.":END
60 RETURN
[P3]
1 E=X+W:F=Y-V:G=-W:H=V:GOSUB #0:IF M=1;N$=")":GOTO 3
2 G=V:H=W:GOSUB #0:N$=" ":IF M=1;N$="]"
3 E=X+V:F=Y+W:G=-V:H=-W:GOSUB #0
4 IF M=1;O$="O":P$=O$:Q$=O$:GOTO 8
5 G=W:H=-V:GOSUB #0:O$=" ":IF M=1;O$=">"
6 G=V:H=W:GOSUB #0:P$=" ":IF M=1;P$="\SQ"
7 G=-W:H=V:GOSUB #0:Q$=" ":IF M=1;Q$="<"
8 E=X-W:F=Y+V:G=W:H=-V:GOSUB #0:IF M=1;R$="(":GOTO 10
9 G=V:H=W:GOSUB #0:R$=" ":IF M=1;R$="["
10 PRINT:PRINT N$+O$+P$+Q$+R$;
11 $="^\LA\DA\RA":PRINT MID(1+2*V*V+W*W+V+W,1);
12 A=ABS(X-18:IF A>10;A=20-A
13 Z=ABS(Y-13:IF Z>7;Z=15-Z
14 PRINT INT SQR(A*A+Z*Z;:RETURN
[P4]
1 K=SIN SIN SIN 1:RETURN
プログラム・リスト(実機形式)
<注意!>PB-120では[P1]の5行目を以下に変更してください。
[P1] 5 VAC:X=8:Y=6:V=1:B=347:MODE 4:PRINT "KnossoS"
あとがき
「ENEMY」開発過程でできちゃった「壁モデル」の迷路システムをゲームに仕立てました。「The MAZE」や「ENEMY」は通路も壁も各1セルを占有する「ブロックモデル」ですが、「壁モデル」なら壁がセルを占有しないため広大なマップを扱うことができます。
とはいえ、PB-100BASICでは迷路マップのような大きなデータは$変数で扱わざるを得ないため、マップデータの変更を伴う実装にはMODE19の変則技を利用する必要がありました。MODE18(PEEK),MODE19(POKE)の存在と利用方法を発見して下さった先人の方々に、心より御礼申し上げます。
クノッソスの宮殿・ラビュリントス遺跡に一度は行ってみたいけど、クレタ島って遠いなぁ…。