Делаю пинг понг на черепашке и возникает такая проблема
описал методы для получения и изминения кординат игрока
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()
