繁体   English   中英

Python(海龟)移除海龟/箭头

[英]Python (Turtle) Remove turtle / arrow

我正在尝试制作一个基本的乒乓球,但我不明白为什么屏幕中间的箭头/乌龟会显示。

屏幕上的桨由存储在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)放入构造函数 init function

我不明白箭头对象在哪里,因为它似乎不在上面提到的列表中......有人可以启发我吗?

通常,像Paddle()这样的class要么是Turtle ,要么包含一个或多个Turtle实例。 但是你已经做到了,它既是Turtle (神秘箭头的来源),又包含海龟list 简单的解决方法是删除Turtle作为其超类并删除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 游戏的常用方法是使 paddle 成为Turtle的子类,然后使用shapesize()将海龟拉伸为您想要的矩形。 但这在碰撞检测方面存在问题。 您的方法使桨有点复杂,但可能会更好地检测碰撞,因为您可以测试每个部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM