@Ilya64

Проблема в коде Python, как устранить?

При запуске выходит ошибка:

Traceback (most recent call last):
  File "C:\Users\i6439\OneDrive\Рабочий стол\Python Cod\Pin-Pong.py", line 132, in <module>
    window.update()
  File "C:\Users\i6439\AppData\Local\Programs\Python\Python38-32\lib\turtle.py", line 1303, in update
    t._update_data()
  File "C:\Users\i6439\AppData\Local\Programs\Python\Python38-32\lib\turtle.py", line 2646, in _update_data
    self.screen._incrementudc()
  File "C:\Users\i6439\AppData\Local\Programs\Python\Python38-32\lib\turtle.py", line 1292, in _incrementudc
    raise Terminator
turtle.Terminator





Исходный код:

import turtle
from random import choice,randint

window = turtle.Screen()
window.title("Pin-Pong")
window.setup(width=1.0,height=1.0)    #открытие окна и его заливка
window.bgcolor("black")
window.tracer(2)



border = turtle.Turtle()
border.speed(0)
border.color("green")
border.begin_fill()
border.goto(-500,300)  #рисование поля
border.goto(500,300)
border.goto(500,-300)
border.goto(-500,-300)
border.goto(-500,300)
border.end_fill()



border.goto(0,300)
border.color("white")
border.setheading(270)
for i in range (25):
    if i%2==0:
        border.forward (24)
    else:                      #центральная штриховая линия
        border.up()
        border.forward (24)
        border.down()
border.hideturtle()








rocket_a = turtle.Turtle()

rocket_a.color("white")
rocket_a.shape("square")
rocket_a.shapesize(stretch_len=1,stretch_wid=5)    #создание и установка первой ракетки
rocket_a.up()
rocket_a.goto(-450,0)



def move_up():
    y = rocket_a.ycor() +10
    if y > 250:
        y = 250
    rocket_a.sety(y)
                                            #движение при нажатии "W" и "S"
def move_down():
    y = rocket_a.ycor() -10
    if y < -250:
        y = -250
    rocket_a.sety(y)

window.listen()
window.onkeypress(move_up, "w")
window.onkeypress(move_down, "s")





rocket_b = turtle.Turtle()

rocket_b.color("white")
rocket_b.shape("square")
rocket_b.shapesize(stretch_len=1,stretch_wid=5)    #создание и установка второй ракетки
rocket_b.up()
rocket_b.goto(450,0)



def move_up():
    y = rocket_b.ycor() +10
    if y > 250:
        y = 250
    rocket_b.sety(y)
                                              #движение при нажатии "O" и "L"      
def move_down():
    y = rocket_b.ycor() -10
    if y < -250:
        y = -250
    rocket_b.sety(y)

window.listen()
window.onkeypress(move_up, "o")
window.onkeypress(move_down, "l")






score_a = 0
score_b = 0


FONT = ("Arial", 44)
s1 = turtle.Turtle(visible=False)
s1.color("red")
s1.up()
s1.setposition(-200,300)
s1.write(score_a, font = FONT)
                                                  #создание счётчика

s2 = turtle.Turtle(visible=False)
s2.color("red")
s2.up()
s2.setposition(200,300)
s2.write(score_b, font = FONT)





ball = turtle.Turtle()
ball.shape("circle")
ball.color("red")
ball.up()                                       #создание мяча
ball.speed(0)
ball.dx = (3)
ball.dy = (3)

while True:
    window.update()
    
    ball.setx(ball.xcor() + ball.dx)
    ball.sety(ball.ycor() + ball.dy)


    if ball.ycor() >= 290:
        ball.dy = -ball.dy
                                                        #отражение от потолка и пола
    if ball.ycor() <= -290:
        ball.dy = -ball.dy

        

    if ball.xcor() >= 490:
        score_a += 1
        s1.clear()                                              #гол в правые ворота
        s1.write(score_a, font = FONT)           
        ball.goto (0,randint(-150,150))          
        ball.dx = choice ([-4,-3,-2,2,3,4])           #респаун мяча
        ball.dy = choice ([-4,-3,-2,2,3,4])
        

    if ball.xcor() <= -490:
        score_b += 1
        s2.clear()                                             #гол в левые ворота 
        s2.write(score_b, font = FONT)
        ball.goto (0,randint(-50,50))            
        ball.dx = choice ([-4,-3,-2,2,3,4])      #респаун мяча
        ball.dy = choice ([-4,-3,-2,2,3,4])     
        




    if ball.ycor() >= rocket_b.ycor() -50 and ball.ycor() <= rocket_b.ycor() +50 \
    and ball.xcor() >= rocket_b.xcor() -20 and ball.xcor() <= rocket_b.xcor() +20:       #отражение мяча от правой ракетки
       ball.dx = -ball.dx


    if ball.ycor() >= rocket_a.ycor() -50 and ball.ycor()  <= rocket_a.ycor() +50 \
    and ball.xcor() >= rocket_a.xcor() -20 and ball.xcor()  <= rocket_a.xcor() +20:      #отражение мяча от левой ракетки
       ball.dx = -ball.dx
       






window.mainloop()
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
Довольно сложно в этой лапше найти строку с ошибкой.
Суть в том, что turtle уже закрыт на момент вызова window.update, либо где-то есть попытка создать более одного инстанса оного
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы