import turtle import time import random delay = 0.1 score = 0 high_score = 0 #Window Screen wn = turtle.Screen() wn.title("SNAKE GAME") wn.bgcolor("black") wn.setup(width=600,height=600) wn.tracer(0) #Head of Snake head = turtle.Turtle() head.shape("square") head.color("green") head.penup() head.goto(0, 0) head.direction = "stop" #Food in the game food = turtle.Turtle() food.speed(0) food.shape("circle") food.color("red") food.penup() food.goto(0, 100) #Score pen = turtle.Turtle() pen.speed(0) pen.shape("turtle") pen.color("white") pen.penup() pen.hideturtle() pen.goto(0, 250) pen.write("Score : 0 High Score : 0", align="center", font=("Times New Roman", 24, "bold")) #Assigning key values def goup(): if head.direction != "down": head.direction = "up" def godown(): if head.direction != "up": head.direction = "down" def goright(): if head.direction != "left": head.direction = "right" def goleft(): if head.direction != "right": head.direction = "left" def move(): if head.direction == "up": y = head.ycor() head.sety(y+20) if head.direction == "down": y = head.ycor() head.sety(y-20) if head.direction == "right": x = head.xcor() head.setx(x+20) if head.direction == "left": x = head.xcor() head.setx(x-20) wn.listen() wn.onkeypress(goup, "Up") wn.onkeypress(godown, "Down") wn.onkeypress(goleft, "Left") wn.onkeypress(goright, "Right") #Main Loop segments = [] while True: wn.update() #for collisions with border if head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290: time.sleep(1) head.goto(0, 0) head.direction = "stop" #hiding segments of snake for segment in segments: segment.goto(1000,1000) #clearing the segments segments.clear() #reset score score = 0 #reset delay delay = 0.1 pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("Times New Roman", 24, "bold")) #checking collision with food if head.distance(food) < 20: x = random.randint(-270, 270) y = random.randint(-270, 270) food.goto(x, y) d = ["red","yellow","blue"] colors = random.choice(d) food.color(colors) e = ["circle","square","triangle"] shapes = random.choice(e) food.shape(shapes) #adding new segment new_segment = turtle.Turtle() new_segment.speed(0) new_segment.color("green") new_segment.shape("square") new_segment.penup() segments.append(new_segment) delay -= 0.001 score += 10 if score>high_score: high_score = score pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("Times New Roman", 24, "bold")) #moving segments in reverse order for i in range(len(segments)-1,0,-1): x = segments[i-1].xcor() y = segments[i-1].ycor() segments[i].goto(x,y) if len(segments) > 0: x = head.xcor() y = head.ycor() segments[0].goto(x, y) move() #Checking collisions with body for segment in segments: if segment.distance(head) < 20: time.sleep(1) head.goto(0,0) head.direction = "stop" #hide segments for segment in segments: segment.goto(1000,1000) segment.clear() score = 0 delay = 0.1 pen.clear() pen.write("Score : {} High Score : {} ".format( score, high_score), align="center", font=("Times New Roman", 24, "bold")) time.sleep(delay) turtle.done()