Делаю пинг понг на черепашке и возникает такая проблема

описал методы для получения и изминения кординат игрока

import turtle


class Game_element():
    def __init__(self, goto,x,y):
        self = turtle.Turtle()
        self.color("white")
        self.shape("square")
        self.penup()
    self.shapesize(x,y)
    self.goto(goto)

def ycor(self):
    self._ycor = turtle.ycor()
    return self._ycor

def setycor(self,y):
    self._sety = turtle.sety(y)
    return self._sety

в основном файле описал функцию для движение print для вывод кординаты в консоль.вместо того,чтобы двигать доску 1 игрока(player_1) оно двигает маленький укказатель в центре экрана, уоторый даже не описан в коде

  import turtle

from objects import Game_element
from win32api import GetSystemMetrics
import objects

win_w = GetSystemMetrics(0)
win_h = GetSystemMetrics(1)

window = turtle.Screen()
x1 = -(win_w / 2) + (0.065 * win_w)
x2 = (win_w / 2) - (0.065 * win_w)
window.bgcolor("black")
window.setup(win_w, win_h)
window.tracer()

player_1: Game_element = objects.Game_element([x1, 0], 5, 1)

player_2 = objects.Game_element([x2, 0], 5, 1)

ball = objects.Game_element([0, 0], 1, 1)

window.listen()


def up_1():
    y = player_1.ycor()
    y += 5
    player_1.setycor(y)
    print(y)
def down_1():
    y = player_1.ycor()
    y -= 5
    player_1.setycor(y)
    print(y)


window.onkeypress(up_1, "w")
window.onkeypress(down_1, "s")
while True:
    window.update()

но результат такой: введите сюда описание изображения


Ответы (1 шт):

Автор решения: Andy Pavlov

Я объединил Ваш код в один файл. У Вас некоторая мешанина с классом Game_element (особенно с переназначением существующих методов Turtle, что совсем не гуд).

Еще такой момент. Посмотрите мануалы по наследованию и использованию super(). Оно здесь пригодится.

По факту немного почистил класс и поменял функции перемещения.

import turtle
from win32api import GetSystemMetrics


class Game_element(turtle.Turtle):
    def __init__(self, goto, x, y, dy = 10):
        super().__init__()
        self.color("white")
        self.shape("square")
        self.penup()
        self.shapesize(x,y)
        self.goto(goto)
        self.dy = dy

    def move_up(self):
        x, y = self.pos()
        self.setposition(x, y + self.dy)

    def move_down(self):
        x, y = self.pos()
        self.setposition(x, y - self.dy)

win_w = GetSystemMetrics(0)
win_h = GetSystemMetrics(1)

window = turtle.Screen()
x1 = -(win_w / 2) + (0.065 * win_w)
x2 = (win_w / 2) - (0.065 * win_w)
window.bgcolor("black")
window.setup(win_w, win_h)
window.tracer()

player_1 = Game_element([x1, 0], 5, 1)
player_2 = Game_element([x2, 0], 5, 1)
ball = Game_element([0, 0], 1, 1)

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

while True:
    window.update()
→ Ссылка