【发布时间】:2021-12-17 11:57:21
【问题描述】:
我正在用 Python 制作乒乓球游戏,但球没有与任何一个球拍发生碰撞。我发现了类似的问题,但它们似乎都不起作用。在随机点上,球似乎变慢了,但我无法将它与任何相关的东西关联起来,除非它是错误放置的碰撞箱的情况,在这种情况下我似乎无法发现异常值。
代码:
import os
import turtle as t
playerAscore = 0
playerBscore = 0
window = t.Screen()
window.title('Game of pongs the pong game pong the game game the pong pong pong pong the EmAG')
window.bgcolor('black')
window.setup(width=800, height=600)
window.tracer(0)
leftpaddle = t.Turtle()
leftpaddle.speed(0)
leftpaddle.shape('square')
leftpaddle.color('white')
leftpaddle.shapesize(stretch_wid=5, stretch_len=1)
leftpaddle.penup()
leftpaddle.goto(-270, 0)
rightpaddle = t.Turtle()
rightpaddle.speed(0)
rightpaddle.shape('square')
rightpaddle.color('purple')
rightpaddle.shapesize(stretch_wid=5, stretch_len=1)
rightpaddle.penup()
rightpaddle.goto(270, 0)
ball = t.Turtle()
ball.speed(0)
ball.shape('circle')
ball.color('red')
ball.penup()
ball.goto(1, 1)
ball_dx = 0.1
ball_dy = 0.1
pen = t.Turtle()
pen.speed(0)
pen.color('Pink')
pen.penup()
pen.hideturtle()
pen.goto(0, 260)
pen.write('Score', align='center', font=('Shadows into Light', 24, 'normal'))
def leftpaddleup():
y = leftpaddle.ycor()
y = y + 90
leftpaddle.sety(y)
def leftpaddledown():
y = leftpaddle.ycor()
y = y + -90
leftpaddle.sety(y)
def rightpaddleup():
y = rightpaddle.ycor()
y = y + 90
rightpaddle.sety(y)
def rightpaddledown():
y = rightpaddle.ycor()
y = y + -90
rightpaddle.sety(y)
window.listen()
window.onkeypress(leftpaddleup, 'w')
window.onkeypress(leftpaddledown, 's')
window.onkeypress(rightpaddleup, 'Up')
window.onkeypress(rightpaddledown, 'Down')
while True:
window.update()
# mover of balls
ball.setx(ball.xcor() + ball_dx)
ball.sety(ball.ycor() + ball_dy)
if ball.ycor() > 290:
ball.sety(290)
ball_dy = ball_dy * -1
if ball.ycor() < -290:
ball.sety(-290)
ball_dy = ball_dy * -1
if ball.xcor() > 390:
ball.goto(0, 0)
ball_dx = ball_dx * -1
os.system("afplay wallhit.wav&")
if (ball.xcor()) < -390: # Left width paddle Border
ball.goto(0, 0)
ball_dx = ball_dx * -1
os.system("afplay wallhit.wav&")
# paddle collision
if (ball.xcor() < -340) and (ball.xcor() > -350) and (
paddle_right.ycor() + 40 > ball.ycor() > paddle_right.ycor() - 40):
ball.setx(-340)
ball_dx = ball_dx * -1
os.system("afplay paddle.wav&")
if (ball.xcor() < 340) and (not ball.xcor() <= 350) and (
paddle_left.ycor() + 0 > ball.ycor() > paddle_left.ycor() - 350):
ball.setx(340)
ball_dx = ball_dx * -1
os.system("afplay paddle.wav&")
【问题讨论】:
-
(ball.xcor() > -340) and (ball.xcor() < -350)永远不会为真 - 反转两个常量或两个比较运算符。 -
球仍然通过
-
同样的“原始”代码一遍又一遍地发布到 [turtle-graphics] 和 [python-turtle]。而且没有人引用实际来源,这可能会有所帮助。
标签: python collision turtle-graphics python-turtle pong