This is my version of the popular snake game.
import pygame import random pygame.init() WIDTH, HEIGHT = 800, 800 WIN = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Function Graph") gridsize = 47 squaresize = 46 cellnum = int(WIDTH/gridsize) green = 0, 255, 0 red = 255, 0, 0 direction = "up" poslist = [] # list of lists x,y poslist.append([int(WIDTH/gridsize/2), int(HEIGHT/gridsize/2)]) applePos = [random.randint(0,cellnum-1), random.randint(0,cellnum-1)] def drawSquareAtGrid(x,y, size, gridsize): pygame.draw.rect(WIN, green, pygame.Rect(x*gridsize+(gridsize - size)/2, y*gridsize+(gridsize- size)/2, size, size)) def drawAppleAtGrid(x,y, size, gridsize): pygame.draw.circle(WIN, red, (x*gridsize+(gridsize - size)/2+size/2, y*gridsize+(gridsize- size)/2+size/2), size/2) drawSquareAtGrid(poslist[0][0], poslist[0][1], squaresize, gridsize) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT and direction != "right": direction = "left" if event.key == pygame.K_RIGHT and direction!= "left": direction = "right" if event.key == pygame.K_UP and direction!= "down": direction = "up" if event.key == pygame.K_DOWN and direction!= "up": direction = "down" if direction== "up": poslist.insert(0, [poslist[0][0], poslist[0][1]-1]) if applePos in poslist: while applePos in poslist: applePos = [random.randint(1, cellnum - 1), random.randint(1, cellnum - 1)] else: del poslist[-1] elif direction== "down": poslist.insert(0, [poslist[0][0], poslist[0][1]+1]) if applePos in poslist: while applePos in poslist: applePos = [random.randint(1, cellnum-1), random.randint(1, cellnum-1)] else: del poslist[-1] elif direction == "right": poslist.insert(0, [poslist[0][0]+1, poslist[0][1]]) if applePos in poslist: while applePos in poslist: applePos = [random.randint(1, cellnum-1), random.randint(1, cellnum-1)] else: del poslist[-1] elif direction == "left": poslist.insert(0, [poslist[0][0]-1, poslist[0][1]]) if applePos in poslist: while applePos in poslist: applePos = [random.randint(1, cellnum - 1), random.randint(1, cellnum - 1)] else: del poslist[-1] # check if list has duplicates dups = {tuple(x) for x in poslist if poslist.count(x) > 1} if len(dups) !=0: pygame.quit() #if out of bounds for i in poslist: print(i) if i[0] == -1 or i[0] == cellnum or i[1] == -1 or i[1] == cellnum: pygame.quit() WIN.fill((0, 0, 0)) for i in range(0, len(poslist)): drawSquareAtGrid(poslist[i][0], poslist[i][1], squaresize, gridsize) drawAppleAtGrid(applePos[0], applePos[1], squaresize, gridsize) pygame.display.update() pygame.time.delay(140) pygame.quit()