Python (Turtle) 移除乌龟/箭头

Python (Turtle) Remove turtle / arrow

我正在尝试制作一个基本的 Pong,但我不明白为什么屏幕中间会显示 arrow/turtle。

屏幕上的球拍由存储在 self.paddle 中的 6 个海龟对象组成。 我知道问题与 p = Paddle() 有关,但我不明白箭头对象在哪里,因为它似乎不在上面提到的列表中 (print(self.paddle))。 谁能赐教一下?

from turtle import Turtle, Screen

screen = Screen()
screen.setup(width=1000, height=700)

class Paddle(Turtle):

    def __init__(self):
        super().__init__()
        self.paddle = []
        self.create_player_paddle()

    def create_player_paddle(self):
        for pad in range(0, 6):
            x = -480
            y = 30
            p = Turtle(shape="square")
            p.turtlesize(0.5)
            p.penup()
            p.goto(x, y)
            self.paddle.append(p)

        for part in range(len(self.paddle)):
            self.paddle[part].goto(x, y)
            y -= 10
            


p = Paddle()
screen.update()
screen.exitonclick()

如果您需要隐藏 Turtle 指针,请将 Turtle.hideturtle(self) 放入您的构造函数初始化函数中

I don't understand where the arrow-object is since it seems to not be in the list mentioned above ... Can someone enlighten me?

通常,像 Paddle() 这样的 class isa Turtle 包含 一个或Turtle 的更多实例。但是你两者都做了,它既是 Turtle(你的神秘箭头的来源)又包含 list 海龟。简单的解决方法是删除 Turtle 作为它的 superclass 并删除 super().__init__() 代码:

class Paddle():

    def __init__(self):
        self.paddle = []
        self.create_player_paddle()

以下是我对您的代码进行的修改,以解决上述问题和我看到的其他问题:

from turtle import Turtle, Screen

class Paddle():

    def __init__(self):
        self.segments = []
        self.create_player_paddle()

    def create_player_paddle(self):
        x = -480
        y = 30

        for _ in range(6):
            segment = Turtle(shape='square')
            segment.turtlesize(0.5)
            segment.penup()
            segment.goto(x, y)

            self.segments.append(segment)

            y -= 10

screen = Screen()
screen.setup(width=1000, height=700)

paddle = Paddle()

screen.exitonclick()

在 turtle 中玩 Pong 游戏的常用方法是让球拍成为 Turtle 的子class,然后使用 shapesize() 将 turtle 拉伸成您想要的矩形.但这在碰撞检测方面存在问题。您的方法使桨稍微复杂一些,但在碰撞检测方面可能会更好,因为您可以测试每个部分。