按照youtube教程在Python中创建了一个Pong游戏,然后在进球后想提高球速?

时间:2019-04-28 22:32:26

标签: python turtle-graphics pong

我想在每个“进球”得分后提高球速,您可以在#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

也许这不能完成,因为我不确定乌龟太基本了吗?

下面是完整代码:

2 个答案:

答案 0 :(得分:0)

要加速球,最简单的方法可能是将dxdy乘以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来更轻松地控制加速。