简体   繁体   中英

I'm making a Python pong game and the ball in the game won't move what should I do?

I'm new to Python coding and I'm using PyCharm as my Python reader I coded this simple pong game (it is turtle code not a Pygame) using a tutorial but the ball won't move what should I do about that I tried everything like changing the speed of the ball but that didn't help either no matter what number I put it at the ball wouldn't move.

''' PONG GAME '''

import turtle as t
playerAscore = 0
playerBscore = 0

window = t.Screen()
window.title('PONG GAME')
window.bgcolor('green')
window.setup(width=800, height=600)
window.tracer(0)


# creating left paddle
leftpaddle = t.Turtle()
leftpaddle.speed(0)
leftpaddle.shape('square')
leftpaddle.color('white')
leftpaddle.shapesize(stretch_wid=5, stretch_len=1)
leftpaddle.penup()
leftpaddle.goto(-350, 0)

# creating right paddle
rightpaddle = t.Turtle()
rightpaddle.speed(0)
rightpaddle.shape("square")
rightpaddle.color("white")
rightpaddle.shapesize(stretch_wid=5, stretch_len=1)
rightpaddle.penup()
rightpaddle.goto(350, 0)

# creating ball
ball = t.Turtle()
ball.speed(0)
ball.shape("circle")
ball.color("red")
ball.penup()
ball.goto(5, 5)
ballxdirection = 0.2
ballydirection = 0.2

# creating pen for scorecard update
pen = t.Turtle()
pen.speed(0)
pen.color("blue")
pen.penup()
pen.hideturtle()
pen.goto(0, 260)
pen.write("score", align="center", font=('Arial', 24, 'normal'))


# moving the left paddle
**def** leftpaddleup():
    y = leftpaddle.ycor()
    y = y+90
    leftpaddle.sety(y)

    # moving the left paddle
**def** leftpaddledown():
    y = leftpaddle.ycor()
    y = y - 90
    leftpaddle.sety(y)


# moving the right paddle
**def** rightpaddleup():
    y = rightpaddle.ycor()
    y = y+90
    rightpaddle.sety(y)

# moving the right paddle
**def** rightpaddledown():
    y = rightpaddle.ycor()
    y = y-90
    rightpaddle.sety(y)

# Assign keys to play
window.listen()
window.onkeypress(leftpaddleup, 'w')
window.onkeypress(leftpaddledown, 's')
window.onkeypress(rightpaddleup, 'Up')
window.onkeypress(rightpaddledown, 'Down')

**while True**:
    window.update()

    # moving the ball
ball.setx(ball.xcor()+ballxdirection)
ball.sety((ball.ycor()+ballydirection))

# settingup border
**if** ball.ycor()>290:
    ball.sety(290)
    ballydirection = ballydirection*-1

**if** ball.ycor() < -290:
        ball.sety(-290)
        ballydirection = ballydirection*1

**if** ball.xcor() > 390:
    ball.goto(0, 0)
    ballxdirection= ballxdirection
    playerAscore = playerAscore+1
    pen.clear()
    pen.write("player A :{}   player B :{}".format(playerAscore, playerBscore)), align =='center', font== ('Arial')

#Handling the Collisions
**if** (ball.xcor()>340)and(ball.xcor()<350)and(ball.ycor()<rightpaddle.ycor()+40 and ball.ycor()>rightpaddle.ycor()-40):
    ball.setx(340)
    ballxdirection=ballxdirection*-1

**if** (ball.xcor()<-340)and(ball.xcor()>-350)and(ball.ycor()<leftpaddle.ycor()+40 and ball.ycor() > leftpaddle.ycor() - 40):
    ball.setx(-340)
    ballxdirection = ballxdirection *-1

Your main loop is just

while True:
    window.update()

There's nothing in there that's moving the ball. If the lines afterwards are supposed to be part of the main loop, they should be indented as well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM