Python Pygame窗口在几秒钟后没有响应

Python Pygame窗口在几秒钟后没有响应,python,pygame,Python,Pygame,以下代码使窗口在启动时不响应。。我想做一个刽子手游戏,我完成了逻辑,我只是想让窗口弹出,但它没有反应。另外,当我运行程序时,当我输入字母并输入另一个字母时,它会删除前一个字母a,并用下划线写入新字母。我怎样才能使它保留上一个字母并用新字母打印 import pygame pygame.init() running = True window_width = 600 window_height = 600 window = pygame.display.set_mode((window_wi

以下代码使窗口在启动时不响应。。我想做一个刽子手游戏,我完成了逻辑,我只是想让窗口弹出,但它没有反应。另外,当我运行程序时,当我输入字母并输入另一个字母时,它会删除前一个字母a,并用下划线写入新字母。我怎样才能使它保留上一个字母并用新字母打印

import pygame
pygame.init()

running  = True

window_width = 600
window_height = 600
window = pygame.display.set_mode((window_width, window_height))

clock = pygame.time.Clock()

word = "something"
while running:
    dt = clock.tick(60)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        


    answer = ""
    guessed = []

    guessed.append(input("write your letter here -> "))

    for i in word:
        
        if i in guessed:
            answer += i + " "
        else:
            answer += "_ "

    print(answer)
    answer = ""
pygame.quit()
你的问题在这里:

while running:
    dt = clock.tick(60)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        


    answer = ""
    guessed = [] # <-----ISSUE

您还需要在每次while循环经过时更新窗口。我在上面提供的代码中添加了它。

您应该创建另一个字符串变量,该变量具有与单词相同数量的字母,但不是字母,而是虚线。您可以使用以下方法执行此操作:

    guessedWord = []
    for letter in word:
        guessedWord.append("-")
然后,当用户猜测某个内容时,可以用guessedWord变量代替单词。所以基本上你把猜到的字母和单词中对应的字母进行比较,如果它们是相同的,你就用猜到的字母替换u。顺便说一句,你不必把猜到的字母放在一个列表中,除非你以后想使用它们

    i = -1
    for letter in word:
        i += 1
        if letter == guessedLetter:
            guessedWord[i] = guessedLetter
    print(guessedLetter)

您的游戏没有响应,因为您要求在应用程序循环中添加一个<代码>输入停止应用程序循环并等待输入确认。如果停止应用程序循环,窗口将停止响应。使用
KEYDOWN
事件在PyGame中获取输入(请参阅):

pygame.event.get()中事件的
:
# [...]
如果event.type==pygame.KEYDOWN:
猜.追加(event.unicode)
猜测的必须在应用程序循环之前初始化。不要在循环中重置它:

导入pygame
pygame.init()
运行=真
窗宽=600
窗户高度=600
window=pygame.display.set_模式((窗口宽度、窗口高度))
clock=pygame.time.clock()
word=“某物”
猜测=[]
答案=”“
对于word中的c:
答案+=c+“如果c在其他地方猜到”
打印(答案)
运行时:
dt=时钟滴答声(60)
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
如果event.type==pygame.KEYDOWN:
猜.追加(event.unicode)
答案=”“
对于word中的c:
答案+=c+“如果c在其他地方猜到”
打印(答案)
pygame.quit()

这是否意味着当有应用程序窗口时,程序不能接受输入?@BryanKim可以,但窗口没有响应。您可以在不同的线程中从控制台获取输入。无论如何,在图形游戏中,没有人从控制台获取输入。现在你根本不需要窗户。然而见
    i = -1
    for letter in word:
        i += 1
        if letter == guessedLetter:
            guessedWord[i] = guessedLetter
    print(guessedLetter)