gpt4 book ai didi

python - 类型错误 : 'int' object has no attribute '__getitem__'

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:01 29 4
gpt4 key购买 nike

我正在尝试用 pygame 中的矩形制作一个游戏表面。我不确定问题到底是什么,但我相信它与创建矩形时列表的实际迭代有关。对不起,菜鸟在这里。 :)

import pygame

w = 800
h = 600
board_pos = 0, 0
tile = 27
playfield = 0

class Board(object):
def __init__(self, surface, pos, tile_size):
self.surface = surface
self.x, self.y = pos
self.tsize = tile_size
self.color = 50, 50, 50

playfield = [list(None for i in xrange(22)) for i in xrange(10)]

def draw(self):
for i in xrange(10):
for j in xrange(22):
playfield[i][j] = pygame.draw.rect(self.surface, self.color,
(self.x + (i * self.tsize),
self.y + (j * self.tsize),
self.tsize, self.tsize))

pygame.display.init()
screen = pygame.display.set_mode((w, h))

board = Board(screen, board_pos, tile)
board.draw()

while __name__ == '__main__':
pygame.display.flip()

我一直收到这个错误:

Traceback (most recent call last):
File "C:\Documents and Settings\Administrator\My
Documents\Dropbox\Programming\DeathTris
\test2.py", line 30, in <module>
board.draw()
File "C:\Documents and Settings\Administrator\My
Documents\Dropbox\Programming\DeathTris
\test2.py", line 24, in draw
self.tsize, self.tsize))
TypeError: 'int' object has no attribute '__getitem__'

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

您的代码行 playfield = [list(None for i in xrange(22)) for i in xrange(10)]__init__ 函数中创建了一个局部变量。该变量在 __init__ 函数返回后消失。稍后在 draw 中,当您执行 playfield[i][j] 时,您正在访问 playfield 的全局值,它仍然是 0(因为你在开始时将它初始化为 0)。

如果你想从你的 __init__ 中覆盖全局 playfield,你需要在分配给它之前执行 global playfield。 (但是......你为什么要为此使用全局变量?)

关于python - 类型错误 : 'int' object has no attribute '__getitem__' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11908818/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com