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