敵に弾が当たると、弾は消えるのですが敵が消えません
敵のフラグを書き込む位置が悪いのでしょうか?
それとも、何か抜けてますか?
どうか、宜しくお願いします。
// ウィンドウズ初期値
screen 0,300,300,0,0,660 x = 150 // 自機X座標 y = 270 // 自機Y座標 ef = 1 // 敵フラグ ex =16 // 敵X座標 ey =16 // 敵Y座標 espd=3 // 敵のスピード epx = espd : epy = espd // 敵のXY方向 bmax = 3 // 自弾数 bspd = 4 // 弾の速さ dim bf,bmax // 弾フラグ dim bx,bmax // 弾X座標 dim by,bmax // 弾Y座標 // メインループ開始 *main // 画面を黒で初期化 redraw 0 color 0,0,0 : boxf // キー入力 stick key,15 if key & 1 : x-=3 : if x < 0+8 : x = 0+8 // 左移動 左の壁との当たり判定 if key & 4 : x+=3 : if x > 300-8 : x = 300-8 // 右移動 右の壁との当たり判定 // Space key if key & 16 { shot = 1 // 1なら発射 } else { shot = 0 // 0なら弾切れ中 } // 弾の発射 if shot = 1 { // 1なら発射 repeat bmax // 弾があるあいだ撃つ if bf(cnt) = 0 { bx(cnt) = x by(cnt) = y bf(cnt) = 1 break } loop } // 弾の移動 repeat bmax // 弾があるあいだ if bf(cnt) = 1{ by(cnt) -bspd // 上に向かって if by(cnt) < -8 { // 画面の外に行ったら bf(cnt) = 0 // 消す } // 当たり判定 : 弾から自機の半径を引く dx = ex - bx(cnt) : dy = ey - by(cnt) // 三平方の定理 dx *= dx : dy *= dy // 斜辺の長さが短かったら当たり if (dx + dy <= 64.0) { bf(cnt) = 0 // 自弾消滅 ef = 0 // *1 敵消滅 ????? } } loop // 敵 : X方向のみ移動 if ef = 1 { ex=ex+epx ey=16 if ex<=0+8 : ex=0+8 : epx=-epx //右に行ったら反転 if ex>=300-8 : ex=300-8 : epx=-epx //左に行ったら反転 } else { ef = 0 // *2 敵消滅 ????? color 255,255,255 // 白文字にする pos 130,150 // 真ん中辺に表示 mes "当たり" } // 自機の描画 color 255,0,0 pos x-8,y-8 mes "▲" // 弾の描画 repeat bmax // 弾が画面上にあるあいだ if bf(cnt) = 1 { // 弾を描画 color 255,255,0 pos bx(cnt)-8,by(cnt)-10 mes "・" } loop // 敵の描画 color 0,255,255 pos ex-8,ey-8 mes "●" // 画面更新 redraw 1 await 5 // メインループ終了 goto *main