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 拉伸成您想要的矩形.但这在碰撞检测方面存在问题。您的方法使桨稍微复杂一些,但在碰撞检测方面可能会更好,因为您可以测试每个部分。
我正在尝试制作一个基本的 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 拉伸成您想要的矩形.但这在碰撞检测方面存在问题。您的方法使桨稍微复杂一些,但在碰撞检测方面可能会更好,因为您可以测试每个部分。