敵弾の処理を改良する(3/3) |
; 敵の弾のデータ ; 動きのパターン dim batangle,20,64 dim dbatangle,20 dim nbat,20 dim nbatshot,20 dim batdir,20 dim btwtime,20 dim afttime,20 dim shotspeed,20 ; パターン0 自機に向けて単発 batangle.0.0=0 dbatangle.0=0 nbat.0=1 nbatshot.0=1 batdir.0=1 btwtime.0=0 afttime.0=64 shotspeed.0=5 ; パターン1 真下に3wayを単発 ・ ・ ・enedata2.as
; 敵のデータ ; 弾のパターン dim shotpat,8,4 dim bfrtime,8 ; 敵0 ザコ 茶 shotpat.0.0=0 shotpat.0.1=-1 bfrtime.0=8 ; 敵1 ザコ 紫 ・ ・ ・sample17.as
; プログラム起動時の初期設定 #include "enedata2.as" #include "shotdata.as" ; 敵の変数宣言 dim fstx,10:dim fsty,10 dim fstangle,10 ; 敵弾の出現 repeat 10 k=enekind.cnt l=32*(eneclass.k+1) if ((enemyf.cnt=1)|(enemyf.cnt=2))&(enemyx.cnt>=0)&(enemyx.cnt<=(xsize-l)) &(enemyy.cnt>=0)&(enemyy.cnt<=(ysize-l)) { n=cnt f=0 i=0 s=bfrtime.k if enemycnt.n<s { continue } repeat p=shotpat.k.i repeat nbatshot.p if enemycnt.n=s { f=1 j=cnt break } if enemycnt.n<s { f=2 break } if cnt!(nbatshot.p-1) { s=s+btwtime.p } loop if f!0 { break } s=s+afttime.p i=i+1 if shotpat.k.i=-1 { i=0 } if shotpat.k.i=-2 { break } loop if f!1 { continue } if j=0 { fstx.n=enemyx.n+((l-8)/2) fsty.n=enemyy.n+((l-8)/2) if batdir.p=0 { fstangle.n=64 } else { ematan r,playerx+12-fstx.n,playery+12-fsty.n fstangle.n=(192-r)&255 } } m=0 repeat 100 if (eshotf.cnt=0)&(m<nbat.p) { eshotf.cnt=1 eshotx.cnt=fstx.n eshoty.cnt=fsty.n smeshotx.cnt=eshotx.cnt<<8 smeshoty.cnt=eshoty.cnt<<8 r=(fstangle.n+batangle.p.m+(dbatangle.p*j))&255 smeshotdx.cnt=shotspeed.p*vcos.r smeshotdy.cnt=shotspeed.p*vsin.r m=m+1 } if m=nbat.p { break } loop } loop
実行画面