敵弾アルゴリズム1~4
移動方向をcmx(i),cmx(i)に入れて返します
キャラを自己消去させる時はkillf=-1のフラグを立てて返します
自分弾アルゴリズム
1400 algo1:
1410 d1=bg_get(cx(i)+7,cy(i)+7,0) 進行方向BG読んで
1420 if d1=4 then bg_put
cx(i)+7,cy(i)+7,0 壊れる壁ならBG壁書きかえ
1430 if d1>2 then killf=-1 壁全般なら自己消滅
1440 return
1450 '
敵キャラ1アルゴリズム(転がる玉)
1460 algo2:
1470 if sp_bghit(i,0,3)=2 then cmy(i)=0 else
cmy(i)=cmy(i)+0.3 下のBG読んで床じゃないなら落下運動
1480 sp_margin i,7:if sp_bghit(i,cmx(i)*7,0)=2 then
cmx(i)*=-1 進行方向壁なら方向反転
1490
sp_margin i,2 sp_marginで読み込み位置調整、最後戻しておく
1500 return
1510 '
敵キャラ2アルゴリズム(浮遊)
1520 algo3:
1530 if cdt(i)<0
then 一定カウントで方向転換
1540 if
rnd(1)>0.2 then 20%確率で動作振り分け(移動か停止)
1550 d1=irnd(240)+8-cx(i) 移動、乱数で移動目標決定
1560
d2=irnd(200)+16-cy(i)
1570 k=sqr(d1^2+d2^2+1) 三平方の定理で移動量計算
1580cmx(i)=d1/k:cmy(i)=d2/k:cdt(i)=k
1590 else
1600cmx(i)=0:cmy(i)=0:cdt(i)=irnd(100)+1 一定カウント停止
1610 endif
1620 endif
1630 cpt(i)=16+(cdt(i) mod
20)\4 アニメーション 4フレームおき
1640
cdt(i)-=1 減数カウント
1650 if rnd(1)<0.002andbc<35thenbc+=1:nn=bc:nx=cx(i):ny=cy(i):na=5:gosub
cmake: 乱数で弾を撃つ
bcを+1してnnに代入、座標nx,nyとnaにキャラのアルゴリズム5(敵弾)入れてcmake:を呼ぶ
1660 return
1670 '
爆発アルゴリズム
1680 algo4:
1690 cdt(i)+=1 カウントして
1700 if cdt(i) mod 4=0 then
cpt(i)+=1 4回に一回パターンを1変化させる
1710 if cdt(i)>19 then killf=-1 20カウントで自己消滅
1720 return
1730 '