我正在使用以下代码尝试使用pygame编写基本冲突。几乎所有内置的碰撞方法都返回python字典,这些字典对我来说是新的。通过使用许多互联网资源,我发现了如何搜索字典,但是该方法返回的字典似乎没有遵循相同的规则,因此我无法搜索碰撞的精灵。一种新的碰撞方法或一种搜索我的词典的方式将非常感激。
setbuf(stdout, NULL );
答案 0 :(得分:0)
keys = []
#Getting the keys which are pressed down
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
keys.append(event)
#Converting the array to a string so it can be searched
keys=str(keys)
#Using the keys numbern value to determine if it has been pressed
#Left arrow = 276
if "276" in keys:
char.rect.x -= 40
#Right arrow = 275
elif "275" in keys:
char.rect.x += 40
counter += 1
#Space = 32
if "32" in keys:
counter = 0
#Removing orignal sprite and then changing it to the attack sprite
all_sprites_list.remove(char)
char = Sprites(30,20,"Crab_attack.fw.png")
char.rect.y = 150
char.rect.x = charX
all_sprites_list.add(char)
attack = True
我不知道您为什么要尝试以最复杂的方式进行操作,只需使用
#Getting the keys which are pressed down
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
char.rect.x -= 40
if event.key == pygame.K_RIGHT:
char.rect.x += 40
if event.key == pygame.K_SPACE:
counter = 0
#Removing orignal sprite and then changing it to the attack sprite
all_sprites_list.remove(char)
char = Sprites(30,20,"Crab_attack.fw.png")
char.rect.y = 150
char.rect.x = charX
all_sprites_list.add(char)
attack = True
counter += 1
但是该方法返回的字典似乎没有遵循相同的规则
groupcollide
返回的字典的工作方式与其他所有字典相同。我不知道你在说什么规则。如果您无法确定确切的收益,只需看一下文档即可:
group1中的每个Sprite都添加到返回字典中。每个项目的值是group2中相交的Sprite列表。
并且返回值是一个简单的字典,因此您可以执行以下操作:
for sprite, others in collisions.items():
for other in others:
print(str(sprite) + ' collides with ' + str(other))