我知道如何使用索引从简单列表中提取元素,但不知道如何提取另一个列表中的列表。你知道吗
我需要这个:我正在pygame中制作一个蛇游戏。我基本上是在运行游戏,但我有一个问题,让游戏画蛇的尾巴。你知道吗
我的代码是这样工作的:我一直在使用pygame.draw文件对于图形。“蛇”以x和y坐标的盒子开始。还有一对x和y坐标表示食物(用变量posx和posy表示,以区别于用于蛇头的x和y变量)。我让游戏保存所有蛇以前的坐标到一个列表,它做的很好(我检查了游戏打印出它保存了什么)。我的代码是:
path.insert(0,(x,y))
“path”是我用来追踪蛇路径的列表的名称。你知道吗
我可以移动和吃的食物没有问题(除了我的游戏是有点没有反应的事实),问题是如果我试图实现代码来绘制蛇的故事。你知道吗
蛇的长度(它吃了多少“食物”)被保存在一个变量中,简称为“长度”。我写这段代码是为了描绘蛇的故事:
if length>0:
for i in range(length-1):
pygame.draw.rect(mainWindow, (255,255,255),(path[i], snakeSize,snakeSize))
请原谅最后一行的绕圈子。你知道吗
我想这会从“路径”列表中拉出单个的x,y列表。但是如果我吃了一块食物,除了食物出现在一个新的、随机的位置之外,什么也不会发生。如果我再吃一个,游戏就会冻结,我会收到一条错误信息,上面写着:
TypeError: Rect argument is invalid
我想我不喜欢把x和y坐标从“路径”中拉出来。我不知道如何从一个列表中从另一个列表中提取单个元素。你知道吗
而且,我不明白为什么我第一次吃东西时什么都没发生。我所知道的是,如果我把配方从长度-1改为长度,那么我一吃东西就立刻冻僵了。它似乎不喜欢长度等于1,我也不知道为什么。你知道吗
你所面临的问题是,当你做
length-1
的时候,当游戏开始的时候,我猜length
等于1
,所以length-1
等于0
,循环根本不执行,所以不会出现错误。你知道吗因此,因为我们很快就会修复这个错误,首先将循环更改为
for i in range(length)
。你知道吗至于你的错误,根据你的信息,
path
是这样的:现在让我们假设}'s last argument :
i=1
。做path[i]
你就得到了(4, 1)
。这意味着你要传递给^{但它需要4个整数元组。所以你有两种方法:
只需将它期望的元素逐个传递给它。比如:
这肯定是一个4元组。
另一种更“pythonic”的方法是使用^{} operator to unpack 元组。它看起来是这样的:
为了理解这一点,让我们看一个简单的例子:
再说一次,这确实是一个4元组。
相关问题 更多 >
编程相关推荐