Pygame游戏实战十:弹幕射击

介绍模块

本游戏使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。通过Pygame制作一个类似与之前写的飞机大战很类似,但是又有不同,其中增加了敌人能够发射子弹的能力。

最小开发框架

详情请看此文章:
Pygame游戏模块介绍二:最小开发框架代码_pygame最小开发框架_牧子川的博客-CSDN博客

Pygame和sys模块

import pygame # 制作游戏时要使用的模块
import sys # python的标准库,对内部各功能模块进行初始化创建,系统模块

random模块

需要在屏幕上随机生成位置

from random import randint

详情请看此文章:Pygame游戏模块介绍一:random模块简介_random 范围_牧子川的博客-CSDN博客

相关功能  

【童年游戏】弹幕射击

初始化角色

定义主角和敌人

def draw_player():
    pygame.draw.rect(screen, WHITE, (player_pos[0], player_pos[1], player_size, player_size))

def draw_enemies():
    for enemy in enemies:
        pygame.draw.rect(screen, RED, (enemy[0], enemy[1], enemy_size, enemy_size))

初始化子弹

定义主角子弹和敌人子弹

def draw_bullets():
    for bullet in bullets:
        pygame.draw.rect(screen, WHITE, (bullet[0], bullet[1], bullet_size, bullet_size))

def draw_enemy_bullets():
    for enemy_bullet in enemy_bullets:
        pygame.draw.rect(screen, RED, (enemy_bullet[0], enemy_bullet[1], enemy_bullet_size, enemy_bullet_size))

移动

敌人移动以及子弹发射

def move_enemies():
    for enemy in enemies:
        enemy[1] += enemy_speed

def move_bullets():
    for bullet in bullets:
        bullet[1] -= bullet_speed

def move_enemy_bullets():
    for enemy_bullet in enemy_bullets:
        enemy_bullet[1] += enemy_bullet_speed

子弹发射和敌人生成

    # 生成新的敌人
    if random.randint(1, 100) < 10:  # 控制敌人生成的频率
        new_enemy = [random.randint(0, WIDTH - enemy_size), 0]
        enemies.append(new_enemy)

    # 敌人发射子弹
    for enemy in enemies:
        if random.randint(1, 100) < 5:  # 控制敌人发射子弹的概率
            new_enemy_bullet = [enemy[0] + enemy_size // 2 - enemy_bullet_size // 2, enemy[1] + enemy_size]
            enemy_bullets.append(new_enemy_bullet)

图片界面

扩展可添加功能

1.增加更加复杂的关卡

2.增加时间限制

3.增加音效

4.改变角色的状态

源码获取

PyGame/弹幕射击 at main · mzc421/PyGame (github.com)

 欢迎关注我的公众号:@AI算法与电子竞赛    

​​​

硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!

猜你喜欢

转载自blog.csdn.net/qq_48764574/article/details/134864881