[英]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.