【发布时间】:2022-01-11 10:23:54
【问题描述】:
我正在尝试使用 Python 3 制作乒乓球游戏,并且可以说我已经走得很远了。我现在遇到了一个错误(错误不是错误),球在击中桨边缘时不会反弹。相反,它一直等到它击中桨的中心;可能是由于我使用的 ycor 函数。这是我到目前为止的代码:
import turtle
wn = turtle.Screen()
wn.bgcolor('white')
wn.title("Ping Pong")
wn.tracer(0)
wn.setup(width=800, height=600)
pad1 = turtle.Turtle()
pad1.shape('square')
pad1.penup()
pad1.shapesize(5, 1)
pad1.speed(0)
pad1.goto(-340, 0)
pad1.speed(0)
pad2 = turtle.Turtle()
pad2.shape('square')
pad2.penup()
pad2.shapesize(5, 1)
pad2.speed(0)
pad2.goto(340, 0)
pad2.speed(0)
ball = turtle.Turtle()
ball.shape("circle")
ball.penup()
ball.color('black')
ball.speed(0)
ball.dy = -0.2
ball.dx = -0.2
def paddle_a_up():
y = pad1.ycor()
y += 20
pad1.sety(y)
def paddle_a_down():
y = pad1.ycor()
y -= 20
pad1.sety(y)
def paddle_b_up():
y = pad2.ycor()
y += 20
pad2.sety(y)
def paddle_b_down():
y = pad2.ycor()
y -= 20
pad2.sety(y)
wn.listen()
wn.onkeypress(paddle_a_up, "w")
wn.onkeypress(paddle_a_down, "s")
wn.onkeypress(paddle_b_up, "Up")
wn.onkeypress(paddle_b_down, "Down")
while True:
wn.update()
ball.sety(ball.ycor() + ball.dy)
ball.setx(ball.xcor() + ball.dx)
if ball.ycor() < -270:
ball.dy *= -1
if ball.ycor() > 280:
ball.dy *= -1
if ball.xcor() < -380:
ball.goto(0, 0)
ball.dx *= -1
if ball.xcor() > 380:
ball.goto(0, 0)
ball.dx *= -1
if (ball.xcor() > 340 and ball.xcor() < 350) and (ball.ycor() < pad2.ycor() + 40 and
ball.ycor() > pad2.ycor - 40):
ball.setx(340)
ball.dx *= -1
这是
if (ball.xcor() > 340 and ball.xcor() < 350) and (ball.ycor() < pad2.ycor() + 40 and
ball.ycor() > pad2.ycor - 40):
给我带来所有麻烦的声明。我是一个初学者程序员,但所有类型的答案都值得赞赏。提前致谢!
【问题讨论】:
标签: python python-3.x pong