Pygame 重力脚本

Pygame Gravity Script

我正在尝试用 pygame 制作一个 python 脚本来模拟重力。问题是,我的 "player" 一直卡在底部,连一次弹跳都没有。如果有帮助,我正在使用 python 3.4.1。这是我的代码:

import pygame

pygame.init()

disp_w = 800
disp_h = 600
disp = pygame.display.set_mode((disp_w,disp_h))

pygame.display.set_caption('Gravity')

player_x = disp_w/2
player_y = 0
player = pygame.image.load('images/player.png')

gravity = 0.1
speed = 0

clock = pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    player_y += speed
    speed += gravity

    if player_y > disp_h:
        speed = speed * -0.7

    disp.fill((0,0,0))
    disp.blit(player,(player_x,player_y))

    pygame.display.flip()
    clock.tick(120)

在一帧中,您会跌落到地板下方,比方说,1.0 个单位。然后您的速度变为 -0.7。

因此,在下一帧中,您最终低于地面 0.3 个单位,并再次翻转您的速度,达到 +0.49。

在接下来的帧中,您低于地面 0.79 个单位,然后再次翻转标志,依此类推。你出不来。

尝试:

if player_y > disp_h:
    # stop the player at the floor
    player_y = disp_h
    speed = speed * -0.7