Я пытаюсь сделать игру со змеями, используя pygame в python. переменная body
содержит координаты тела, включая голову, на каждой итерации голова получает новую координату, а следующая получает предыдущее местоположение головы и так далее. функция change_angle
дает ей новую координату. поэтому я попытался сохранить значение head во временной переменной prev_head
, но ее значение меняется с изменением фактической переменной
, сейчас я использую одно присваивание после его исправления, я буду использовать l oop для всей длины тела
prev_head = None
body = [[30, 55], [30, 56], [30, 57]]
# initailising pygame display
gameDisplay = pygame.display.set_mode((dispaly_width, display_height))
pygame.display.set_caption('Snake Game')
clock = pygame.time.Clock()
# functions
def square(snake):
head = snake[0]
snake_queue = snake[1:]
size = 10
pygame.draw.rect(gameDisplay, green,
(head[0]*size, head[1]*size, size, size))
for i in range(len(snake_queue)):
pygame.draw.rect(gameDisplay, white,
(snake_queue[i][0]*size, snake_queue[i][1]*size, size, size))
def change_angle(body, cor, direction):
body[0][cor] = body[0][cor]+(direction)
return body
def game_loop():
global body, prev_head
change = (1, -1)
while True:
time.sleep(lvl[2])
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
if change != (0, 1):
change = (0, -1)
elif event.key == pygame.K_RIGHT:
if change != (0, -1):
change = (0, 1)
elif event.key == pygame.K_UP:
if change != (1, 1):
change = (1, -1)
elif event.key == pygame.K_DOWN:
if change != (1, -1):
change = (1, 1)
gameDisplay.fill(back)
prev_head = body[0]
body = change_angle(body, change[0], change[1])
square(body)
pygame.display.update()
game_loop()