from math import ceil, sqrt
import pgzrun
# 抛物线
x = 100
speed_x = 15 # 水平匀速
y = 100
a = 0.5 # 竖直自由落体
t = 1
count = 0
def draw():
screen.fill('white')
screen.draw.filled_circle((x, y), 30, 'red') # 动者变也,凡是运动就需要变量
def update():
# 由于update()函数中对speed_ y的值进行了修改,因此需要将speed_ y声明为全局变量。
# 同时将两个变量声明为全局变量
global x, speed_x, y, t, count # 全局变量:每次循环时都是改变后的
x += speed_x
if x >= 770 or x <= 30:
speed_x = -speed_x
count += t
y = 100 + a * pow(count, 2) # 公式:y=y0+at^2
if count == ceil(sqrt((570 - 100) / a)) or count == 0:
t = -t
pgzrun.go()
|