【发布时间】:2014-06-12 10:22:45
【问题描述】:
好的,这是我第一次访问这个网站,所以我希望我做对了。
我正在 Pygame 中制作一个蛇游戏,用于学校评估任务,但我遇到了一个问题。我无法让蛇的身体部位消失。
目前,这是生成身体部位的方式:
def more_body(bodyparts, x, y, z):
body = pygame.sprite.Sprite()
body.image = pygame.image.load('body.png')
body.rect = head.image.get_rect()
body.rect.right = x
body.rect.top = y
body.timeleft = z
bodyparts.add(body)
正文删除检查的工作原理是这样的。
for x in bodyparts:
body.timeleft -= 1
if body.timeleft == 0:
body = False
很明显,身体部位是身体部位的分组。这是一个 OrderedUpdates 精灵组。
问题是代码似乎不喜欢这个解决方案。目前,该错误被列为“NameError: name 'body' is not defined”。如果我尝试扩展检查以引用 bodyparts.body.timeleft 而不是 body.timeleft,我会得到“AttributeError: 'OrderedUpdates' object has no attribute 'body'”。
我想出了第二个解决方案。由于 bodyparts 是一个 OrderedUpdates 组,因此应该可以根据它们在列表中的位置来选择和删除特定的部分。因此,计划的步骤如下:
- 将 len(bodyparts) 与之前设置的变量进行比较。
- 如果长度超过了蛇的长度,请删除添加到 bodyparts 的第一个项目 - 我不确定这是第一个还是最后一个。
我的主要问题是:
这是一个可行的解决方案,您能否提供代码来实现它?我可以将它视为一个列表,然后拆分它以便删除 bodyparts 组的前面(或后面,取决于它们的添加方式)吗?您能提供的任何解决方案都会有很大帮助。
【问题讨论】: