Python tkinter snake game (не очень опытный с python). Когда предполагается сделать яблоко, на холсте ничего не отображается. Затем, когда вы двигаетесь, тело растет еще через несколько движений. Это количество ходов до роста увеличивается на 1 каждый раз, когда готовится яблоко. Я думаю, что это из-за тегов на блоках змеи, сделанных и удаленных, но я не знаю, как это исправить. Есть ли другая причина и как я могу это исправить?
from tkinter import *
import random
window=Tk()
window.title("snake")
window.geometry("600x600")
can=Canvas(window,height=600,width=600,background="white")
can.pack()
num=1
x3=100
y3=100
decide=3
etch_len=10
etch_wid=10
body_len=2
apple_x1=0
apple_y1=0
colour=["black"]
def move_up(self):
global x3
global y3
global num
global apple_x1
global apple_y1
global body_len
if x3==apple_x1 and y3==apple_y1:
body_len=body_len+1
apple_make(self)
num=num+1
x=str(num)
can.create_line(x3,y3,x3,(y3-etch_len),width=etch_wid,fill=colour[0],tag=x)
y3=y3-etch_len
remove_last(self)
def move_down(self):
global x3
global y3
global num
global apple_x1
global apple_y1
global body_len
if x3==apple_x1 and y3==apple:
body_len=body_len+1
apple_make(self)
num=num+1
x=str(num)
can.create_line(x3,y3,x3,(y3+etch_len),width=etch_wid,fill=colour[0],tag=x)
y3=y3+etch_len
remove_last(self)
def move_left(self):
global x3
global y3
global num
global apple_x1
global apple_y1
global body_len
if x3==apple_x1 and y3==apple_y1:
body_len=body_len+1
apple_make(self)
num=num+1
x=str(num)
can.create_line((x3-etch_wid),y3,x3,y3,width=etch_wid,fill=colour[0],tag=x)
x3=x3-etch_len
remove_last(self)
def move_right(self):
global x3
global y3
global num
global apple_x1
global apple_y1
global body_len
if x3==apple_x1 and y3==apple_y1:
body_len=body_len+1
apple_make(self)
num=num+1
x=str(num)
can.create_line(x3,y3,(x3+etch_wid),y3,width=etch_wid,fill=colour[0],tag=x)
x3=x3+etch_len
remove_last(self)
def remove_last(self):
global num
global body_len
i=num-body_len
x=str(i)
can.delete(x)
def apple_make(self):
global apple_x1
global apple_y1
apple_x1=random.randint(10,590)
apple_y1=10
can.create_line(apple_x1,apple_y1,apple_x1,apple_y1,width=10,fill="red")
window.bind("w",move_up)
window.bind("s",move_down)
window.bind("a",move_left)
window.bind("d",move_right)
window.bind("<Up>",apple_make)
window.mainloop()