我有一个对象需要遵循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
答案 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