如何在用pygame制作的蛇游戏中检测蛇与自身的碰撞

时间:2019-02-14 01:56:29

标签: python class pygame

我正在用pygame在python中制作蛇游戏,但在获取程序来检测与自身的冲突方面遇到了麻烦...

我试图将其设置为可以检测Morrison.head是否可以检测到Morrison.body的位置,但这给我一个错误

p_hat

我希望程序在碰到自己的身体时会检测到碰撞,但只会返回错误

2 个答案:

答案 0 :(得分:0)

如何使用pygame spritecollide函数?

# In MorrisonSprite class

def hitMyself( self ):
    hit_by = pygame.sprite.spritecollide( self, SPRITES, False )
    # hit_by includes the head too (always), so just check the count
    if ( len( hit_by ) > 1 ):
        print("HIT")  # debug feedback
        return True
    else:
        return False

编辑: 将此功能整合到主循环中似乎可以跟踪匹配。

# Main loop
while not done:
    ...
    # Did the snake hit it's tail
    if ( Morrison.hitMyself() == True ):
        done = True

答案 1 :(得分:0)

为什么不保持简单?假设

class Snake:
    self.snake =  [(200, 200), (210, 200), (220, 200), (230, 200), (240, 200)]    

    def self_collision(self):
        """
        Return True if snake's head is in itself
        """
        return self.snake[0] in self.snake[1:]