SONAR ARRAY
ソナーマン A「前方海域に音源を確認!」
艦長「直ちに音紋を分析せよ。」
ソナーマン A「…敵艦オメガ級に間違いありません。損傷しているようですが微速航行中。」
ソナーマン B「艦長!ポストプロセスの ASP-1U が不調です。海底地形可視化機能は使えません!」
艦長「よし、やつが撃てないうちにとどめを刺すぞ。ソナーマン諸君自慢の耳で直接聴き分けろ!
あなたはソナーマンとしてソナー反射波を聴き分け、敵艦の位置を特定し、魚雷を打ち込みます。
Programmed by NUAO 2023/6/1
対応機種
PB-100 シリーズ(拡張メモリ不要) ※少し遅いです
PB-SIM(fast)、Pokecom GO(fast /normal)
操作手順
プログラムを入力します。プログラム・サイズは 540 ステップです。
Shift+[0]で開始します。中断後の再開は、[P0]において RUN 3[EXE]です 。
海域の状況
自艦は Y=0 の位置です。ソナー・アレイは座標 X=0~6 の位置に配置され、中央は X=3 です。
敵艦は前方の海域 X=-3~9, Y=1~8 のどこかに現れ、微速でどちらかの方角へ移動しています。
海域はこの周囲(但し Y≧1)にも広がっていますが、遠いとソナー探知が難しくなります。
アクティブ・ソナー(ピンガー)
敵艦の位置を知るため、[+]を押してピンガー(探信音)を発信します。 ピンガー波は水中を音速で伝搬し、敵艦で反射して、ソナー・アレイに受信されます。受信波形の形・動きから、敵艦の位置を推定します。ピンガーを使用すると自艦の位置を知られる欠点がありますが、今回は敵艦が損傷し攻撃不能と分かってい るため、艦長より使用許可が出ています。
PB-100 実機では、計算速度の制約から受信波形表示まで少し時間が掛かります 。
アクティブ・ソナー受信波形について
受信波形は、①受信するまでの時間、②パルスの幅、③パルスの移動速度 の情報を持ち、 これらを読み取ることで、ターゲットの位置を推定することができます。何度かピンガーを打ってみて、受信波形と敵艦位置の関係を掴んでください。
受信波形が不明瞭でよく分からない場合は、少し時間をおいて再度ピンガーを打ってみましょう。(遠ざか ることもありますが)
注意)受信するまでの時間は、ピンガー波形表示[(((+)))]が消え、受信波形表示[.......]が始まった瞬間がスタートです。
魚雷発射
敵艦の位置を推定できたら、艦首魚雷を発射して敵艦を攻撃しましょう。魚雷発射管は6門あります。[5]を押すと魚雷発射管に注水すると共に、魚雷誘導装置に設定する敵艦座標の入力画面になります。入力を完了し、再度[5]を押すと、即座に魚雷を発射します。
魚雷発射後、命中(距離誤差 1 以下)すれば「Done!」と表示され、ミッションクリアです 。
距離誤差が 1 より大であれば「Miss」及び距離誤差値 e が表示され、続行となります 。
距離誤差 e は 5.1 だった。。
但し、魚雷残数がゼロになると、ミッション失敗です 。
![](https://www.google.com/images/icons/product/drive-32.png)
PB--100実機形式
PB-SIM形式
[P0]
1 VAC:O=2:B=6:$="''\DT,"
2 E=RAN#*12-3:F=1+RAN#*8:G=(RAN#-RAN#)/99:H=(RAN#-RAN#)/99
3 PRINT CSR0;"[.......]";B;:A$=KEY:IF A$="+";GOSUB #2
4 IF A$="5";GOSUB #3
5 E=E+G:F=F+H*SGN(F-1
6 GOTO 3
[P1]
1 FOR L=L TO 0 STEP -1:NEXT L:RETURN
[P2]
1 PRINT CSR4;"+";:FOR I=0 TO 9:P$(I)=""
2 IF I<3;PRINT CSR3-I;"(";CSR5+I;")";
3 FOR J=0 TO 6:K=ABS(I*I*O*O/4-(E-J)^2-F*F
4 M$=".":IF K<4;M$=MID(K+1,1)
5 P$(I)=P$(I)+M$:NEXT J:NEXT I
6 FOR I=0 TO 9:PRINT CSR1;P$(I);:L=20:GOSUB #1:NEXT I:RETURN
[P3]
1 IF KEY<>"" THEN 1
2 PRINT:PRINT "TPD";C;D;:IF KEY="4";C=C-1
3 IF KEY="6";C=C+1
4 IF KEY="8";D=D+1
5 IF KEY="2";D=D+SGN(1-D
6 IF KEY<>"5" THEN 2
7 PRINT:PRINT "Fire! ";:L=99*D:GOSUB #1
8 K=(C-E)^2+(D-F)^2:IF K<=1;PRINT "Done!":END
9 PRINT "Miss.","e=";RND(SQR K,-2)
10 B=B-1:IF B=0;PRINT "Lose":END
11 RETURN