
参考資料
§ スプライト操作2・衝突判定 §
スプライト同士の衝突判定は、SPCOLステートメントで衝突の判定を行う事を設定した後、SPHITSP関数で実現する事が出来ます。
下記のプログラムでは、スプライト同士の衝突の判定を実現して居ます。キャラクタは、
ボタンで上下左右に移動し、他のスプライトと衝突すると、其の番号を表示します。終了するには、
ボタンを押して下さい。
| 0000001 | OPTION STRICT |
| 0000002 | ACLS |
| 0000003 | DIM I,B,X=192,Y=112,N |
| 0000004 | |
| 0000005 | SPSET 0,2544 |
| 0000006 | SPOFS 0,X,Y |
| 0000007 | SPCOL 0 |
| 0000008 | |
| 0000009 | FOR I=1 TO 5 |
| 0000010 | SPSET I,I-1 |
| 0000011 | SPOFS I,RND(384),RND(224) |
| 0000012 | SPCOL I |
| 0000013 | NEXT |
| 0000014 | |
| 0000015 | WHILE TRUE |
| 0000016 | B=BUTTON(0) |
| 0000017 | |
| 0000018 | 'QUIT |
| 0000019 | IN B AND 64 THEN BREAK |
| 0000020 | |
| 0000021 | 'MOVE |
| 0000022 | IF B AND 1 THEN |
| 0000023 | DEC Y : IF Y<0 THEN Y=0 |
| 0000024 | ENDIF |
| 0000025 | IF B AND 2 THEN |
| 0000026 | INC Y : IF Y>224 THEN Y=224 |
| 0000027 | ENDIF |
| 0000028 | IF B AND 4 THEN |
| 0000029 | DEC X : IF X<0 THEN X=0 |
| 0000030 | ENDIF |
| 0000031 | IF B AND 8 THEN |
| 0000032 | INC X : IF X>384 THEN X=384 |
| 0000033 | ENDIF |
| 0000034 | |
| 0000035 | 'COLLISION |
| 0000036 | N=SPHITSP(0) |
| 0000037 | IF N>0 THE |
| 0000038 | LOCATE 0,0 : PRINT "HIT SPRITE "+STR$(N) |
| 0000039 | ENDIF |
| 0000040 | |
| 0000041 | SPOFS O,X,Y |
| 0000042 | |
| 0000043 | VSYNC 1 |
| 0000044 | WEND |
| 0000045 | ACLS : END |