1 回答

TA贡献1821条经验 获得超6个赞
弹跳球的技巧是增加重力。重力总是加速 Y(垂直)速度朝向地板。
当球下落时,速度增加
随着球上升,速度下降
当球撞击地面时,速度反转并且球“弹跳”。当球速在顶部达到零时,重力会反转速度并将球拉向地面。
这是一个弹跳球的简单示例:
import pygame as pg
from time import sleep, time
pg.init()
Height = Width = 500 # window dimensions
pg.display.set_caption("Bounce") # window title
win = pg.display.set_mode((Height, Width)) # create window
ball = {'x':Width/2, 'y':100, 'xs':3, 'ys':3 } # ball start position and speed
radius = 20 # ball radius
while True: # main loop
for event in pg.event.get(): # required for OS events
if event.type == pg.QUIT:
pg.quit()
pg.time.Clock().tick(30) # 30 FPS
win.fill((255, 255, 255)) # clear screen
pg.draw.circle(win, (200, 0, 0), (int(ball['x']), int(ball['y'])), 20) # draw ball
ball['x'] += ball['xs'] # move ball left \ right
ball['y'] += ball['ys'] # move ball up \ down
if ball['y'] >= Height - radius: ball['ys'] = -ball['ys'] # bounce on floor
else: ball['ys'] += .2 # accelerate toward floor, increase speed down, decrease up
if ball['x'] <= radius or ball['x'] > Width - radius: ball['xs'] = -ball['xs'] # bounce on wall
pg.display.update()
添加回答
举报