Баг движения в змейке в консоли. python

Я решил попробовать сделать змейку в консоли на python, но у меня появился баг который я не могу исправить:

Я пока-что сделал управление на клавишах w и d, вроде работает, но когда после d или w нажимаешь другую клавишу, клавиши совмещаются и персонаж начинает размножаться и заполнять всю карту. Помогите исправить.

Код я уменьшил, хотя всё равно код не самый маленький. Код:

import keyboard
import time
from threading import Thread
from os import system

death = 'no'
movement = 'none'

f = ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ]
e = ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ]
d = ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ]
c = ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ]
b = ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ]
a = ['.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', ]

moving = 6
c[moving] = '▬'
print('')
output1 = ''.join(f)
print(output1)
time.sleep(.3)
output2 = ''.join(e)
print(output2)
time.sleep(.3)
output3 = ''.join(d)
print(output3)
time.sleep(.3)
output4 = ''.join(c)
print(output4)
time.sleep(.3)
output5 = ''.join(b)
print(output5)
time.sleep(.3)
output6 = ''.join(a)
print(output6)
print('move with w, a, s, d')


def up():
    keyboard.wait('w')
    movement = 'up'
    while movement == 'up':
        if movement == 'up':
            if '▬' in a and movement == 'up':
                time.sleep(.6)
                a[moving] = '.'
                b[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in b and movement == 'up':
                time.sleep(.6)
                b[moving] = '.'
                c[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in c and movement == 'up':
                time.sleep(.6)
                c[moving] = '.'
                d[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in d and movement == 'up':
                time.sleep(.6)
                d[moving] = '.'
                e[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in e and movement == 'up':
                time.sleep(.6)
                e[moving] = '.'
                f[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in f and movement == 'up':
                time.sleep(.6)
                f[moving] = '.'
                a[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in a and movement != 'up':
                a[moving] = '.'
            if '▬' in b and movement != 'up':
                b[moving] = '.'
            if '▬' in c and movement != 'up':
                c[moving] = '.'
            if '▬' in d and movement != 'up':
                d[moving] = '.'
            if '▬' in e and movement != 'up':
                e[moving] = '.'
            if '▬' in f and movement != 'up':
                f[moving] = '.'


def right():
    global moving
    keyboard.wait('d')
    movement = 'right'
    while movement == 'right':
        if movement == 'right':
            if '▬' in a and movement == 'right':
                time.sleep(.6)
                a[moving] = '.'
                if moving != 14:
                    moving += 1
                else:
                    moving = 0
                a[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in b and movement == 'right':
                time.sleep(.6)
                b[moving] = '.'
                if moving != 14:
                    moving += 1
                else:
                    moving = 0
                b[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in c and movement == 'right':
                time.sleep(.6)
                c[moving] = '.'
                if moving != 14:
                    moving += 1
                else:
                    moving = 0
                c[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in d and movement == 'right':
                time.sleep(.6)
                d[moving] = '.'
                if moving != 14:
                    moving += 1
                else:
                    moving = 0
                d[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in e and movement == 'right':
                time.sleep(.6)
                e[moving] = '.'
                if moving != 14:
                    moving += 1
                else:
                    moving = 0
                e[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in f and movement == 'right':
                time.sleep(.6)
                f[moving] = '.'
                if moving != 14:
                    moving += 1
                else:
                    moving = 0
                f[moving] = '▬'
                system('cls')
                print('')
                output1 = ''.join(f)
                print(output1)
                output2 = ''.join(e)
                print(output2)
                output3 = ''.join(d)
                print(output3)
                output4 = ''.join(c)
                print(output4)
                output5 = ''.join(b)
                print(output5)
                output6 = ''.join(a)
                print(output6)
                print('move with w, a, s, d')
            if '▬' in a and movement != 'right':
                a[moving] = '.'
            if '▬' in b and movement != 'right':
                b[moving] = '.'
            if '▬' in c and movement != 'right':
                c[moving] = '.'
            if '▬' in d and movement != 'right':
                d[moving] = '.'
            if '▬' in e and movement != 'right':
                e[moving] = '.'
            if '▬' in f and movement != 'right':
                f[moving] = '.'


def upstart():
    while death == 'no':
        up()


def rightstart():
    while death == 'no':
        right()


Thread(target=upstart).start()
Thread(target=rightstart).start()

Ответы (0 шт):