I created snake as my first program with GUI, i didn't learned OOB yet, so my program haven't classes. I know that i should use comments but... i am lazy(sorry). Short instruction: l - increase snake speed k - decrease snake speed space - pause/start/restart game it depends a - turn snake left d - turn snake right What can i improve? ```python from tkinter import * from random import randrange root = Tk() root.geometry('604x604+300+100') root.title('Snake') c = Canvas(root,bg='black', width=604, height=604, highlightthickness=0) c.pack() c.create_text(302, 250, font='Terminal 30 bold', text="Press space to start", fill='white') s = [] directions = [[-30,0],[0,-30],[30,0],[0,30]] which_direction = randrange(0,4) ap = [] run = True score = 0 speed = 50 score_board = '' pause_text = '' sp = '' def create_s_square(x, y): square = c.create_rectangle(x, y, x+30, y+30, fill='', outline='white') s.insert(0,square) def create_s(): for x in range(3): create_s_square(x=300,y=300) def s_move(): iswall() if run: for part in range(len(s)-1): c.coords(s[part],c.coords(s[part+1])) c.move(s[len(s)-1],directions[which_direction][0],directions[which_direction][1]) is_snake() if run: aple() c.after(speed*3+70,s_move) def is_snake(): for part in range(len(s)-1): if c.coords(s[part]) == c.coords(s[len(s)-1]): game_over() def iswall(): if (c.coords(s[len(s)-1])[0]+directions[which_direction][0]>=600 or \ c.coords(s[len(s)-1])[1]+directions[which_direction][1]>=600 or \ c.coords(s[len(s)-1])[0]+directions[which_direction][0]<=-30 or \ c.coords(s[len(s)-1])[1]+directions[which_direction][1]<=-30) and run: game_over() def aple(): global score x, y = randrange(0,600,30), randrange(0,600,30) if not ap: apple = c.create_rectangle(x+7,y+7,x+23,y+23, fill='', outline='white') ap.append(apple) ap_co = [c.coords(ap[0])[0]-7,c.coords(ap[0])[1]-7] if c.coords(s[len(s)-1])[:2] == ap_co: create_s_square(c.coords(s[0])[0],c.coords(s[0])[1]) c.delete(ap[0]) del ap[0] score += 1 score_counter() def score_counter(): global score_board c.delete(score_board) score_board = c.create_text(5, 25, font='Terminal 50 bold', text=str(score), fill='white', anchor=W) def game_over(): global run run = False c.create_text(302, 200, font='Terminal 50 bold', text='GAME OVER', fill='white') c.create_text(302, 260, font ='Terminal 25', text="Press space to restart", fill='white') root.bind('<space>', restart) def restart(_): global s, ap, run, which_direction, score root.bind('<space>', pause) c.delete(ALL) score = 0 score_counter() show_speed() s = [] ap = [] which_direction = randrange(0,4) create_s() run = True s_move() def pause(_): global run, pause_text if run == False: run = True c.delete(pause_text) c.after(speed*3+70,s_move) else: run = False pause_text = c.create_text(302, 250, font='Terminal 30 bold', text="Press space to resume", fill='white') def rotate_left(_): global which_direction if run: which_direction += 1 if which_direction == 4: which_direction = 0 def rotate_right(_): global which_direction if run: which_direction -= 1 if which_direction == -1: which_direction = 3 def show_speed(): global sp c.delete(sp) sp = c.create_text(10, 585, font='TimesNewRoman 10', text=f'speed: {100-speed}', fill='white', anchor=W) def increase_speed(_): global speed if speed > 0: speed -= 1 show_speed() def decrease_speed(_): global speed if speed < 100: speed += 1 show_speed() def start(_): global score_board root.bind('<space>', pause) root.bind('k',decrease_speed) root.bind('l',increase_speed) c.delete(ALL) score_counter() show_speed() root.bind('a',rotate_right) root.bind('d',rotate_left) create_s() s_move() root.bind('<space>',start) root.mainloop()