"""
游戏引擎:
"""
import pygame, model, random
# 自定义一个事件
ENEMY_CREATE = pygame.USEREVENT
pygame.time.set_timer(ENEMY_CREATE, 2000)
class GameEngine:
"""
游戏引擎"""
def __init__(self):
# 初始化函数:控制界面初始化操作
pygame.init()
self.screen = pygame.display.set_mode(model.SCREEN_SIZE)
self.clock = pygame.time.Clock()
self.enemys = pygame.sprite.Group()
self.resources = pygame.sprite.Group()
def start(self):
self.create_scene()
self.check_event()
def create_scene(self):
# 创建游戏场景
self.bg1 = model.BackgroundSprite("./images/bg3_0.jpg")
self.bg2 = model.BackgroundSprite("./images/bg3_0.jpg", next=True)
self.hero = model.HeroSprite("./images/plane.png")
self.resources.add(self.bg1, self.bg2, self.hero)
def update_scene(self):
# 背景和英雄飞机精灵组
self.resources.draw(self.screen)
# 敌机精灵组
self.enemys.draw(self.screen)
# 子弹精灵组
self.hero.bullets.draw(self.screen)
# 更新屏幕
self.resources.update()
self.enemys.update()
self.hero.bullets.update()
def check_collide(self):
# 碰撞检测
pygame.sprite.groupcollide(self.hero.bullets, self.enemys, True, True)
e = pygame.sprite.spritecollide(self.hero, self.enemys, True)
if len(e) >0:
self.hero.kill()
pygame.quit()
exit()
def check_event(self):
# 事件监听
self.clock.tick(24)
self.event_list = pygame.event.get()
key_down = pygame.key.get_pressed()
if len(self.event_list) >0:
for eventin self.event_list:
if event.type == pygame.QUIT:
pygame.quit()
exit()
if event.type == ENEMY_CREATE:
# 创建敌方飞机
enemy = model.EnemySprite()
self.enemys.add(enemy)
if key_down[pygame.K_LEFT]:
print("向左移动。。。。。")
self.hero.rect.x -=5
if key_down[pygame.K_RIGHT]:
print("向右移动。。。。。")
self.hero.rect.x +=5
if key_down[pygame.K_UP]:
print("向上移动。。。。。")
self.hero.rect.y -=5
if key_down[pygame.K_DOWN]:
print("向上移动。。。。。")
self.hero.rect.y +=5
if key_down[pygame.K_SPACE]:
print("空格键:开火。。。")
self.hero.fire()
pygame.display.update()
self.check_collide()
self.update_scene()
self.check_event()
# pygame.quit()
res = GameEngine()
res.start()