Python pygame,精灵和精灵组

 

Python pygame,精灵和精灵组_第1张图片


Python pygame,精灵和精灵组_第2张图片


Python pygame,精灵和精灵组_第3张图片

plane_sprites.py(模块,定义派生精灵子类,继承pygame.sprite.Sprite):

import pygame

# 自定义的派生精灵子类,继承pygame.sprite.Sprite
class GameSprite(pygame.sprite.Sprite):
    """游戏精灵基类"""
    
    def __init__(self, image_path, speed=1):
        
        # 调用父类的初始化方法
        super().__init__()
        
        # 加载图像
        self.image = pygame.image.load(image_path)
        # 设置尺寸; get_rect()可以获取图像的原始大小
        self.rect = self.image.get_rect()
        # 记录速度
        self.speed = speed

    def update(self, *args):
        
        # 默认在垂直方向移动
        self.rect.y += self.speed
        

main.py(主程序中,通过精灵和精灵组完成游戏动画):

import pygame
from plane_sprites import *


# 游戏的初始化
pygame.init()

# 创建游戏主窗口 480 * 700
screen = pygame.display.set_mode((480, 700))

# 创建时钟对象 (可以控制游戏循环频率)
clock = pygame.time.Clock()


# 创建敌机的精灵
enemy = GameSprite("./images/enemy1.png")
enemy1 = GameSprite("./images/enemy1.png", 2)
# 创建敌机的精灵组
enemy_group = pygame.sprite.Group(enemy, enemy1)


# 游戏循环 -> 意味着游戏的正式开始!
while True:

    # 通过时钟对象指定循环频率
    clock.tick(60)  # 每秒循环60次

    # 监听用户事件
    for event in pygame.event.get():
        # 判断用户是否点击了关闭按钮
        if event.type == pygame.QUIT:
            print("游戏退出...")
            pygame.quit()  # 卸载所有pygame模块
            exit()  # 直接终止当前正在执行的Python程序



    # 让精灵组调用两个方法
    # update -- 让组中的所有精灵更新位置
    enemy_group.update()

    # draw -- 在screen上绘制组中所有的精灵
    enemy_group.draw(screen)


    pygame.display.update()  # 更新屏幕显示

pygame.quit()

 

 

你可能感兴趣的:(Python+)