Я пытаюсь сделать «игру со змеями» в пигмеях. Я создал массив, который планировал использовать для хранения вектора, который содержит текущую позицию змеи при каждом запуске функции обновления (я нарежу массив в конце цикла, чтобы он содержал только несколько последних позиций).
Я хотел использовать последнюю позицию змеи в качестве параметра, когда змея в конце концов съедает пищу, и хвостовые блоки могут быть инициализированы и продолжать следовать за змеей в соответствии с ее последней позицией. Однако когда я печатал массив в журнал, он содержал только один и тот же вектор, повторяющийся снова и снова. Я думал, что моя логика была правильной, но я явно где-то ошибся. Любая помощь будет оценена,
Спасибо!
class Snake:
def __init__(self,game):
pygame.init()
self.game = game
self.image = pygame.Surface((20,20))
self.image.fill(GREEN)
self.rect = self.image.get_rect()
self.speed = 20
self.velocity = vec(0,0)
self.position = vec(0,0)
self.move_log = []
self.right,self.left,self.down,self.up = False,False,False,False
self.tail = []
def update(self):
key = pygame.key.get_pressed()
if key[pygame.K_RIGHT] and not self.left:
self.right = True
self.left,self.down,self.up = False,False,False
self.velocity.x = self.speed
elif key[pygame.K_LEFT] and not self.right:
self.left = True
self.right,self.down,self.up = False,False,False
self.velocity.x = -self.speed
elif key[pygame.K_DOWN] and not self.up:
self.down = True
self.left,self.right,self.up = False,False,False
self.velocity.y = self.speed
elif key[pygame.K_UP] and not self.down:
self.up = True
self.left,self.down,self.right = False,False,False
self.velocity.y = -self.speed
if self.right or self.left:
self.velocity.y = 0
elif self.down or self.up:
self.velocity.x = 0
self.eat()
current_position = self.position
self.position += self.velocity
self.move_log.append(current_position)
self.rect.x,self.rect.y = self.position