- Change processing system from Turbo C2.0 to Visual C ++ 1.51 - Significantly improved loading speed - Only the .wb entrance menu is displayed - Sample game STAR WITCH (star.wb, star.txt) attached Version 0.04 - from wonbe004.lzh
502 lines
17 KiB
Plaintext
502 lines
17 KiB
Plaintext
cls:print"Loading STAR WITCH..."
|
||
locate 10,10:print "○○○○";
|
||
100 cls:gosub 17000 'オープニング
|
||
1000 cls
|
||
1010 print "┏━━━━━━━━━┳━━━━━━━┳━━━━━━━━┓";
|
||
1020 print "┃ 12345678┃ ┃ ┃";
|
||
1030 print "┃1 ┃ENERGY ┃ ジャンプ ┃";
|
||
1040 print "┃2 ┃ ┃ ┃";
|
||
1050 print "┃3 ┃MISSILE┃ バーニア ┃";
|
||
1060 print "┃4 ┃ ┃ ┃";
|
||
1070 print "┃5 ┃LEFT ┃ ウェーブ ┃";
|
||
1080 print "┃6 ┃ ┃ ┃";
|
||
1090 print "┃7 ┃DAY ┃ ミサイル ┃";
|
||
1100 print "┃8 ┃ ┃ ┃";
|
||
1110 print "┣━━━━━━━━━┻━━━━━━━┻━━━━━━━━┫";
|
||
1120 print "┃ ┃";
|
||
1130 print "┃ ┃";
|
||
1140 print "┃ ┃";
|
||
1150 print "┃ ┃";
|
||
1160 print "┃ ┃";
|
||
1170 print "┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛";
|
||
1175 print " STAR WITCH ~ゴブリン帝国の野望~";
|
||
1180 rem 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
|
||
1190 rem
|
||
2000 rem 初期化
|
||
2005 randomize tick
|
||
2010 E=4000 'EはWITCH号のエネルギー
|
||
2020 M=10 'MはWITCH号の所持ミサイル
|
||
2030 L=10 'Lはクリアすべきエリアの残り数
|
||
2040 D=1 'Dは現在の日数 (1アクション1日)
|
||
2042 S=0 'WITCH号のX位置
|
||
2044 T=0 'WITCH号のY位置
|
||
2050 A=0 '@(A)~@A(A+8*8-1)までが現在エリアの内容
|
||
2060 '0:なし -1:小惑星 -2:輸送船
|
||
2061 '正数はゴブリン戦艦でエネルギー量
|
||
2065 W=A+8*8 'ワークエリアに使って良い配列の先頭位置
|
||
2070 B=0 'エリア作成時の輸送船の数
|
||
2080 G=0 'エリア作成時のゴブリン戦艦の数
|
||
2090 S=1+rnd(4) 'エリア作成時の小惑星の数
|
||
2095 H=0 '通算の撃破ゴブリン戦艦数
|
||
2100 P=11 'メッセージエリアのY位置 (良く参照されるので変数に置く)
|
||
2200 rem エリア進入
|
||
2210 gosub 10000
|
||
3000 rem ターン開始
|
||
3010 gosub 25000 'ステータス更新
|
||
3020 gosub 12000 '補給チェックと実行
|
||
3030 gosub 11000 '敵の攻撃
|
||
3100 rem コマンド選択
|
||
3105 gosub 20000:locate 2,P+2:print "艦長、ご指示を";
|
||
3110 c=0
|
||
3120 locate 20, 2+(c*2):print "→";
|
||
3200 s=wait
|
||
3205 locate 20, 2+(c*2):print " ";
|
||
3210 if s and scan_a then goto 4000+(c*1000)
|
||
3220 if s and scan_x1 then c=c-1:if c<0 then c=3
|
||
3230 if s and scan_x3 then c=c+1:if c>3 then c=0
|
||
3290 goto 3120
|
||
4000 '*******ジャンプ*******
|
||
4010 f=0
|
||
4020 for y=0 to 7:for x=0 to 7
|
||
4030 if @(A+x+y*8) > 0 then f=f+1
|
||
4040 next:next
|
||
4050 if f=0 then goto 4200
|
||
4060 gosub 20000
|
||
4070 locate 2,P+1:print "艦長!";
|
||
4080 locate 2,P+3:print "ゴブリン戦艦がまだ";f;"隻もいます!"
|
||
4090 d=wait
|
||
4100 gosub 20000
|
||
4110 goto 3100
|
||
4200 ' 行き先候補
|
||
4210 gosub 20000
|
||
4215 locate 2,P:print "目的地を指示してください"
|
||
4220 for i=0 to 2
|
||
4230 @(W+i*3)=1+rnd(5) 'ゴブリン戦艦1~5隻
|
||
4240 @(W+i*3+1)=0:if rnd(3)=0 then @(W+i*3+1)=1 '輸送船は1/3の確率
|
||
4250 @(W+i*3+2)=1+rnd(4) '小惑星1~5個
|
||
4260 locate 4,P+1+i
|
||
4270 print "ゴブリン";@(W+i*3);
|
||
4280 print " 輸送船";@(W+i*3+1);
|
||
4290 print " 小惑星"@(W+i*3+2);
|
||
4300 next
|
||
4400 rem 候補を選ぶ
|
||
4410 c=0
|
||
4420 locate 2, P+1+c:print "→";
|
||
4500 s=wait
|
||
4505 locate 2, P+1+c:print " ";
|
||
4510 if s and scan_a then goto 4600
|
||
4520 if s and scan_x1 then c=c-1:if c<0 then c=2
|
||
4530 if s and scan_x3 then c=c+1:if c>2 then c=0
|
||
4590 goto 4420
|
||
4600 ' 次のエリアに行く
|
||
4610 B=@(W+c*3+1)
|
||
4620 G=@(W+c*3)
|
||
4630 S=@(W+c*3+2)
|
||
4700 gosub 20000
|
||
4710 locate 2,P+1:print "ハイパースペース・ドライブ";
|
||
4720 locate 2,P+3:print " スタンバイOK!"
|
||
4730 d=wait
|
||
4740 gosub 20000
|
||
4750 locate 2,P+2:print "次のエリアにジャンプします";
|
||
4760 d=wait
|
||
4780 gosub 20000
|
||
4785 for y=0 to 7:for x=0 to 7:locate 2+x,2+y:print "※";:next:next
|
||
4790 waitvb 75
|
||
4795 if E>10 then E=E-10:goto 4800
|
||
4796 locate 2,P+1:print "艦長! エネルギーが足りません!";
|
||
4797 locate 4,P+3:print "通常空間に復帰できません!!";
|
||
4798 d=wait:goto 19000
|
||
4800 locate 2,P+2:print "ジャンプ成功! レーダー動作します";
|
||
4810 d=wait
|
||
4820 gosub 20000
|
||
4890 D=D+1:L=L-1:goto 2200
|
||
locate 10,10:print "●○○○";
|
||
5000 '******バーニア*******
|
||
5010 gosub 20000
|
||
5020 locate 2,P+1:print "エリア内移動・スタンバイ";
|
||
5030 locate 2,P+3:print "コースは? (0-360)";
|
||
5040 X=21:Y=P:gosub 21000
|
||
5050 if Z<0 then goto 3100 'キャンセルされた
|
||
5060 if Z<=360 then s=Z:goto 5100
|
||
5070 gosub 20000
|
||
5080 locate 2,P+1:print "艦長!";
|
||
5090 locate 2,P+3:print "コースは0から360までです!";
|
||
5095 d=wait:goto 5010
|
||
5100 gosub 20000
|
||
5110 locate 2,P+1:print "エリア内移動・スタンバイ";
|
||
5120 locate 2,P+3:print "距離は? (1-12)";
|
||
5130 X=21:Y=P:gosub 21000
|
||
5140 if Z<0 then goto 5010 'キャンセルされた
|
||
5145 if Z>E+1 then goto 5190
|
||
5150 if Z>=1 and Z<=12 then l=Z:E=E-l:goto 5200
|
||
5155 gosub 20000
|
||
5160 locate 2,P+1:print "艦長!";
|
||
5170 locate 2,P+3:print "距離は1から12までです!";
|
||
5180 d=wait:goto 5100
|
||
5190 gosub 20000
|
||
5192 locate 2,P+1:print "艦長!";
|
||
5194 locate 2,P+3:print "エネルギーが足りません!";
|
||
5198 d=wait:goto 5100
|
||
5200 '移動アニメーション
|
||
5210 gosub 20000
|
||
5215 'locate 2+S,2+T:print " ";
|
||
5220 X=s:gosub 23000:a=Y
|
||
5230 X=s:gosub 22000:b=-Y '反時計回りにしたいのでマイナス
|
||
5235 c=S:d=T '最後に有効であった座標を持つ
|
||
5240 i=1:j=0 'iは本当の移動距離。jは見かけ上の移動距離
|
||
5250 x=S+a*i/100
|
||
5260 y=T+b*i/100
|
||
5261 'debug S,T,x,y,a,b,i,s
|
||
5262 if x<0 or x>7 or y<0 or y>7 then goto 5400
|
||
5264 if @(A+x+y*8)=0 then goto 5270
|
||
5266 gosub 20000:locate 2,P+2:print "衝突回避! 緊急停止!";d=wait
|
||
5268 goto 5400 'ループを強制終了させる
|
||
5270 if c=x and d=y then goto 5300 '見かけ上の移動が起きていない
|
||
5272 j=j+1
|
||
5275 locate 2+x,2+y:print "W";
|
||
5280 locate 2+c,2+d:print " ";:c=x:d=y
|
||
6285 D=D+1:gosub 25000
|
||
5290 waitvb 75
|
||
5300 i=i+1:if j<l then goto 5250
|
||
5400 S=c:T=d
|
||
5410 locate 2+S,2+T:print "W";
|
||
5500 goto 3000
|
||
6000 '*****ウェーブ*****
|
||
6010 gosub 20000
|
||
6020 locate 2,P+1:print "ウェーブキヤノン・スタンバイ";
|
||
6030 locate 2,P+3:print " エネルギー量は? (1-";E-1;")";
|
||
6040 X=21:Y=P:gosub 21000
|
||
6050 if Z<0 then goto 3100 'キャンセルされた
|
||
6060 if Z>=1 and Z<=E-1 then s=Z:goto 6100
|
||
6070 gosub 20000
|
||
6080 locate 2,P+1:print "艦長!";
|
||
6090 locate 2,P+3:print " エネルギー量は1から";E-1;"までです!";
|
||
6095 d=wait:goto 6010
|
||
6100 gosub 20000
|
||
6110 ' 存在するオブジェクト数を数える
|
||
6120 f=0
|
||
6130 for y=0 to 7:for x=0 to 7
|
||
6140 if @(A+x+y*8) <> 0 then f=f+1
|
||
6150 next:next
|
||
6160 e=s/f:if e<1 then e=1 'eは1標的あたりの攻撃量
|
||
6170 gosub 20000
|
||
6180 locate 2,P+2:print "ウェーブキヤノン・発射!";
|
||
6190 d=wait
|
||
6200 for y=0 to 7:for x=0 to 7
|
||
6210 if @(A+x+y*8) <= 0 then goto 6400
|
||
6220 gosub 20000
|
||
6230 locate 2,P+1:print "(";x+1;",";y+1;")のゴブリン戦艦にダメージ";e;
|
||
6240 @(A+x+y*8)=@(A+x+y*8)-e:if @(A+x+y*8)<=0 then @(A+x+y*8)=0:goto 6300
|
||
6245 locate 4,P+3:print "(残りエネルギー";@(A+x+y*8);")";
|
||
6250 d=wait
|
||
6290 goto 6400
|
||
6300 locate 4,P+3:print "ゴブリン戦艦、撃沈!";:H=H+1
|
||
6350 X=x:Y=y:gosub 24000 '爆発
|
||
6400 next:next
|
||
6900 E=E-s:
|
||
6910 if L=0 then gosub 26000:if Y=0 then goto 18000
|
||
6920 D=D+1:goto 3000
|
||
locate 10,10:print "●●○○";
|
||
7000 '******ミサイル******
|
||
7010 if M>0 then goto 7100
|
||
7020 gosub 20000
|
||
7030 locate 2,P+1:print "艦長!";
|
||
7040 locate 2,P+3:print "ミサイルの残弾はゼロです!";
|
||
7050 d=wait
|
||
7090 goto 3100
|
||
7100 gosub 20000
|
||
7110 locate 2,P+1:print "ミサイル・スタンバイ";
|
||
7120 locate 2,P+3:print "コースは? (0-360)";
|
||
7130 X=21:Y=P:gosub 21000
|
||
7140 if Z<0 then goto 3100 'キャンセルされた
|
||
7150 if Z<=360 then s=Z:goto 7200
|
||
7160 gosub 20000
|
||
7170 locate 2,P+1:print "艦長!";
|
||
7180 locate 2,P+3:print "コースは0から360までです!";
|
||
7190 d=wait:goto 7100
|
||
7200 '移動アニメーション
|
||
7205 M=M-1:gosub 25000
|
||
7210 gosub 20000
|
||
7220 X=s:gosub 23000:a=Y
|
||
7230 X=s:gosub 22000:b=-Y '反時計回りにしたいのでマイナス
|
||
7235 i=1
|
||
7240 c=S:d=T '最後に有効であった座標を持つ
|
||
7250 x=S+a*i/100
|
||
7260 y=T+b*i/100
|
||
7270 'debug S,T,x,y,a,b,i,s
|
||
7280 if x<0 or x>7 or y<0 or y>7 then goto 7500
|
||
7290 if @(A+x+y*8)<>0 then goto 7600
|
||
7320 if c=x and d=y then goto 7370 '見かけ上の移動が起きていない
|
||
7340 locate 2+x,2+y:print "M";
|
||
7350 waitvb 75
|
||
7360 locate 2+x,2+y:print " ";:c=x:d=y
|
||
7370 i=i+1:goto 7250
|
||
7400 goto 3000
|
||
7500 'はずれ!
|
||
7510 gosub 20000
|
||
7515 locate 2,P+1:print "艦長!";
|
||
7520 locate 4,P+3:print "攻撃は失敗です!";
|
||
7530 d=wait
|
||
7590 D=D+1:goto 3000
|
||
7600 'あたり!
|
||
7610 gosub 20000
|
||
7620 locate 2,P+1:print "艦長!";
|
||
7630 locate 4,P+3
|
||
7640 if @(A+x+y*8)=-1 then print "小惑星に命中しました!";
|
||
7650 if @(A+x+y*8)=-2 then print "輸送船に命中しました!";
|
||
7660 if @(A+x+y*8)>0 then print "ゴブリン戦艦に命中しました!";
|
||
7670 X=x:Y=y:gosub 24000 '爆発
|
||
7680 'd=wait
|
||
7690 gosub 20000
|
||
7700 locate 4,P+2
|
||
7710 if @(A+x+y*8)=-1 then print "小惑星の消滅を確認!";
|
||
7720 if @(A+x+y*8)=-2 then print "輸送船乗組員の救助のため10日必要です";:D=D+1
|
||
7730 if @(A+x+y*8)>0 then print "ゴブリン戦艦を撃沈!";:H=H+1
|
||
7740 @(A+x+y*8)=0 'そこにはもう何もない
|
||
7750 d=wait
|
||
7760 if L=0 then gosub 26000:if Y=0 then goto 18000
|
||
7790 D=D+1:goto 3000
|
||
|
||
10000 rem エリア作成
|
||
10005 for y=0 to 7:for x=0 to 7:@(A+x+y*8)=0:next:next
|
||
10010 if B=0 then goto 10100
|
||
10020 for i=0 to B-1
|
||
10030 x=rnd(8):y=rnd(8)
|
||
10040 if @(A+x+y*8) <> 0 then goto 10030
|
||
10050 @(A+x+y*8)=-2
|
||
10060 next
|
||
10100 if G=0 then goto 10200
|
||
10105 for i=0 to G-1
|
||
10110 x=rnd(8):y=rnd(8)
|
||
10120 if @(A+x+y*8) <> 0 then goto 10110
|
||
10130 @(A+x+y*8)=400+rnd(200) 'ゴブリン戦艦のエネルギー初期値
|
||
10140 next
|
||
10200 for i=0 to S-1
|
||
10210 x=rnd(8):y=rnd(8)
|
||
10220 if @(A+x+y*8) <> 0 then goto 10210
|
||
10230 @(A+x+y*8)=-1
|
||
10240 next
|
||
10250 'WITCH号の位置を確定
|
||
10260 S=rnd(7):T=rnd(7)
|
||
10270 if @(A+S+T*8) <> 0 then goto 10260
|
||
10300 gosub 10500
|
||
10400 return
|
||
10500 'レーダー作動
|
||
10510 for y=0 to 7:for x=0 to 7
|
||
10520 locate x+2,y+2
|
||
10530 t=@(A+x+y*8)
|
||
10540 if t=0 then print " ";
|
||
10550 if t=-1 then print "*";
|
||
10560 if t=-2 then print "T";
|
||
10570 if t>0 then print "G";
|
||
10580 next:next
|
||
10590 locate S+2,T+2:print "W";
|
||
10600 return
|
||
|
||
11000 '*****敵の攻撃*****
|
||
11010 for y=0 to 7:for x=0 to 7
|
||
11020 if @(A+x+y*8) <= 2 then goto 11900
|
||
11025 n=@(A+x+y*8)/4+rnd(@(A+x+y*8)/2):if n<1 then 11900
|
||
11030 gosub 20000
|
||
11040 locate 2,P+1:print "(";x+1;",";y+1;")のゴブリン戦艦よりの攻撃!";
|
||
11050 d=wait
|
||
11070 locate 4,P+3:print "WITCH号に";n;"のダメージ!";
|
||
11075 @(A+x+y*8)=@(A+x+y*8)-n
|
||
11080 E=E-n:if E<0 then E=0
|
||
11090 gosub 25000
|
||
11100 d=wait
|
||
11110 if E>0 then goto 11900
|
||
11120 gosub 20000
|
||
11130 locate 2,P+1:print "艦長!";
|
||
11130 locate 4,P+3:print "エネルギーがもうありません!";
|
||
11140 gosub 20000
|
||
11150 locate 2,P+1:print "防御バリア機能停止";
|
||
11160 locate 4,P+3:print "WITCH号の船体が砕けます!";
|
||
11170 X=S:Y=T:gosub 24000 '爆発
|
||
11180 gosub 20000
|
||
11190 goto 19000 'BAD ENDING
|
||
11900 next:next
|
||
11910 return
|
||
|
||
locate 10,10:print "●●●○";
|
||
|
||
12000 '補給チェックと実行
|
||
12020 f=0
|
||
12030 if S>0 then if @(A+(S-1)+T*8)=-2 then f=1
|
||
12040 if S<7 then if @(A+(S+1)+T*8)=-2 then f=1
|
||
12050 if T>0 then if @(A+S+(T-1)*8)=-2 then f=1
|
||
12060 if T<7 then if @(A+S+(T+1)*8)=-2 then f=1
|
||
12070 if f=0 then return
|
||
12080 gosub 20000
|
||
12090 locate 2,P+1:print "艦長!";
|
||
12100 locate 4,P+3:print "輸送船から補給を受けます。";
|
||
12110 d=wait
|
||
12120 E=4000:M=10
|
||
12130 gosub 25000 'ステータス更新
|
||
12190 return
|
||
|
||
17000 'OPENING
|
||
17010 cls
|
||
17020 for i=0 to 1
|
||
17030 locate 2,2:print "緊急指令!"
|
||
17040 waitvb 30
|
||
17050 locate 2,2:print " "
|
||
17060 waitvb 30
|
||
17070 next
|
||
17100 locate 2,2:print "緊急指令!"
|
||
17110 cls:print
|
||
17120 waitvb 30:print " かねてより":print
|
||
17130 waitvb 30:print " 我が地球連邦政府に敵対していた":print
|
||
17140 waitvb 30:print " 凶悪なゴブリン帝国が":print
|
||
17150 waitvb 30:print " 多数の宇宙戦艦で侵攻してきた":print
|
||
17155 print
|
||
17160 waitvb 30:print " 連邦艦隊ナンバーワン艦長の君に命じる":print
|
||
17170 waitvb 30:print " 最新鋭戦艦WITCH号を指揮し":print
|
||
17180 waitvb 30:print " 侵入したゴブリン戦艦を撃破せよ"
|
||
17190 d=wait
|
||
|
||
17200 cls
|
||
17210 for i=0 to 4
|
||
17220 if i=4 then locate 2, 2:print" ■■■ ■■■■■ ■ ■■■■"
|
||
17230 if i=3 then locate 2, 3:print" ■ ■ ■ ■ ■ ■"
|
||
17240 if i=2 then locate 2, 4:print" ■■■ ■ ■■■ ■■■■"
|
||
17250 if i=1 then locate 2, 5:print" ■ ■ ■ ■ ■ ■"
|
||
17260 if i=0 then locate 2, 6:print" ■■■ ■ ■ ■ ■ ■"
|
||
17270 if i=0 then locate 2, 9:print"■ ■ ■ ■ ■■■ ■■■ ■ ■"
|
||
17280 if i=1 then locate 2,10:print"■ ■ ■ ■ ■ ■ ■ ■ ■ ■"
|
||
17290 if i=2 then locate 2,11:print"■ ■ ■ ■ ■ ■ ■ ■■■■"
|
||
17300 if i=3 then locate 2,12:print"■ ■ ■ ■ ■ ■ ■ ■ ■ ■"
|
||
17310 if i=4 then locate 2,13:print" ■ ■ ■ ■ ■■■ ■ ■"
|
||
17320 waitvb 30:next
|
||
17330 locate 9,15:print "~ゴブリン帝国の野望~";
|
||
17340 d=wait
|
||
17400 cls
|
||
17410 print " ***WITCH号の最新装備を紹介する***":print
|
||
17420 waitvb 30:print " 量子レーダー:"
|
||
17430 print " W←WITCH号 *←小惑星"
|
||
17440 print " G←ゴブリン戦艦 T←輸送船":print
|
||
17450 waitvb 30:print " 超空間ジャンプドライブ:"
|
||
17460 print " エリア内の敵を全滅させたら次のエリアに進める。":print
|
||
17470 waitvb 30:print " バーニア:"
|
||
17480 print " エリア内を移動できる。":print
|
||
17490 waitvb 30:print " ウェーブキヤノン:"
|
||
17500 print " エリア内のすべての敵を同時攻撃":print
|
||
17510 waitvb 30:print " 反応弾頭ミサイル:"
|
||
17520 print " 敵艦も小惑星も一撃で粉砕する"
|
||
17590 d=wait
|
||
17600 cls
|
||
17610 locate 8,8:print "それでは健闘を祈る!"
|
||
17690 d=wait
|
||
17700 cls
|
||
17710 locate 5,8:print "艦長! WITCH号、出港します!"
|
||
17790 d=wait
|
||
17900 return
|
||
|
||
18000 'GOOD ENDING
|
||
18010 cls:print
|
||
18020 waitvb 75:print " 作戦開始後";D;"日":print
|
||
18030 waitvb 75:print " ";H;"隻の戦艦を失った":print
|
||
18032 waitvb 75:print " ゴブリン帝国は、全面降伏した":print
|
||
18035 waitvb 75:print " 宇宙の平和は守られたのだ":print
|
||
18040 waitvb 75:print " WITCH号ならびに艦長の活躍をたたえ":print
|
||
18050 waitvb 75:print " 全人類から感謝の言葉をおくる":print
|
||
18060 waitvb 75:locate 10,14:print "ありがとう!"
|
||
18070 waitvb 75:locate 10,16:print "CONGRATURATIONS!";
|
||
18080 d=wait
|
||
18090 end
|
||
|
||
locate 10,10:print "●●●●";
|
||
|
||
19000 'BAD ENDING
|
||
19010 cls:print
|
||
19020 waitvb 75:print " 作戦開始後";D;"日":print
|
||
19030 waitvb 75:print " WITCH号、宇宙の藻屑と消える":print
|
||
19040 waitvb 75:print " この日、地球連邦政府は、ゴブリン帝国に降伏":print
|
||
19050 waitvb 75:print " 地球人はゴブリン帝国の奴隷となった":print
|
||
19060 waitvb 75:locate 17,16:print "GAME OVER!";
|
||
19080 d=wait
|
||
19090 end
|
||
20000 ' clear message
|
||
20010 for i=11 to 15:locate 1,i
|
||
20020 print " ";
|
||
20030 next
|
||
20040 return
|
||
21000 ' 数値入力
|
||
21010 locate X,Y+0:print "┏━━━━┓";
|
||
21020 locate X,Y+1:print "┃ ┃";
|
||
21030 locate X,Y+2:print "┃0000┃";
|
||
21040 locate X,Y+3:print "┃ ┃";
|
||
21050 locate X,Y+4:print "┗━━━━┛";
|
||
21100 for i=0 to 3:@(W+i)=0:next
|
||
21110 v=3 '桁位置
|
||
21200 locate X+v+1,Y+1:print "↑";
|
||
21210 locate X+v+1,Y+3:print "↓";
|
||
21220 for i=0 to 3:locate X+i+1,Y+2:print @(W+i);:next
|
||
21300 s=wait
|
||
21310 locate X+v+1,Y+1:print " ";
|
||
21320 locate X+v+1,Y+3:print " ";
|
||
21330 if s and scan_x3 then @(W+v)=@(W+v)-1:if @(W+v)<0 then @(W+v)=9
|
||
21340 if s and scan_x1 then @(W+v)=@(W+v)+1:if @(W+v)>9 then @(W+v)=0
|
||
21350 if s and scan_x2 then v=v+1:if v>3 then v=0
|
||
21360 if s and scan_x4 then v=v-1:if v<0 then v=3
|
||
21365 if s and scan_a then goto 21400
|
||
21370 if s and scan_b then Z=-1:return
|
||
21380 goto 21200
|
||
21400 Z=@(W+0)*1000+@(W+1)*100+@(W+2)*10+@(W+3)
|
||
21410 return
|
||
|
||
22000 ' 疑似三角関数(Y=sin(X)) Y=-100...100 X=0-360
|
||
22010 X=X/5
|
||
22020 if X<=18 then gosub 22100:return
|
||
22030 if X<=36 then X=36-X:gosub 22100:return
|
||
22040 if X<=54 then X=X-36:gosub 22100:Y=-Y:return
|
||
22050 if X<=72 then X=72-X:gosub 22100:Y=-Y:return
|
||
22060 X=X-72:goto 22020
|
||
22100 if X=0 then Y=0
|
||
22110 if X=1 then Y=8
|
||
22120 if X=2 then Y=17
|
||
22130 if X=3 then Y=25
|
||
22140 if X=4 then Y=34
|
||
22150 if X=5 then Y=42
|
||
22160 if X=6 then Y=49
|
||
22170 if X=7 then Y=57
|
||
22180 if X=8 then Y=64
|
||
22190 if X=9 then Y=70
|
||
22200 if X=10 then Y=76
|
||
22210 if X=11 then Y=81
|
||
22220 if X=12 then Y=86
|
||
22230 if X=13 then Y=90
|
||
22240 if X=14 then Y=93
|
||
22250 if X=15 then Y=96
|
||
22260 if X=16 then Y=98
|
||
22270 if X=17 then Y=99
|
||
22280 if X=18 then Y=99
|
||
22290 return
|
||
23000 ' 疑似三角関数(cos)
|
||
23010 X=X+90:gosub 22000:return
|
||
24000 ' 爆発アニメーション
|
||
24005 locate 2+X,2+Y:print "・";:waitvb 30
|
||
24010 locate 2+X,2+Y:print "●";:waitvb 30
|
||
24020 locate 2+X,2+Y:print "※";:waitvb 30
|
||
24030 locate 2+X,2+Y:print " ";
|
||
24040 d=wait
|
||
24090 return
|
||
25000 '******ステータス表示更新*****
|
||
25010 locate 11,3:print " ";
|
||
25020 locate 14,3:print E;
|
||
25030 locate 11,5:print " ";
|
||
25040 locate 14,5:print M;
|
||
25050 locate 11,7:print " ";
|
||
25060 locate 14,7:print L;
|
||
25070 locate 11,9:print " ";
|
||
25080 locate 14,9:print D;
|
||
25090 return
|
||
26000 ' エリア内残り敵戦艦を数えてYに返す
|
||
26010 Y=0
|
||
26020 for y=0 to 7:for x=0 to 7
|
||
26030 if @(A+x+y*8)>0 then Y=Y+1
|
||
26040 next:next
|
||
26090 return
|
||
|
||
cls:print"Loading Completed"
|