Как отобразить экран и заставить его оставаться в pygame? - PullRequest
0 голосов
/ 07 мая 2020

Я делаю визуальный роман как свой проект. Я решил не использовать 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)

1 Ответ

0 голосов
/ 07 мая 2020

Из предоставленного кода: click становится True при щелчке мышью, но у вас есть click = False, который выполняется каждый раз, поэтому в следующем цикле он сразу становится False. Удалите эту строку кода и проверьте ее. И если вам нужно сбросить этот флаг, поместите его в другой if с новым logi c. Также удалите из next_story():

pygame.display.update()
    mainClock.tick(60)

вам нужно только один раз, в основном l oop. Надеюсь, это решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...