pygame: пытается сохранить последние позиции в массиве - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь сделать «игру со змеями» в пигмеях. Я создал массив, который планировал использовать для хранения вектора, который содержит текущую позицию змеи при каждом запуске функции обновления (я нарежу массив в конце цикла, чтобы он содержал только несколько последних позиций).

Я хотел использовать последнюю позицию змеи в качестве параметра, когда змея в конце концов съедает пищу, и хвостовые блоки могут быть инициализированы и продолжать следовать за змеей в соответствии с ее последней позицией. Однако когда я печатал массив в журнал, он содержал только один и тот же вектор, повторяющийся снова и снова. Я думал, что моя логика была правильной, но я явно где-то ошибся. Любая помощь будет оценена,

Спасибо!

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...