diff --git a/GAMES/Snake_Game(Using Turtle)/Readme.md b/GAMES/Snake_Game(Using Turtle)/Readme.md new file mode 100644 index 00000000..699a4f16 --- /dev/null +++ b/GAMES/Snake_Game(Using Turtle)/Readme.md @@ -0,0 +1,9 @@ +# Snake-Game using Turtle +Our favorite snake-game now as a python game. Player has to move the snake so as to it does touch the boundaries and eats food to get bigger. Highest scorer wins. Snake is controlled by the arrow keys. Game is built using the turtle library of python. + +## Setup Instructions +Pre-requisite: Install turtle library +Run snake-game.py on any python compiler. + +# Preview +![Snake-Game](https://user-images.githubusercontent.com/101868279/181879660-334a13c0-f0d8-4b71-b459-e53be9df53c5.png) diff --git a/GAMES/Snake_Game(Using Turtle)/snake-game.py b/GAMES/Snake_Game(Using Turtle)/snake-game.py new file mode 100644 index 00000000..40955d4a --- /dev/null +++ b/GAMES/Snake_Game(Using Turtle)/snake-game.py @@ -0,0 +1,174 @@ +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()