Python,Pygame,碰撞和字典

时间:2018-12-05 12:15:56

标签: python dictionary pygame collision

我正在使用以下代码尝试使用pygame编写基本冲突。几乎所有内置的碰撞方法都返回python字典,这些字典对我来说是新的。通过使用许多互联网资源,我发现了如何搜索字典,但是该方法返回的字典似乎没有遵循相同的规则,因此我无法搜索碰撞的精灵。一种新的碰撞方法或一种搜索我的词典的方式将非常感激。

setbuf(stdout, NULL );

1 个答案:

答案 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))