少し前にも質問させていただきましたが、また質問させてください。
敵が渦巻き→円形弾と打ってくるようにしたいのですが、円形弾が少しおかしな形になってしまいます。
自分は実力不足故質問させていただきました。何度もレベルの低い質問すみません。
ご教授お願いします
#define window_x 800 //画面の大きさ X座標 #define window_y 600 //画面の大きさ Y座標 screen 0,window_x,window_y dbry=0//弾幕の種類 frame=0 //自機座標 x=244 y=450 xf=1 //自機弾初期化 tamax=10 dim tamaf,tamax//存在フラグ dim tama_x,tamax dim tama_y,tamax dim tama_rx,tamax dim tama_ry,tamax dim tama_lx,tamax dim tama_ly,tamax //敵機座標 ex=244.0 ey=-50.0 //敵機弾初期化 etamax=1000 dim etamaf,etamax dim etama_x,vartype("double"),etamax dim etama_y,vartype("double"),etamax dim etama_vx,vartype("double"),etamax dim etama_vy,vartype("double"),etamax ehp=1000 ssp=5 ;スクロール速度 scr=0 //メインループ *メイン redraw 0 color 255,255,255 boxf frame=frame+1 pos 500,25 color 0,0,0 mes frame pos 500,50 mes ehp getkey zkey , 90 gosub*自機 if zkey=1:gosub*自機弾 gosub*敵 if dbry=1:gosub*渦巻き弾 if dbry=2 : gosub*円形弾幕 gosub*敵弾表示 gosub*敵機表示 gosub*敵あたり redraw 1 await 10 goto*メイン *自機 //自機移動処理 stick key,31 if key & 1:x-speed if key & 2:y-speed if key & 4:x+speed if key & 8:y+speed if xf!=0{ pos x-10,y-31 mes"自" } //低速移動処理 stick tkey,64 if tkey=64 : speed=2 if tkey=0 : speed=8 *自機弾 //自機弾処理 if zkey=1 { if shottime=0 { shottime=5 repeat tamax if tamaf(cnt)=0{ tama_x(cnt)=x tama_y(cnt)=y-30 tama_rx(cnt)=x+20 tama_ry(cnt)=y-30 tama_lx(cnt)=x-20 tama_ly(cnt)=y-30 tamaf(cnt)=1 break } loop } else { shottime-- } } //自機弾の移動 repeat tamax if tama_y(cnt) < 0 : tamaf(cnt) = 0 if tama_ry(cnt) < 0 : tamaf(cnt) = 0 if tama_ly(cnt) < 0 : tamaf(cnt) = 0 if tamaf(cnt)=1{ tama_y(cnt)-=10//弾同士の間隔が20ピクセル tama_ry(cnt)-=10 tama_ly(cnt)-=10 if tama_y(cnt)<-1000{ tamaf(cnt)=0 } } loop //自機弾表示 repeat tamax if tamaf(cnt)=1{ pos tama_x(cnt)-4,tama_y(cnt)-14 mes"i" pos tama_rx(cnt)-4,tama_ry(cnt)-14 mes"||" pos tama_lx(cnt)-4,tama_ly(cnt)-14 mes "|||" } loop *敵 if frame > 100 { ;フレーム数が100を超えたら、敵を表示 ey = ey+1 ;敵の移動スピード ef=1 ;敵の座高が100行ったらそこでストップ : 敵フラグを立てる if ey > 100.0 : ey = 100.0:ef=2:dbry=1 } return *渦巻き弾 if frame\2 ==1{ if ef=2{ if dbry=1{ g=10 t1=0.1+t1 if(t1>t):t1=t*2 t2=0.0+t1+t2 if(t2>t):t2=t*2 trnd=0.001*rnd(3142)//安置防止 repeat g t = m_pi*2*cnt / g+t1 gosub*敵弾サーチ if(number !=-1){ //弾の発射 etama_x(number)=ex-10 etama_y(number)=ey etamaf(number)=1 etama_vx(number)=cos(t)*0.3 etama_vy(number)=sin(t)*0.3 gosub*敵弾移動 if frame>700 : dbry=2 :etamaf(cnt)=0 } loop } } } *円形弾幕 if frame>750{ if frame\60=0{ if ef=2{ g=30 repeat g t = m_pi*2*cnt/g gosub*敵弾サーチ if(number !=-1){ etama_x(number)=ex etama_y(number)=ey etamaf(number)=1 etama_vx(number)=cos(t)*2.0 etama_vy(number)=sin(t)*2.0 gosub*敵弾移動 } loop } } } *敵弾移動 repeat etamax if etamaf(cnt)!=0 { etama_x(cnt)=etama_x(cnt)+etama_vx(cnt) etama_y(cnt)=etama_y(cnt)+etama_vy(cnt) if(etama_x(cnt)<-2 || etama_y(cnt)<-2 || etama_x(cnt)>450 || etama_y(cnt)>600 ):etamaf(cnt) == 0 } loop *自機あたり if xf=1{ dx = x - etama_x : dy = y - etama_y dx*=dx : dy*=dy if(dx + dy <=100){ mmplay 0 etamaf=1 xf=0 } } *敵あたり edx = ex - tama_x : edy = ey - tama_y edx*=edx : edy*=edy if(edx + edy <=100){ tamaf=1 ehp=ehp-50 } if ehp<=0 { ehp=0 ef=0 } *敵機表示 if ef!=0{ pos ex-20,ey-20 mes "敵" } return *敵弾表示 repeat etamax if etamaf(cnt)!=0{ pos etama_x(cnt)-6,etama_y(cnt)-8 mes"○" } loop return *敵弾サーチ number = -1 repeat etamax if(etamaf(cnt)!=1) :number=cnt:break loop return