单向场景切换版本 #1
No files matched your search
@@ -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)
|
||||||
@@ -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])
|
||||||
@@ -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:
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user