"""
游戲引擎:
"""
import pygame, model, random
# 自定義一個事件
ENEMY_CREATE = pygame.USEREVENT
pygame.time.set_timer(ENEMY_CREATE, 2000)
class GameEngine:
"""
? ? 游戲引擎"""
? ? def __init__(self):
# 初始化函數(shù):控制界面初始化操作
? ? ? ? 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):
# 創(chuàng)建游戲場景
? ? ? ? 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):
# 背景和英雄飛機(jī)精靈組
? ? ? ? self.resources.draw(self.screen)
# 敵機(jī)精靈組
? ? ? ? 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):
# 事件監(jiān)聽
? ? ? ? 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:
# 創(chuàng)建敵方飛機(jī)
? ? ? ? ? ? ? ? ? ? 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()