我正在尝试做一个小游戏,我在返校节的时候遇到了一个问题。真的,我要做的就是把这个列表放到一张图片上。你知道吗
我的列表由砖头。直走()
# myList = myCollider(myList, ballRect)
for i in range(len(myList)):
if(ballRect.colliderect(myList[i])):
print("ok")
del myList[i]
#for i in range(0, len(myList)):
# screen.blit(brick, myList[i])
for i in range(len(myList)):
screen.blit(brick, myList[i])
screen.blit(platform, platformRectangle)
screen.blit(ball, ballRect)
另外,在我添加这个之前,所有的代码都是有效的
del myList[i]
如果我删除它,代码就会工作,并在发生冲突时激活(如我所愿),但由于某些原因,这似乎不起作用。你知道吗
为什么它不在我的名单上?你知道吗
此外,在定义的碰撞发生并激活del myList[i]之前,游戏一直工作。你知道吗
完全错误:
Traceback (most recent call last):
File "C:\Users\Jackson\source\repos\C200-Breakout-Team26\JackCrap\EXT.py", line 152, in <module>
Play(400, 400, black, 1)
File "C:\Users\Jackson\source\repos\C200-Breakout-Team26\JackCrap\EXT.py", line 129, in Play
if(ballRect.colliderect(myList[i])):
IndexError: list index out of range
如果您想从列表中删除元素,那么您应该使用
del myList[i]
,但是在for
循环中使用它会产生问题,所以最好为您必须保留的元素创建列表。你知道吗编辑:使用列表理解删除元素
编辑:见文档Sprite
如果将元素保留在pygame.sprite.Group()中,那么可以使用pygame.sprite.spritecollide检查球和所有砖块之间的碰撞,并自动移除砖块。你知道吗
但是
bricks
和ball
必须是具有self.rect
的类相关问题 更多 >
编程相关推荐