カーソルキーで自機(黄色い飛行機)を移動させることができます。 ただし、当たり判定はありません。 終了するには、[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 | 速度調整用 |