【发布时间】:2013-08-28 17:26:09
【问题描述】:
我正在尝试构建一个简单的瓷砖地图,作为一个更大项目的一部分,我提出的解决方案之一是使用如下函数:
def tile((value, X, Y)):
if value == 1:
pygame.draw.rect(screen, (0, 0, 0) (X, Y, 64, 64), 0)
我的想法是我将级别设置为一个元组列表,其中包含一个值,该值表示要在此处绘制的图块,然后是该图块的坐标。
这当然行不通,因为您不能使用元组作为参数。
我对此的解决方案是从列表中的元组中获取值:
def tile(value, X, Y):
if value == 1:
pygame.draw.rect(screen, (0, 0, 0) (X, Y, 64, 64), 0)
level = [(1, 0, 0), (rest of list)]
tile(level[0[0]], level[0[1]], level[0[2]])
哪个没用,给了我
Traceback (most recent call last):
tile(level[0[0]], level[0[1]], level[0[2]])
TypeError: 'int' object has no attribute '__getitem__'
有人对此有解决方法吗?我可以通过某种方式将元组作为一系列参数输入函数?或者我只是在使用一种永远不会奏效的完全特殊的方法?我猜这只是由于我的盲目无能,尽管我想被告知其他情况。
Python 2.7,pygame 1.9
【问题讨论】:
-
实际上,您已经快到了;除了更简单的
*level[0]语法之外,您应该使用level[0][0], level[0][1], level[0][2]。相反,您的代码尝试索引整数(0[0]尝试从int值0获取项目0,因此您的例外)。 -
"这当然行不通,因为你不能使用元组作为参数。" 这对我来说是个新闻。从什么时候开始?
-
当我尝试使用它作为参数时,我得到了 TypeError: 'tuple' object is not callable
标签: python list python-2.7 pygame tuples