python - 如何显示屏幕并使其留在pygame中?
问题描述
我正在制作一部视觉小说作为我的项目。我决定不使用 renPy,因为它会缩短代码太多。目前,我正在尝试在用户单击下一个按钮时显示下一行文本。但是,该按钮不起作用。没有错误,但 python 不会检测到我的点击。
def main_game():
running = True
while running:
screen.fill(black)
s = pygame.Surface((1280, 200))
s.set_alpha(50)
s.fill((white))
screen.blit(s, (0,520))
draw_text("", font2, purple, screen, 2, 522)
draw_text("Before beginning your journey, please give yourself a name.", font3, white, screen, 15, 580)
mx, my = pygame.mouse.get_pos()
button_next = pygame.Rect(1117, 650, 150, 50)
if button_next.collidepoint((mx, my)):
if click:
next_story()
pygame.draw.rect(screen, (white), button_next)
font = pygame.font.Font("PixelDigivolve-mOm9.ttf", 30)
text_next = font.render("NEXT", 1, (black))
screen.blit(text_next, (1157, 655))
click = False
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
click = True
pygame.display.update()
mainClock.tick(60)
这是下一个屏幕的代码
def next_story():
screen.fill(black)
s = pygame.Surface((1280, 200))
s.set_alpha(50)
s.fill((white))
screen.blit(s, (0,520))
draw_text("", font2, purple, screen, 2, 522)
draw_text("What shall you name yourself?", font3, white, screen, 15, 580)
pygame.display.update()
mainClock.tick(60)
解决方案
从提供的代码:在鼠标单击click
时变为,但您每次都执行它,因此它立即变为下一个周期。删除这行代码并测试它。如果您需要重置此标志,请将其放入另一个具有新逻辑的标志中。也从:True
click = False
False
if
next_story()
pygame.display.update()
mainClock.tick(60)
你只需要一次,在主循环中。希望这能解决问题。
推荐阅读
- html - 根据谷歌表格单元格中的值创建一个水平条
- html - 使用 CSS 使相邻的 div 占据所有垂直空间
- php - Sql - 重复的变量输入到 Mysql
- python - 为什么在使用应用 lambda 时出现错误“浮动”对象不可迭代
- java - Maven 的 JAVA_HOME 环境变量分号问题
- ios - UITableViewCell 动画被击中或错过。有时表格数据/单元格会在没有动画的情况下弹出
- python - 如何在rpyc回调中传递参数pickled而不是netref
- c# - ASP.NET 核心 5.0。脚手架控制器变量名称。C#
- oracle - 如何在 Oracle 中获取本周的数据
- angular - 如何防止在 Angular 2+ 上构建字体