【发布时间】:2012-02-14 22:10:35
【问题描述】:
文件“C:\Users\Tom\Desktop\Tetris!\tetris.py”,第 206 行,在 typeSet 中 Globals.blockArray[i].x.append(7) IndexError: 列表索引超出范围
typeSet 中的第 4 行出现上述错误
初始化时:
def main():
initialize()
def initialize():
Globals.running = True
addBlock()
class Globals:
running = True
blockArray = []
blockNum = 0
然后是:
def addBlock():
Globals.blockArray.append(block())
class block:
def __init__(self):
self.id = Globals.blockNum
Globals.blockNum += 1
self.x = []
self.y = []
self.landed = False
self.blockType = 1#random.randint(1,6)
self.typeSet()
def typeSet(self):
i = self.id
if self.blockType == 1:
#square(i)
Globals.blockArray[i].x.append(7)
Globals.blockArray[i].y.append(0)
Globals.blockArray[i].x.append(7)
Globals.blockArray[i].y.append(1)
Globals.blockArray[i].x.append(8)
Globals.blockArray[i].y.append(0)
Globals.blockArray[i].x.append(8)
Globals.blockArray[i].y.append(1)
编辑:添加更多代码并切换它,因此 id 应该从 0 开始。错误代码没有改变
【问题讨论】:
-
似乎很清楚:无论
Globals.blockArray是什么,它都没有i成员。 -
这似乎是第一次失败。初始化时:blockArray = [] 然后 blockNum = 0 然后 def addBlock(): Globals.blockArray.append(block())
-
i永远不会为 0。您首先将其增加到 1。blockArray[1]不存在。 -
啊,等等,
Globals.blockArray[i]应该是您正在处理的block对象?那你为什么不直接参考self呢? -
谢谢!那解决了它。我最初没有这样的原因是因为排版在课堂之外。但是非常感谢您抓住它!