forked from zhiyuan/Project1
修复每帧时间在场景中更新造成的雨滴状态没有随机分布的问题
This commit is contained in:
1 parent
b864a5e82e
commit
75a8525985
5 files changed
+19
-20
No files matched your search
@@ -1,15 +1,14 @@
|
||||
import pygame
|
||||
|
||||
class BaseScene:
|
||||
def __init__(self, screen: pygame.Surface, clock: pygame.time.Clock):
|
||||
def __init__(self, screen: pygame.Surface):
|
||||
"""
|
||||
初始化场景,接收并保存画布、计时器
|
||||
"""
|
||||
self.screen = screen
|
||||
self.clock = clock
|
||||
self.next_scene = None
|
||||
|
||||
def update(self):
|
||||
def update(self, dt=0):
|
||||
"""
|
||||
场景的每帧更新逻辑
|
||||
"""
|
||||
|
||||
@@ -4,10 +4,10 @@ from src.scenes.base_scene import BaseScene
|
||||
class EmptyScene(BaseScene):
|
||||
name = "EmptyScene" # 场景名称
|
||||
|
||||
def __init__(self, screen, clock):
|
||||
super().__init__(screen, clock)
|
||||
def __init__(self, screen):
|
||||
super().__init__(screen)
|
||||
|
||||
def update(self):
|
||||
def update(self, dt=0):
|
||||
"""
|
||||
场景每帧更新逻辑
|
||||
"""
|
||||
|
||||
@@ -8,8 +8,8 @@ from src.scenes.base_scene import BaseScene
|
||||
|
||||
class GameScene(BaseScene):
|
||||
name = "GameScene"
|
||||
def __init__(self, screen, clock):
|
||||
super().__init__(screen, clock)
|
||||
def __init__(self, screen):
|
||||
super().__init__(screen)
|
||||
# 初始化音乐
|
||||
pygame.mixer.init()
|
||||
# 播放并循环音乐
|
||||
@@ -32,7 +32,7 @@ class GameScene(BaseScene):
|
||||
self.RED = (255, 0, 0)
|
||||
self.BLUE = (0, 0, 255)
|
||||
|
||||
def update(self):
|
||||
def update(self, dt=0):
|
||||
if self.back_status:
|
||||
self.switch_to_scene("MainMenuScene")
|
||||
if self.Left_status and self.dirty_x >= 0:
|
||||
|
||||
@@ -12,11 +12,11 @@ class MainMenuScene(BaseScene):
|
||||
"""
|
||||
主菜单场景,显示提示信息,展示雨天特效
|
||||
"""
|
||||
def __init__(self, screen, clock):
|
||||
def __init__(self, screen):
|
||||
"""
|
||||
初始化函数,初始化按钮按下状态、雨滴列表
|
||||
"""
|
||||
super().__init__(screen, clock)
|
||||
super().__init__(screen)
|
||||
self.button_status = False
|
||||
self.mouse_status = None
|
||||
self.mouse_last_status = None
|
||||
@@ -44,7 +44,7 @@ class MainMenuScene(BaseScene):
|
||||
# 鼠标位置
|
||||
self.mouse_pos = (0, 0)
|
||||
|
||||
def update(self):
|
||||
def update(self, dt=0):
|
||||
# 按键按下则切换场景
|
||||
if self.button_status:
|
||||
self.switch_to_scene("GameScene")
|
||||
@@ -62,7 +62,7 @@ class MainMenuScene(BaseScene):
|
||||
self.handle_keyboard()
|
||||
|
||||
# 雨滴坠落
|
||||
self.rain_fall()
|
||||
self.rain_fall(dt)
|
||||
|
||||
# 更新鼠标位置
|
||||
self.mouse_pos = pygame.mouse.get_pos()
|
||||
@@ -216,12 +216,10 @@ class MainMenuScene(BaseScene):
|
||||
self.__rain_list_append(status)
|
||||
|
||||
|
||||
def rain_fall(self):
|
||||
def rain_fall(self, dt):
|
||||
"""
|
||||
展示雨滴画面
|
||||
"""
|
||||
dt = self.clock.tick()
|
||||
|
||||
for rain in self.rain_list:
|
||||
|
||||
# 当状态在区间1时绘制雨滴线条
|
||||
|
||||
Reference in new issue
Block a user