моя левая полоса, которая является игроком 1, не опускается вниз после нажатия клавиши s
Думаю, это из-за опечатки в следующей функции:
def ldown():
lbar.directon='down'
lbar.directon
-> lbar.direction
Это должно было появиться в вашей консоли как сообщение об ошибке.
Моя переработка вашего кода для решения вышеуказанного и некоторых других вопросы:
from turtle import Screen, Turtle
# constants
DELAY = 50 # milliseconds
# functions
def move():
if rbar.direction == 'up':
rbar.sety(rbar.ycor() + 20)
elif rbar.direction == 'down':
rbar.sety(rbar.ycor() - 20)
if lbar.direction == 'up':
lbar.sety(lbar.ycor() + 20)
elif lbar.direction == 'down':
lbar.sety(lbar.ycor() - 20)
def rup():
rbar.direction = 'up'
def rdown():
rbar.direction = 'down'
def lup():
lbar.direction = 'up'
def ldown():
lbar.direction = 'down'
def gameloop():
screen.update()
move()
screen.ontimer(gameloop, DELAY)
# screen
screen = Screen()
screen.bgcolor('black')
screen.title('pong')
screen.setup(height=700, width=600)
screen.tracer(False)
# left player
lbar = Turtle()
lbar.color('white')
lbar.shape('square')
lbar.shapesize(6, 1)
lbar.penup()
lbar.goto(-270, 100)
lbar.direction = 'stop'
# right player
rbar = lbar.clone()
rbar.goto(270, -270)
rbar.direction = 'stop'
# pong ball
ball = Turtle()
ball.shape('circle')
ball.color('red')
ball.shapesize(0.5)
ball.penup()
# inputs
screen.onkey(lup, 'w')
screen.onkey(ldown, 's')
screen.onkey(rup, 'Up')
screen.onkey(rdown, 'Down')
screen.listen()
gameloop()
screen.mainloop()