カーソルキーで自機(黄色い飛行機)を移動させることができます。 ただし、当たり判定はありません。 終了するには、[CTRL]キーを押しながら[STOP]キーを押してください。
1 'SAVE"TABLSP6.BAS
2 'SAVE"TABLSP6.ASC",A
1000 'テーブルか サンプル6
1010 ' レーダーほう(3)(メモリ せつやくがた、しかも 256 かいち
ょう、しかも かくさんだん)
1020 ' for MSX2(VRAM 64K)
1030 DEFINT A-Z:DIM TX(8),TY(8),SN!(255),CS!(255),RT(31,39),
HX(1),HY(1),GX!(14),GY!(14)
1050 SCREEN5,1,0:OPEN"GRP:"AS#1:COLOR15,0,1:CLS
1060 RESTORE1270:FOR PN=0TO2:A$="":FOR I=0TO7:READ B$:A$=A$+
CHR$(VAL("&B"+B$)):NEXT:SPRITE$(PN)=A$:NEXT'スプライト パター
ンの じゅんび
1070 RESTORE1540:FOR ST=0TO8:READ TX(ST),TY(ST):NEXT'キー へ
んかん テーブルの じゅんび
1080 GS=4:FOR AG=0TO255:SN!(AG)=GS*SIN(2*3.14159/256*AG):
CS!(AG)=GS*COS(2*3.14159/256*AG):NEXT'SIN/COS テーブルの
じゅんび(256 かいちょう)
1090 'ATN テーブルの じゅんび
1100 FOR X=1TO31:RT(X,0)=0:RT(X,X)=32:NEXT:FOR Y=1TO39:RT(0,
Y)=64:NEXT:RT(0,0)=64
1110 FOR Y=2TO31:FOR X=1TO Y-1:I=255AND(40.7436*ATN(Y/X)):R
T(X,Y)=I:RT(Y,X)=64-I:NEXT:NEXT:FOR Y=32TO39:FOR X=1TO31:RT(
X,Y)=255AND(40.7436*ATN(Y/X)):NEXT:NEXT
1120 'ざひょう および がめんの しょきか
1130 HX(0)=120:HY(0)=127:HX(1)=120:HY(1)=1:MC=192
1140 LINE(0,0)-(67,211),1,BF:LINE(68,0)-(187,159),14,BF:LINE
(188,0)-(255,211),1,BF:PSET(0,160),0,PSET:PRINT#1," カーソル
キーで プレイヤー いどう。":PRINT#1," [CTRL]+[STOP]で しゅう
りょう。":BEEP
1150 'LOOP
1160 FOR L1=0TO2480STEP0
1170 DX=(HX(0)-HX(1)+2)/4:DY=(HY(0)-HY(1)+2)/4:AG=RT(ABS(DX
),ABS(DY)):IF DX<0 THEN IF DY<0 THEN AG=128+AG ELSE AG=128-A
G ELSE IF DY<0 THEN AG=255AND(-AG)
1175 FOR GN=0TO14:GX!(GN)=HX(1):GY!(GN)=HY(1):NEXT:PSET(8,1
92),0,PSET:PRINT#1,USING"ANGLE:### (やく ### ど)";AG,360/256
*AG
1180 FOR L2=0TO15:TIME=0:L2=0
1190 PUT SPRITE0,(HX(0),HY(0)),10,0:PUT SPRITE1,(HX(1),HY(
1)),15,1:FOR GN=0TO14:PUT SPRITE2+GN,(GX!(GN),GY!(GN)),11,2:
NEXT
1200 ST=STICK(0)
1210 HX(0)=HX(0)+TX(ST):IF HX(0)<68 OR HX(0)>172 THEN HX(0
)=HX(0)-TX(ST)
1220 HY(0)=HY(0)+TY(ST):IF HY(0)<-1 OR HY(0)>143 THEN HY(0
)=HY(0)-TY(ST)
1225 HY(1)=65+16*SN!(MC):MC=255AND(MC+2)
1230 FOR GN=0TO14
1235 GX!(GN)=GX!(GN)+CS!(255AND(AG-56+GN*8)):GY!(GN)=GY!
(GN)+SN!(255AND(AG-56+GN*8)):IF GX!(GN)<62 OR GX!(GN)>178 O
R GY!(GN)<-7 OR GY!(GN)>149 THEN GY!(GN)=217:L2=L2+1
1236 NEXT
1240 FOR WT=-32768!TO-32760:WT=TIME-32768!:NEXT
1250 NEXT
1260 NEXT'LOOP おわり
1270 'SPRITE DATA(PLAYER)
1280 DATA 01100110
1290 DATA 11111111
1300 DATA 11111111
1310 DATA 01111110
1320 DATA 00100100
1330 DATA 00100100
1340 DATA 01111110
1350 DATA 01111110
1360 'SPRITE DATA(ENEMY)
1370 DATA 00111100
1380 DATA 01000010
1390 DATA 10111101
1400 DATA 10111101
1410 DATA 10111101
1420 DATA 10111101
1430 DATA 01000010
1440 DATA 00111100
1450 'SPRITE DATA(GUN)
1460 DATA 00000000
1470 DATA 00000000
1480 DATA 00000000
1490 DATA 00011000
1500 DATA 00011000
1510 DATA 00000000
1520 DATA 00000000
1530 DATA 00000000
1540 'キー へんかん テーブル
1550 DATA 0,0,0,-4,3,-3,4,0,3,3,0,4,-3,3,-4,0,-3,-3
| TX()、TY() | キー変換テーブル |
|---|---|
| SN!() | sin テーブル |
| CS!() | cos テーブル |
| RT(,) | 逆正接テーブル |
| HX(n)、HY(n) | 自機(敵)の座標(n=0:自機、n=1:敵) |
| GX!(m)、GY!(m) | 敵弾 m の座標 拡散弾の各弾に0〜14の番号を割り当てている |
| GS | 敵弾の速さ |
| L1、L2 | ループカウンタ (無限ループ実現のためのダミー変数) |
| MC | 敵弾発射部分の y 座標の計算に使用 |
| ST | カーソルキーの入力方向(0〜8) |
| GN | 敵弾番号 |
| WT | 速度調整用 |