|
|
|
@ -0,0 +1,57 @@
|
|
|
|
|
import pygame, sys
|
|
|
|
|
from settings import *
|
|
|
|
|
from level import Level
|
|
|
|
|
|
|
|
|
|
class Game:
|
|
|
|
|
def __init__(self):
|
|
|
|
|
|
|
|
|
|
# 初始化 Pygame 库
|
|
|
|
|
pygame.init()
|
|
|
|
|
# 设置游戏窗口尺寸
|
|
|
|
|
self.screen = pygame.display.set_mode((WIDTH,HEIGTH))
|
|
|
|
|
# 设置游戏窗口标题
|
|
|
|
|
pygame.display.set_caption('Zelda')
|
|
|
|
|
# 创建时钟对象,用于控制游戏帧率
|
|
|
|
|
self.clock = pygame.time.Clock()
|
|
|
|
|
# 创建游戏关卡对象
|
|
|
|
|
|
|
|
|
|
self.level = Level()
|
|
|
|
|
# 声音设置
|
|
|
|
|
# 加载背景音乐文件
|
|
|
|
|
main_sound = pygame.mixer.Sound('../audio/main.ogg')
|
|
|
|
|
# 设置背景音乐音量
|
|
|
|
|
main_sound.set_volume(0.5)
|
|
|
|
|
# 播放背景音乐,循环播放(loops=-1 表示无限循环)
|
|
|
|
|
main_sound.play(loops = -1)
|
|
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
|
# 进入游戏主循环,持续运行直到退出。
|
|
|
|
|
while True:
|
|
|
|
|
# 遍历所有的事件。
|
|
|
|
|
for event in pygame.event.get():
|
|
|
|
|
# 如果事件类型是退出事件,即关闭窗口。
|
|
|
|
|
if event.type == pygame.QUIT:
|
|
|
|
|
# 退出 Pygame 应用程序
|
|
|
|
|
pygame.quit()
|
|
|
|
|
# 退出 Python 解释器
|
|
|
|
|
sys.exit()
|
|
|
|
|
# 如果有键盘按下事件。
|
|
|
|
|
if event.type == pygame.KEYDOWN:
|
|
|
|
|
# 按下 'm' 键切换游戏菜单的显示
|
|
|
|
|
if event.key == pygame.K_m:
|
|
|
|
|
# 切换游戏菜单的显示状态。
|
|
|
|
|
self.level.toggle_menu()
|
|
|
|
|
# 用水的颜色填充游戏窗口背景
|
|
|
|
|
self.screen.fill(WATER_COLOR)
|
|
|
|
|
# 运行游戏关卡的主循环
|
|
|
|
|
self.level.run()
|
|
|
|
|
# 更新屏幕显示
|
|
|
|
|
pygame.display.update()
|
|
|
|
|
# 控制游戏帧率为 FPS
|
|
|
|
|
self.clock.tick(FPS)
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
# 创建 Game 类的实例 game
|
|
|
|
|
game = Game()
|
|
|
|
|
# 调用 game 对象的 run 方法,启动游戏主循环
|
|
|
|
|
game.run()
|