如何使用pygame创建路径查找

时间:2018-03-11 14:51:16

标签: python pygame path-finding

目前在高中的最后一年,我想用pygame在python中制作视频游戏。但是我有一个问题:如何通过跟随我的道路让怪物(精灵)从A点到达B点。 我没有任何代码可以显示,因为我不知道该怎么做。

我希望你能帮助我< 3 My map (in brown the road) 有试用代码

class Niveau_1_Monstres(pygame.sprite.Sprite):
    def __init__(self,image,position):
        super().__init__()
        self.image = pygame.image.load(image).convert_alpha()
        self.rect = self.image.get_rect()
        self.rect.topleft = position
        self.direction = 'droite' ## La direction

    def update(self):
        pygame.time.delay(5)#mettre 100
        #définition de la direction
        if self.rect.colliderect(lv1.rectetape1) == True:
            self.direction = 'haut'
        elif self.rect.colliderect(lv1.rectetape2) == True:
            self.direction = 'droite'   
        elif self.rect.colliderect(lv1.rectetape3) == True:
            self.direction = 'bas'     
        elif self.rect.colliderect(lv1.rectetape4) == True:
            self.direction = 'droite'      
        elif self.rect.colliderect(lv1.rectetape5) == True:
            self.direction = 'haut'    
        elif self.rect.colliderect(lv1.rectetape6) == True:
            self.direction = 'droite' 
        elif self.rect.colliderect(lv1.rectetape7) == True:
            self.direction = 'bas'
        elif self.rect.colliderect(lv1.rectetape8) == True:
            self.direction = 'gauche'   
        elif self.rect.colliderect(lv1.rectetape9) == True:
            self.direction = 'haut' 
        elif self.rect.colliderect(lv1.rectetape10) == True:
            self.direction = 'gauche'  

        #Mouvelent en fonction de la direction
        if self.direction == 'haut':
            self.rect.y = self.rect.y-1
        elif self.direction == 'bas':
            self.rect.y = self.rect.y+1
        elif self.direction == 'gauche':
            self.rect.x = self.rect.x-1
        elif self.direction == 'droite':
            self.rect.x = self.rect.x+1   

1 个答案:

答案 0 :(得分:0)

可以将道路可视化为连接在一起的线列表。您需要做的就是

a)存储每行的起点和终点坐标

[ [(x11, y11), (x12, y12)], [(x21, y21), (x22, y22)], ... ]

b)让你的精灵从每个起始坐标顺序移动到最后一个坐标。 while循环中的一些简单逻辑就可以实现。您可以将代码基于此basic example