Lesson11 量産型の敵をつくろう
割引あり
量産型ザクⅡが好きです。
ただそういった理由だけで、量産型の敵をつくろうと思います。
前回のように同一の動きをするクローンではなく、それぞれ独立した動きができる敵キャラを複数同時に生成します。基本の動作は同じでも出現場所や軌道、回転方向などをそれぞれに指定することができます。
さっそくつくっていきましょう。
画像データ
ダウンロードしていない方はコチラをどうぞ。
game フォルダ内の image フォルダに格納して(入れといて)ください。
stage1.py
#### stage1.py ####
############################################################################################
#### ライブラリの読み込み ####
#### メインプログラム ####
def main(hp,mp,idx):
########################################################################################
#### 初期設定 ####
white_enemies = pygame.sprite.Group()
########################################################################################
#### プレイヤーのスプライト ####
########################################################################################
#### ザコ敵のスプライト ####
########################################################################################
#### コマンドボタンのスプライト ####
########################################################################################
#### 壁のスプライト ####
########################################################################################
#### ザコ敵のクローンスプライト ####
########################################################################################
#### 同じ敵を複数作る場合 ####
#### エネミーのスプライト ####
# エネミーごとのパラメータ設定
white_enemy_width = 100
white_enemy_height = 100
image3 = pygame.image.load("image/character_fish_ika.png")
image_white = pygame.transform.scale(image3, (white_enemy_width, white_enemy_height))
white_enemy_params = [
{'x': 500, 'y': 10, 'image': image_white, 'image_bomb': image_bomb, 'speed_x': -1, 'speed_y': 1,'rotation_speed':5,'start_angle':0,'atk': 1.0,'enemy_hp':1,'size_multiplier':1.0},
{'x': 500, 'y': 400, 'image': image_white, 'image_bomb': image_bomb, 'speed_x': -1, 'speed_y': 0,'rotation_speed':10,'start_angle':0,'atk': 1.0,'enemy_hp':1,'size_multiplier':1.0},
{'x': 500, 'y': 710, 'image': image_white, 'image_bomb': image_bomb, 'speed_x': -1, 'speed_y': -1,'rotation_speed':-10,'start_angle':0,'atk': 1.0,'enemy_hp':1,'size_multiplier':1.0},
{'x': 920, 'y': 10, 'image': image_white, 'image_bomb': image_bomb, 'speed_x': -2, 'speed_y': 1,'rotation_speed':5,'start_angle':0,'atk': 1.0,'enemy_hp':1,'size_multiplier':1.0},
{'x': 920, 'y': 300, 'image': image_white, 'image_bomb': image_bomb, 'speed_x': -2, 'speed_y': 0,'rotation_speed':5,'start_angle':0,'atk': 1.0,'enemy_hp':1,'size_multiplier':1.0},
{'x': 920, 'y': 710, 'image': image_white, 'image_bomb': image_bomb, 'speed_x': -2, 'speed_y': -1,'rotation_speed':5,'start_angle':45,'atk': 1.0,'enemy_hp':1,'size_multiplier':1.0},
]
for params in white_enemy_params:
white_enemy = Enemy(**params)
white_enemies.add(white_enemy)
def white(hp):
for white_enemy in white_enemies:
white_enemy.update(player_turn)
white_enemy.draw(screen)
#white_enemy.draw_path(screen)
attack_enemy = white_enemy
if not player_turn:
hp =player.take_damage(hp,damage_base,attack_enemy)
return hp
########################################################################################
#### ゲームループ ####
while True:
#### ステージ共通の要素 ####
command_button()
square_structure()
#### ステージごとに変える要素 ####
hp = white(hp)
hp = single_enemy(hp)
hp = clone(hp,frame_count,clone_enemies)
first_player()
stage1.py に追記できたら実行しましょう。
>python main.py
以下が実行結果です。
当然、プレイヤーが止まっている間は敵キャラも止まります。
6体にはそれぞれのパラメータが入っているので、別々の動きをさせることができます。
パラメータは Enemy クラスを継承しているので、UFO達のように位置、移動速度、回転、HPなどが入っています。
それではコードを確認していきましょう。
またⅩ(旧Twitter)でリポストの上、無料でお進みください。
ここから先は
7,669字
この記事が気に入ったらチップで応援してみませんか?