如何使图像/对象跳跃无限次?

2024-05-15 10:33:18 发布

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

我正试图复制flappy bird来学习pygame,我是一个初学者。只是做一些基本的操作,我希望每当用户按下空格键或图像不断下降时,图像都会跳转我遇到的问题是,如果我一直按下空格键,它会一直向上飞,而不是一次只跳一次。我该如何解决这个问题?(有人解释了申请跳伞所需的基本物理知识)

import pygame
pygame.init()

screen = pygame.display.set_mode((500,500))
c = pygame.image.load('cookie.png')

run = True
x,y = 50,50

while run:
    screen.fill((255,255,255))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()

    if keys[pygame.K_SPACE]:
        y -= 1
    else:
        y += 0.2

    screen.blit(c, (x,y))
    pygame.display.update()

pygame.quit()


Tags: run用户图像eventgetifdisplaykeys
2条回答

只要按下一个键,^{}返回的状态。按键时KEYDOWN只出现一次。
使用事件来举起鸟。但必须在主回路中计算鸟的位置,以保持鸟持续下落。
此外,分别使用^{}^{}控制每秒的触发器:

import pygame
pygame.init()

screen = pygame.display.set_mode((500,500))
clock = pygame.time.Clock()

c = pygame.image.load('cookie.png')
run = True
x,y = 50,50

while run:
    clock.tick(60)

    fly = False
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        elif event.type == pygame.KEYDOWN:
           fly = event.key == pygame.K_SPACE

    if fly:
        y -= 20
    else:
        y += 1

    screen.fill((255,255,255))
    screen.blit(c, (x,y))
    pygame.display.update()

pygame.quit()

尝试使用KEYDOWN事件而不是get_pressed()get_pressed()返回一个数组,其中包含键盘上每个键的状态,并且每次循环运行时都要调用该数组-因此,如果按住该键,它将重复触发

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        run = False
    elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
        y -= 1
    else:
        y += 0.2

这样的东西应该适合你

相关问题 更多 >