我试图用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 同样检查碰撞的方法适用于鬼和迷宫瓷砖;在这里,他们只是相互通过。
答案 0 :(得分:1)
您正在为eat()
函数提供整个pacman
类以进行碰撞检测。请改用pacman.rect
。
示例:使用game_on = ghost.eat(pacman)
。
game_on = ghost.eat(pacman.rect)