我想在每个“进球”得分后提高球速,您可以在#1和#2下看到我曾尝试并未能做到的点,speedx和speedy原本只是
首先,我尝试通过在教程中已定义的if循环上添加内容来增加容量,#1是我最后添加的内容
if ball.xcor() > 390:
ball.goto(0, 0)
ball.dx *= -1
score_a += 1
pen.clear()
pen.write("Big Man : {} Pussio: {}".format(score_a, score_b), align="center", font=("Courier", 24, "normal"))
#1 speedy += 0.1
#1 speedx += 0.1
#1 ball.dx = speedx
#1 ball.dy = speedy
然后我尝试建立自己的for循环,但是我遇到的问题是,当我提高速度时,总是会在进球后使球朝(x,y)(+,+)方向前进,我想是因为我要在ball.dx上加上+1,所以它将球朝(+,+)方向设置,如您从我的代码中看到的那样,进球后我想反转起始方向,使用:
if ball.xcor() > 390:
ball.goto(0, 0)
ball.dx *= -1 - this
score_a += 1
所以基本上我想每次进球都以递增的速度增加球的速度,并且我也想在得分后保持球向不同的方向前进, 这是我尝试过的for循环,也没有运气
#2if ball.xcor() < -390 or ball.xcor() > 390:
#2 ball.dx = speedx
#2 ball.dy = speedy
#2 speedy *= -1
#2 speedx *= -1
#2 speedy += 0.1
#2 speedx += 0.1
也许这不能完成,因为我不确定乌龟太基本了吗?
下面是完整代码:
答案 0 :(得分:0)
要加速球,最简单的方法可能是将dx
和dy
乘以factor > 1
(要减小它,请使用0 < factor < 1
):
在此示例中,速度增加了10%。
acc_factor = 1.1
...
dx *= acc_factor
dy *= acc_factor
如果您想要固定的增量,可以这样做:
acc_factor = 1.1
...
dx_increment = abs(dx)/dx * acc_factor
dx += dx_increment
dy_increment = abs(dy)/dy * acc_factor
dy += dy_increment
答案 1 :(得分:0)
随着游戏变得越来越复杂,您应该花些时间使它变得更容易。
self.vx
应该等于self.dx * unit_of_time
。然后可以随时间增加self.vx
以便引入加速度。请注意,如果加速不断变化,您可能还想添加self.ax
来更轻松地控制加速。