我正在尝试使用Python和海龟制作蛇游戏。
我创建了 create_snake() 函数来在程序启动时创建 3 个对象,即蛇的各个部分。
from turtle import Turtle, Screen
POS = [(0,0), (-20,0),(-40,0)]
MOVE_DISTANCE = 20
class SnakeBody(Turtle):
def __init__(self):
super().__init__()
self.shape("square")
self.color("white")
self.penup()
self.segments = []
def create_snake(self):
for p in POS:
pybody = SnakeBody()
pybody.goto(p)
self.segments.append(pybody)
def move(self):
for i in range(len(self.segments) - 1, 0, -1):
newx = self.segments[i - 1].xcor()
newy = self.segments[i - 1].ycor()
self.segments[i].goto(newx, newy)
self.segments[0].forward(MOVE_DISTANCE)
我希望 move() 函数连续地一个接一个地移动每个段。
最后一行给我一个“IndexError:列表索引超出范围” 我该如何解决这个问题?
循环从 len(self.segments) - 1 开始,一直到 0(不包括 0)。 在循环内部,您使用 self.segments[i - 1],因此当 i 为 0 时,您将尝试访问 self.segments[-1],这是列表的最后一个元素。