見出し画像

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

以下が実行結果です。

実行結果1: 6体の白い敵キャラが出現

当然、プレイヤーが止まっている間は敵キャラも止まります。

実行結果2: 止まります


6体にはそれぞれのパラメータが入っているので、別々の動きをさせることができます。

パラメータは Enemy クラスを継承しているので、UFO達のように位置、移動速度、回転、HPなどが入っています。


それではコードを確認していきましょう。

またⅩ(旧Twitter)でリポストの上、無料でお進みください。

ここから先は

7,669字

この記事が気に入ったらサポートをしてみませんか?