为什么我的pygame应用程序没有响应?

2024-05-07 13:57:34 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我需要为学校练习做一个小游戏。我太懒了,无法在代码中创建所有屏幕,所以我只是对所有屏幕进行了png,然后在代码中称它们为“spelfase”0、1和2。Spelfase 0是显示游戏标题等的开始屏幕。Spelfase 1是显示规则的规则屏幕。Spelfase 2是真正的游戏。 我很确定spelfase 1的代码是问题所在,因为当我输入代码时,当我在startscreen上按下空格键时,我的应用程序没有响应

我真的是一个新的编码,所以我没有尝试过很多东西

spelfase = 0
clock = pygame.time.Clock()
while not done:
    if spelfase == 0:
        for event in pygame.event.get():
            if event.type == pygame.QUIT: 
                done = True 
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    spelfase = 1

    screen.fill((255,255,255))
    bordrect = startscherm.get_rect() 
    screen.blit(startscherm, bordrect)
    clock.tick(60)
    pygame.display.flip()
while not done:
if spelfase == 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT: 
            done = True 
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                spelfase = 2

    screen.fill((255,255,255))
    bordrect = regelscherm.get_rect()
    screen.blit(regelscherm, bordrect) 
    clock.tick(60)
    pygame.display.flip()
while not done:
    if spelfase == 2:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True 
            elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                print ("Knop: Spatie")

                worp = random.randint(1,6)
                posities[beurt] += worp
                if posities[beurt] >= 63:
                    posities[beurt] = 63
                if beurt == 0:
                    beurt = 1
                else:
                    beurt = 0

            elif event.key == pygame.K_BACKSPACE:
                print ("Knop: Backspace")
                beurt = 0
                worp = 0
                posities = [0,0]

    screen.fill((255,255,255))
    bordrect = bord.get_rect()
    screen.blit(bord, bordrect)
    clock.tick(60)
    pygame.display.flip()

Tags: key代码eventgetif屏幕typescreen
1条回答
网友
1楼 · 发布于 2024-05-07 13:57:34

你没有离开第一个循环,因为如果你按空格键,你仍然没有“完成”

spelfase = 0
clock = pygame.time.Clock()
while not done:
    if spelfase == 0:
        for event in pygame.event.get():
            if event.type == pygame.QUIT: 
                done = True 
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    spelfase = 1

    screen.fill((255,255,255))
    bordrect = startscherm.get_rect() 
    screen.blit(startscherm, bordrect)
    clock.tick(60)
    pygame.display.flip()
if spelfase == 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT: 
            done = True 
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                spelfase = 2
    screen.fill((255,255,255))
    bordrect = regelscherm.get_rect()
    screen.blit(regelscherm, bordrect) 
    clock.tick(60)
    pygame.display.flip()
    if spelfase == 2:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True 
            elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                print ("Knop: Spatie")

                worp = random.randint(1,6)
                posities[beurt] += worp
                if posities[beurt] >= 63:
                    posities[beurt] = 63
                if beurt == 0:
                    beurt = 1
                else:
                    beurt = 0

            elif event.key == pygame.K_BACKSPACE:
                print ("Knop: Backspace")
                beurt = 0
                worp = 0
                posities = [0,0]
    screen.fill((255,255,255))
    bordrect = bord.get_rect()
    screen.blit(bord, bordrect)
    clock.tick(60)
    pygame.display.flip()

这是一个快速的解决方案,但是你必须删除那些if语句并清理掉一些东西

相关问题 更多 >