实现场景切换

This commit is contained in:
chicrobot committed 2026-07-26 02:39:05 +08:00
1 parent 15f734b1d5
commit 7202813cd3
4 files changed
+20 -2

No files matched your search

+5 -1
View File
@@ -3,9 +3,13 @@ import pygame
class BaseScene: class BaseScene:
def __init__(self, screen: pygame.Surface): def __init__(self, screen: pygame.Surface):
self.screen = screen self.screen = screen
self.next_scene = None
def update(self): def update(self):
pass pass
def handle_event(self, events): def handle_event(self, events):
pass pass
def switch_to_scene(self, scene_class):
self.next_scene = scene_class(self.screen)
+9
View File
@@ -0,0 +1,9 @@
import pygame
from src.config.color import Color
from src.scenes.base_scene import BaseScene
class GameScene(BaseScene):
def update(self):
pygame.draw.rect(self.screen, Color.a, [10,20,30,40])
+2 -1
View File
@@ -1,6 +1,7 @@
import pygame import pygame
from src.config.color import Color from src.config.color import Color
from src.scenes.base_scene import BaseScene from src.scenes.base_scene import BaseScene
from src.scenes.game_scene import GameScene
class MainMenuScene(BaseScene): class MainMenuScene(BaseScene):
@@ -11,7 +12,7 @@ class MainMenuScene(BaseScene):
def update(self): def update(self):
pygame.draw.rect(self.screen, Color.white, [10,20,30,40]) pygame.draw.rect(self.screen, Color.white, [10,20,30,40])
if self.button_status: if self.button_status:
pygame.draw.rect(self.screen, Color.white, [50,20,30,40]) self.switch_to_scene(GameScene)
def handle_event(self, event): def handle_event(self, event):
if event.type == pygame.KEYDOWN: if event.type == pygame.KEYDOWN:
+4
View File
@@ -31,6 +31,10 @@ class Game:
self.running = False self.running = False
self.scene.handle_event(event) # 当前场景接收事件 self.scene.handle_event(event) # 当前场景接收事件
# 检查是否切换场景
if self.scene.next_scene is not None:
self.scene = self.scene.next_scene
# 清屏 # 清屏
self.screen.fill(GameConfig.bg_color) self.screen.fill(GameConfig.bg_color)