为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕工程0101907 2022-08-02 15:53:00
我正在尝试制作一个flappy鸟的克隆来学习pygame,我是一个初学者。只是做一些基本的事情,我希望每当用户按下空格键时图像就会跳跃,否则图像就会不断下降。我遇到的问题是,如果我按住空格键,它就会继续向上飞行,而不是一次只跳一次。如何解决此问题?(有人解释了申请跳跃在飞翔的鸟所需的基本物理原理)import pygamepygame.init()screen = pygame.display.set_mode((500,500))c = pygame.image.load('cookie.png')run = Truex,y = 50,50while 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()
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

pygame返回的状态.key.get_pressed()只要按住键即可。仅在按下键时发生一次。
使用事件来举起鸟。但是鸟的位置必须在主循环中计算,以保持鸟不断下降。
此外,使用pygame.time.Clock分别.tick()来控制每秒的翻牌次数: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()


查看完整回答
反对 回复 2022-08-02
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

请尝试使用事件而不是 。 返回一个数组,其中包含键盘上每个键的状态,并且每次循环运行时都会调用它 - 因此,如果您按住该键,它将反复触发。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

沿着这些路线的东西应该对你有用。


查看完整回答
反对 回复 2022-08-02
  • 2 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号