forked from zhiyuan/Project1
83 lines
3.0 KiB
Python
83 lines
3.0 KiB
Python
import os
|
|
|
|
import pygame
|
|
|
|
from src.config.game_config import data_path, GameConfig
|
|
from src.scenes.base_scene import BaseScene
|
|
|
|
|
|
class GameScene(BaseScene):
|
|
name = "GameScene"
|
|
def __init__(self, screen):
|
|
super().__init__(screen)
|
|
# 初始化音乐
|
|
pygame.mixer.init()
|
|
# 播放并循环音乐
|
|
pygame.mixer_music.load(os.path.join(data_path(), "vespidaze-upbeat-rpg-battle-460971.mp3"))
|
|
pygame.mixer_music.play(-1)
|
|
|
|
self.back_status = False
|
|
|
|
# 状态值
|
|
self.dirty_x = 400
|
|
self.dirty_y = 300
|
|
|
|
self.Left_status = False
|
|
self.right_status = False
|
|
self.up_status = False
|
|
self.down_status = False
|
|
|
|
# 颜色
|
|
self.WHITE = (255, 255, 255)
|
|
self.RED = (255, 0, 0)
|
|
self.BLUE = (0, 0, 255)
|
|
|
|
def update(self, dt=0):
|
|
if self.back_status:
|
|
pygame.mixer_music.stop()
|
|
self.switch_to_scene("MainMenuScene")
|
|
if self.Left_status and self.dirty_x >= 0:
|
|
self.dirty_x -= 1
|
|
if self.right_status and self.dirty_x <= GameConfig.window_x - 20:
|
|
self.dirty_x += 1
|
|
if self.up_status and self.dirty_y >= 0:
|
|
self.dirty_y -= 1
|
|
if self.down_status and self.dirty_y <= GameConfig.window_y - 30:
|
|
self.dirty_y += 1
|
|
# 填充窗口颜色
|
|
self.screen.fill((255, 255, 255))
|
|
|
|
# 绘制矩形(移动体和固定体)
|
|
dirty = pygame.draw.rect(self.screen, self.BLUE, [self.dirty_x, self.dirty_y, 20, 30])
|
|
enemy = pygame.draw.rect(self.screen, self.RED, [40, 60, 10, 10])
|
|
|
|
# 碰撞监测
|
|
if dirty.colliderect(enemy):
|
|
print("die")
|
|
self.dirty_x = 400
|
|
self.dirty_y = 300
|
|
dirty = pygame.draw.rect(self.screen, self.BLUE, [self.dirty_x, self.dirty_y, 20, 30])
|
|
|
|
def handle_event(self, event):
|
|
# 按下按键
|
|
if event.type == pygame.KEYDOWN:
|
|
if event.key == pygame.K_ESCAPE:
|
|
self.back_status = True
|
|
elif event.key == pygame.K_LEFT or event.key == pygame.K_a:
|
|
self.Left_status = True
|
|
elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
|
|
self.right_status = True
|
|
elif event.key == pygame.K_UP or event.key == pygame.K_w:
|
|
self.up_status = True
|
|
elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
|
|
self.down_status = True
|
|
# 松开按键
|
|
elif event.type == pygame.KEYUP:
|
|
if event.key == pygame.K_LEFT or event.key == pygame.K_a:
|
|
self.Left_status = False
|
|
elif event.key == pygame.K_RIGHT or event.key == pygame.K_d:
|
|
self.right_status = False
|
|
elif event.key == pygame.K_UP or event.key == pygame.K_w:
|
|
self.up_status = False
|
|
elif event.key == pygame.K_DOWN or event.key == pygame.K_s:
|
|
self.down_status = False |