# Built Snake Game in Python Using Turtle

We all love to play a snake game on mobile phones whether it is a keypad or an android. As a programmer and enthusiast towards technology, can we think of how all these games are being developed? In this tutorial, we will explore a simple python application for developing a very popular snake game using the turtle library.

Turtle is a simple toolkit that provides an enjoyable and straightforward way to draw pictures on windows and screens. If you do not know the basics of the turtle then please first have a look at the Python Turtle graphics tutorial to understand what functions did turtle provides and how it works. We have developed amazing star and heart shape patterns using the turtle library.

let's get started with the snake game

### Import the libraries

The first is to import all the necessary libraries we are required and define the variables with which we are working.
so we will import turtle library for creating window and snake and also for moving snake in all four directions. we will also be requiring a random module to design the food of the snake to place it at a random position on the window and time module for the delay.

### Set the Screen

Now we have to create a window first and set all the screen configurations like title, background color, height, and width of the screen we want.

we have to create the head of the snake or initial single square snake with zero scores on the screen. And as it will start eating food the length of a snake will keep on increasing. so let's first create the head of a snake.

### Snake Food

Now, we have to create food for the snake and when we will implement the function to move the snake then, we will place this food at a random position using the turtle goto method.

### Designing a Score-Board

As the player continues to play a snake game we will be maintaining a score of how many food bytes the snake has eaten.

### Functions

we are going to develop the functions for the snake movement. first, we will set the movement of a snake to move it up, down, left, and right.

### Snake Movement

Now, we will define the function to move the snake in the particular direction x or y with a particular distance.

#### Set the Keyboard bindings

we will set the keyboard keys for the movement of the snake in all 4 directions. we will use listen() method to make the scene capable to listen to the bindings we apply. we will use w, a, s and, d keys to move the snake.

### Mainloop

Now, we will be developing the main function from where the application will start running the code after building the snake, food, score-board.
In this section, we will be defining the loops to place food at a random position. And the movement of a snake and if snake eats the food successfully then we have to increase the score and add that food at the back of snake and increase its length.

Then after increasing the length we have to move snake and food as well on screen.
we have to also define the function for a collision of a snake with a border and with its body itself and update the high score on the scoreboard.

This is the main part of the complete application, from where the complete game will be in control.

#### 1) Check the collision with the border

The complete code under this complete section will be in an infinite loop because until the snake collides with itself or border game will continue. The first is to check any collision with the border in which we defined the distance in the x and y-axis which is in pixels according to the height or width of the window we have set.

Turtle takes the movement with distance in pixel only. so if the snake crosses that particular distance then we will stop its movement and again set it back at center and update the score as 0 and high score whatever he has scored. after a collision to update all the values we have given a delay of 0.1 seconds.

#### 2) Check for collision with food

If a snake eats the food successfully, then we have to increase its length and add another food at a random position to the window for which we will use the random module to take any random position in the x and y-axis. After this, we have to update the increased score to the scoreboard. remember that the code is under the infinite while loop only.

#### 3) move the segments in reverse order

The segment is an empty list that stores the food of the snake means as we increase the length of the snake, one new segment is created and added at its back and to move that segment with a snake, now we have to move them in reverse order. still, we are in an infinite while loop.

#### 4) Check the collision with the body

The procedure we have to check, that if the snakehead has collided with its increased length itself then we have to stop the game and update the scores. for this we will use the distance of head with segment means if the head is at the distance less than segment then, it collides and update the score.

That's the end of the implementation part. now you can run the program from the terminal or python ide you are using. And the final output you will get something like this.

The complete source code of the project is available here: GitHub

## Summary

Hurray!. That's an amazing project using python turtle. I hope you get each and every step. If you get some errors or have some queries then please post them in the comment section below. I will be way happier to help you out and learn something from your side too.
Thank You!..