判定 hit

500 'hit
510 sp_check:rc=2   予め設定していた割り当てに基づいてスプライトの衝突チェックを行います
  結果から自分キャラと敵&弾の衝突を処理をします
520 if sp_hit(0,0)>0 then  衝突があるなら
530 kn=sp_hit(0,1):dc+=1:nn=dc:nx=cx(kn):ny=cy(kn):na=4:gosub cmake:  爆発キャラ作成
  sp_hit(0,1)から衝突した相手の番号を検知、番号から座標を検知してnx,nyに代入、
  dcを+1してnnに代入、na(アルゴリズム)は4(爆発)でcmake:を呼ぶ
540  f=-(19<kn):fn=-ec*(not -f)+bc*f :rc=f*2+2:gosub ckill:  当たった敵または弾を消す
  kn(当たった番号)が19より小さければ敵、大きければ弾と判別、どちらかによってその最後尾の数(ecかbc)をfnに入れる
  rcに2か4を入れてckill:を呼ぶ
550 mvt-=1:if mvt=0 then sp_on 0,0:ui_msg"end."
  自己バイタリティを引いて0ならスプライト0(自分)を消してendのメッセージ
560 endif
  自弾と敵の衝突で処理をします
570 for i=1 to lc  1から自分弾の数だけ繰り返す
580 if sp_hit(i,0)>0 then  当たっているなら
590 kn=sp_hit(i,1):dc+=1:nn=dc:nx=cx(kn):ny=cy(kn):na=4:gosub cmake:  爆発キャラ作成
  sp_hit(i,1)から衝突した相手の番号・座標を検知してnx,nyに代入、dcを+1してnnに代入、
  na(アルゴリズム)は4(爆発)でcmake:を呼ぶ
600 if cag(kn)=3 then fn=ec:rc=2:gosub ckill:  敵の消滅処理
  fnにec(敵の最後尾)を入れ、rcは2(ecを削る)でckill:を呼ぶ
610 kn=i:fn=lc:rc=0:i-=1:gosub ckill:  自弾の消滅処理
  knにi(消す自弾の番号)fnにlc(自弾の最後尾)、rcは0(lcを削る)をセットしてckill:を呼ぶ
  次ループで同一番号を処理するためiを1引く(中身は新たに最後尾だったものが入っている)
620 endif
630 next
640 '