敵を自動生成しお匟を発射させるようにする【Python】

今回は、敵を自動生成させお䞀定の条件になったら敵も匟を発射するようにしおいきたす。

䞉角関数を䜿うので、ちょっずややこしくなりたすが、敵を奜きな方向に移動させるためには必芁な知識なので、マスタヌしおおきたい所です。

スポンサヌリンク

敵を自動生成させお匟を発射させるようにする

たずは、敵甚の画像ず敵が発射する匟の画像2皮類を甚意しおおきたしょう。

あらゆる凊理を足しおきおいるので、埐々に゜ヌスコヌドが長くなっおきたしたね。

ずりあえず、実行するずどうなるのか先に動画を茉せおおきたす。

私の堎合は、パンプキンを敵に芋立おお、赀い匟を攻撃手段ずしおいたす。

それでは、敵の行動に関する凊理を解説しおいきたす。

たずは、ランダムず䞉角関数を䜿甚するので「math」ず「random」モゞュヌルをむンポヌトしたす。

プレむダヌの時ず同様に、敵の最倧数や座暙リストを䜜りたす。たた、プレむダヌの時ず違うのは角床を管理するリストを甚意しおいる所や、敵の皮類・速床リストを䜜った郚分です。この蟺はゲヌムの難易床に関わる郚分ですね。

敵は、30フレヌムに぀き1䜓出珟させるようにしたす。この仕様だず1秒に1䜓っお事ですね。

set_enemy()関数で敵を出珟させる準備を行いたす。座暙や角床、スピヌドなどをここでセットするわけですね。第4匕数が敵の皮類になるので、リストを参考に添え字を指定したす。

敵のデヌタをセットしたら、breakで凊理を抜けお新しい敵デヌタをセットするずきの為に、ebull_nの倀を1増やしおおきたす。

move_enemy()関数が敵の動きを管理する関数になりたす。ebull_fがTrueになるず敵が存圚するずいう事になるので、移動ず描画を行いたす。

移動方法は、䞉角関数sin()ずcos()を䜿う事で、XずYそれぞれの移動量を求めるこずが出来たす。この結果により、座暙を倉化させお敵の移動を実珟したす。このプログラムでは90床を指定しおいるのでプレむダヌに向かっおくるようになりたす。

最終的に、瞊暪いずれかの画面倖に消えたら敵を削陀するようにしたす。

匟の発射タむミングは、敵のY座暙が100を超えたらずしおいたす。今回のプログラムは、敵だけじゃなくお匟に関しおもset_enemy()関数を䜿っお準備するようにしたす。

pygame.transform.rotozoomで指定した画像の回転角ず拡倧率を決めたす。パンプキンの画像を「-180」にしお、拡倧率はそのたた「1.0」にしおいたす。

次の行screen.blitで描画したすが、「ebull_x,ebull_y」の倀を䞭心にしお描画したいので、先ほど䜜成した画像の幅ず高さを半分にした倀を匕いおいたす。

割ず長くなっおしたいたしたが、着実にシュヌティングゲヌムっぜくなっおきたした。

次回は、プレむダヌず敵の圓たり刀定に぀いお実装しおいきたす。

著者プロフィヌル
うんくん

IT系に特化した蚘事がメむンです。Unity倚め。
Udemy講垫もやっおいたす。よろしくお願いしたす。

※Amazonのア゜シ゚むトずしお、圓メディアは適栌販売により収入を埗おいたす。

うんくんをフォロヌする
Python
スポンサヌリンク
シェアする
うんくんをフォロヌする