对象遵循坐标(pygame)

时间:2018-04-02 13:33:59

标签: python-3.x pygame

我有一个对象需要遵循self.list中坐标给出的4个点。当我执行代码时,我可以看到检查通过并将搜索坐标扩充到下一个点,但屏幕上的对象只会到达最后一个。

使用Python 3和pygame。

我该如何解决这个问题?

class Enemy:
    def __init__(self, image):
        super().__init__()
        self.image = pygame.image.load(image)
        self.rect = self.image.get_rect()
        self.rect.x = 1280
        self.rect.y = randrange(abs(720 - self.rect.height))                                                
        self.pattern = 2
        self.list = [(1100,360),(900,180),(700,360),(900,540)]
        self.tuple_dest = self.list[0]
        self.i = 0
        self.p=False


    def move(self, player):

        if self.tuple_dest[0] <= self.rect.x:
            self.rect.x -= 1
        elif self.tuple_dest[0] >= self.rect.x:
            self.rect.x += 1
        if self.tuple_dest[1] <= self.rect.y:
            self.rect.y -= 1
        elif self.tuple_dest[1] >= self.rect.y:
            self.rect.y += 1
        #check if arrived
        print(self.p)
        if self.tuple_dest[0] == self.list[self.i][0] and  self.tuple_dest[1] == self.list[self.i][1] and self.p == False:
            self.p = True

        if self.i < (len(self.list)-1) and self.p==True:
                print(self.p)
                self.i += 1
                print(self.i)
                self.tuple_dest = self.list[self.i]
                self.p = False

1 个答案:

答案 0 :(得分:0)

这是有问题的一行:

if self.tuple_dest[0] == self.list[self.i][0] and self.tuple_dest[1] == self.list[self.i][1] and self.p == False:

您只是检查元组中的坐标是否等于self.list中的相同元组,因此条件立即True

您需要检查当前目标坐标是否等于self.rect坐标:

tx, ty = self.tuple_dest
if tx == self.rect.x and ty == self.rect.y and not self.p:
    self.p = True