pygame.colliderect移动矩形

时间:2017-01-15 00:36:14

标签: python pygame

我试图用pygame写一个pacman克隆。我有一个幽灵和我们的pacman在迷宫中移动,我试图定义一个功能,可以识别它们是否相撞并改变变量,告诉游戏是否应该继续。

这是功能:

def eat(self, pacman):
    if self.rect.colliderect(pacman):
        return False
    else:
        return True

这是游戏循环:

while (game_on == True):
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()
    pacman.change_direction(tiles)
    ghost.Move(tiles, layout)
    for tile in tiles:
        pacman.collision(tile)
    screen.blit(background, (0,0))
    for tile in tiles:
        tile.draw(screen)
    ghost.draw(screen)
    pacman.draw(screen)
    pygame.display.update()
    game_on = ghost.eat(pacman)

if game_on is False:
    screen.blit(background, (0,0))
    text = font.render('GAME OVER', True, (255,255,0))
    screen.blit(text, SCREEN_SIZE)
    time.sleep(5)

pacman和ghost都是带有self.rect的类,这是一个pygame.Rect 同样检查碰撞的方法适用于鬼和迷宫瓷砖;在这里,他们只是相互通过。

1 个答案:

答案 0 :(得分:1)

您正在为eat()函数提供整个pacman类以进行碰撞检测。请改用pacman.rect

示例:使用game_on = ghost.eat(pacman)

代替game_on = ghost.eat(pacman.rect)