• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Python基础(综合演练:飞机大战)

互联网 diligentman 1天前 4次浏览

plane_sprites.py 文件代码:
import pygame

屏幕大小的常量

SCREEN_RECT = pygame.Rect(0, 0, 480, 700)
class GameSprite(pygame.sprite.Sprite):

"""游戏主类——继承自pygame.sprite.Sprite"""
def __init__(self, image_name, speed=1):
    # 调用父类的初始化方法
    super().__init__()
    # 定义属性
    self.image = pygame.image.load(image_name)
    self.rect = self.image.get_rect()
    self.speed = speed
def update(self):
    # 在屏幕的垂直方向x向下移动
    self.rect.y += self.speed

class BackGround(GameSprite):

"""背景类,继承自GameSprite"""
def __init__(self, is_alt=False):
    # 调用父类方法创建精灵对象
    super().__init__("./游戏素材/background.png")
    # 判断是否为背景图像2,若是则改变初始坐标位置
    if is_alt:
        self.rect.y = -SCREEN_RECT.height
def update(self):
    # 调用父类方法——向下移动
    super().update()
    if self.rect.y >= SCREEN_RECT.height:
        self.rect.y = -SCREEN_RECT.height

plane_main.py 文件代码:
from plane_sprites import *
class PlaneGame(object):

"""主游戏类"""
def __init__(self):
    print("游戏正在初始化...")
    # 创建游戏主窗口
    self.screen = pygame.display.set_mode(SCREEN_RECT.size)
    # 创建游戏时钟
    self.clock = pygame.time.Clock()
    # 调用私有方法跟单网http://www.gendan5.com/,创建精灵和精灵组
    self.__create_sprites()
def __create_sprites(self):
    # 创建背景精灵
    background1 = BackGround()
    background2 = BackGround(is_alt=True)
    # 创建背景精灵组
    self.background_group = pygame.sprite.Group(background1, background2)
def start_game(self):
    """启动游戏"""
    # 游戏主循环
    while True:
        # 设置刷新帧率为60
        self.clock.tick(120)
        # 事件监听
        self.__event_handler()
        # 碰撞检测
        self.__check_collide()
        # 位置更新
        self.__update_sprites()
        # 游戏主窗口刷新显示
        pygame.display.update()
def __check_collide(self):
    """碰撞检测"""
    pass
def __event_handler(self):
    """事件监听"""
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            PlaneGame.__game_over()
def __update_sprites(self):
    """位置更新"""
    self.background_group.update()
    self.background_group.draw(self.screen)
@staticmethod
def __game_over():
    # 结束游戏
    print("游戏结束...")
    pygame.quit()
    exit()

if name == ‘__main__’:

# 初始化pygame
pygame.init()
# 创建游戏对象
game = PlaneGame()
# 启动游戏
game.start_game()

程序员灯塔
转载请注明原文链接:Python基础(综合演练:飞机大战)
喜欢 (0)