Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame重力脚本_Python_Pygame - Fatal编程技术网

Python Pygame重力脚本

Python Pygame重力脚本,python,pygame,Python,Pygame,我正在尝试用pygame制作一个python脚本来模拟重力。问题是,我的“玩家”一直卡在底部,甚至一次也没有弹跳。如果有帮助的话,我正在使用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

我正在尝试用pygame制作一个python脚本来模拟重力。问题是,我的“玩家”一直卡在底部,甚至一次也没有弹跳。如果有帮助的话,我正在使用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个单位,然后再次翻转标志,依此类推。你永远也出不去

尝试:


地心引力似乎正如你所预料的那样起作用。如果你想让“玩家”在触底时反弹,你需要建立能量守恒模型,玩家处于完全弹性(即通过反弹释放碰撞能量)和完全塑性(即完全吸收碰撞能量)之间@Simon我认为
speed=speed*-0.7
是试图模拟弹跳。@irrelephant:啊,是的,你是对的。另外,如果玩家打算保持在底部以上,测试可能类似于
if player_y+player.get_height()>disp_h:player_y=disp_h-player.get_height(),假设
player_y
是播放器图像的顶部。
if player_y > disp_h:
    # stop the player at the floor
    player_y = disp_h
    speed = speed * -0.7