мой код pygame зависает, когда я запускаю свой код - PullRequest
3 голосов
/ 09 января 2020

всякий раз, когда я запускаю код, вся вещь зависает, и я не уверен, почему, он должен просто отображать все (что он делает), но затем, когда я нажимаю на мою мышь, он должен печатать "yeet"

я не знаю, имеет ли это отношение к тому времени, пока l oop или нет

я удалил его, но тогда он не обновляет игру

вот весь код

import pygame
import time

pygame.init()
screen = pygame.display.set_mode((1200, 800))
done = False
pygame.font.get_fonts()
fourty = pygame.font.SysFont('Comic Sans MS', 40)
ten = pygame.font.SysFont('Comic Sans MS', 10)
twenty = pygame.font.SysFont('Comic Sans MS', 20)
thirty = pygame.font.SysFont('Comic Sans MS', 30)
sixty = pygame.font.SysFont('Comic Sans MS', 60)
fifty = pygame.font.SysFont('Comic Sans MS', 50)
clock = pygame.time.Clock()
WHITE = pygame.Color("#ffffff")
BLACK = pygame.Color("#000000")
RED = pygame.Color("#e6000d")
BLUE = pygame.Color("#0b5dff")
YELLOW = pygame.Color("#d8fb06")
GREEN = pygame.Color("#00e600")
screen.fill(WHITE)
play=bool()
play = False


def refresh():
        pygame.display.update()
        pygame.display.flip()
        clock.tick(60)

def main():
        global play
        hangman = fourty.render("WELCOME TO HANGMAN", True, (BLACK))
        screen.blit(hangman, [360, 200])                
        go = thirty.render("CLICK ANYWHERE TO START", True, (BLACK))
        screen.blit(go, [551,445])
        clock.tick(100)
        while True:   
                refresh()
                if play == True:
                        play()        


def play():
        print ("yeet")



main()




while not done:
        for event in pygame.event.get():
                if event.type == pygame.QUIT:
                        done = True
                elif event.type == pygame.MOUSEBUTTONDOWN:
                        if play == False:
                                play == True
                                clock.tick(60)


        pygame.display.flip()

1 Ответ

1 голос
/ 09 января 2020

Существует бесконечный l oop, без обработки событий в main. Тебе не нужен этот l oop. Используйте основное приложение l oop. Кроме того, play - это имя функции, поэтому имя переменной, в которой указано состояние игры, должно иметь другое имя (например, playgame):

def refresh():
    pygame.display.flip()
    clock.tick(60)

def main():
    hangman = fourty.render("WELCOME TO HANGMAN", True, (BLACK))
    screen.blit(hangman, [360, 200])                
    go = thirty.render("CLICK ANYWHERE TO START", True, (BLACK))
    screen.blit(go, [551,445])

def play():
    print ("yeet")

playgame = False
done = False
while not done:

    # handle events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        elif event.type == pygame.MOUSEBUTTONDOWN:
            if playgame == False:
                playgame = True

    # clear display
    screen.fill(WHITE)

    # draw scene dependent on game state `playgame` 
    if playgame:
        play()
    else:
        main()

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