关于python:Python基础综合演练飞机大战

33次阅读

共计 1715 个字符,预计需要花费 5 分钟才能阅读完成。

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()

正文完
 0