问题描述
这是我的python代码,使用pygame。当我按下鼠标时,场景 1 没有切换到场景 2。我来自 Code HS,所以场景切换来自 Tell A Story 项目。我意识到代码与 pygame 的不同。所以我使用了 pygame 文档,看看我能从中学到什么,但仍然什么都没有。请任何人都可以帮助我。谢谢。
import pygame as pg
pg.init()
win = pg.display.set_mode((500,500))
pg.display.set_caption('Scene Switcher')
center_x = 250 - 130
center_y = 250
black= (0,0)
red = (255,0)
blue = (0,255)
def ct(font,size,text,color):
mf = pg.font.Font(font,size)
t = mf.render(text,True,color)
return t
def draw_scene1():
print("This is Scene 1")
txt = ct("SB.ttf",40,"Hello World!",black)
win.blit(txt,(center_x,center_y))
def draw_scene2():
print("This is scene 2")
txt2 = ct("SB.ttf","scene2 ",black)
win.blit(txt2,center_y))
while True:
win.fill(red)
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
quit()
mouses = pg.mouse.get_pressed()
scene_counter = 0
# When this function is called the next scene is drawn.
def draw_next_screen():
global scene_counter
scene_counter += 1
if scene_counter == 1:
draw_scene1()
else:
draw_scene2()
if mouses:
draw_next_screen()
pg.display.update()
解决方法
您必须在应用程序循环之前而不是在应用程序循环之前初始化scene_counter
。
pygame.mouse.get_pressed()
返回一个布尔值列表,代表所有鼠标按钮的状态(True
或 False
)。只要按钮被按住,按钮的状态就是 True
。因此,只要按住鼠标按钮,scene_counter
就会在每一帧中不断递增。
MOUSEBUTTONDOWN
事件在您单击鼠标按钮时发生一次,而 MOUSEBUTTONUP
事件在鼠标按钮被释放时发生一次。当 MOUSEBUTTONDOWN
事件发生时增加计数器:
scene_counter = 0
run = True
while run:
for event in pg.event.get():
if event.type == pg.QUIT:
run = False
elif event.type == pg.MOUSEBUTTONDOWN:
scene_counter += 1
win.fill(red)
if scene_counter == 0:
draw_scene1()
else:
draw_scene2()
pg.display.update()
pg.quit()