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

我正在尝试制作一个flappy鸟的克隆来学习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()


慕工程0101907
浏览 183回答 2
2回答

开心每一天1111

pygame返回的状态.key.get_pressed()只要按住键即可。仅在按下键时发生一次。使用事件来举起鸟。但是鸟的位置必须在主循环中计算,以保持鸟不断下降。此外,使用pygame.time.Clock分别.tick()来控制每秒的翻牌次数:KEYDOWNimport pygamepygame.init()screen = pygame.display.set_mode((500,500))clock = pygame.time.Clock()c = pygame.image.load('cookie.png')run = Truex,y = 50,50while 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()

MMMHUHU

请尝试使用事件而不是 。 返回一个数组,其中包含键盘上每个键的状态,并且每次循环运行时都会调用它 - 因此,如果您按住该键,它将反复触发。KEYDOWNget_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沿着这些路线的东西应该对你有用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python