Files
awesome-for-beginners/Snake/snake_game.py
Krunal Gangadhar Kharat 975c41012c Create snake_game.py
90's most played mobile game i.e Snake game using Tkinter python for beginners also very easy to understand! Its fun to create and also to play!
you will learn how logic is applied in coding, and also very easy to learn python
2022-10-05 02:54:21 +05:30

135 lines
2.9 KiB
Python

import turtle as t
import random
w = 500 # Width of box
h = 500 # Height of box
food_size = 10 # Size of food
delay = 100 # in millisecond
# Values by which snake will move in direction when given direction
offsets = {
"up": (0, 20),
"down": (0,-20),
"left": (-20,0),
"right": (20,0)
}
global SCORE
SCORE = 0
# Default postion of game scene
def reset():
global snake, snake_dir, food_position, pen
snake = [[0,0],[0,20],[0,40],[0,60],[0,80]]
snake_dir = "up" #default snake direction
food_position = get_random_food_position()
food.goto(food_position) # render food on scene
move_snake()
def move_snake():
global snake_dir,SCORE
new_head = snake[-1].copy()
new_head[0] = snake[-1][0] + offsets[snake_dir][0]
new_head[1] = snake[-1][1] + offsets[snake_dir][1]
if new_head in snake[:-1]:
print(SCORE)
reset()
else:
snake.append(new_head)
if not food_collision():
snake.pop(0)
if snake[-1][0] > w / 2:
snake[-1][0] -= w
elif snake[-1][0] < - w / 2:
snake[-1][0] += w
elif snake[-1][1] > h / 2:
snake[-1][1] -= h
elif snake[-1][1] < -h / 2:
snake[-1][1] += h
pen.clearstamps()
for segment in snake:
pen.goto(segment[0], segment[1])
pen.stamp()
screen.update()
t.ontimer(move_snake, delay)
def food_collision():
global food_position, SCORE
if get_distance(snake[-1], food_position) < 20:
SCORE += 10
food_position = get_random_food_position()
food.goto(food_position)
return True
return False
def get_random_food_position():
x = random.randint(- w / 2 + food_size, w / 2 - food_size)
y = random.randint(- h / 2 + food_size, h / 2 - food_size)
return (x, y)
def get_distance(pos1, pos2):
x1, y1 = pos1
x2, y2 = pos2
distance = ((y2 - y1) ** 2 + (x2 - x1) ** 2) ** 0.5
return distance
# Control
def go_up():
global snake_dir
if snake_dir != "down":
snake_dir = "up"
def go_down():
global snake_dir
if snake_dir != "up":
snake_dir = "down"
def go_left():
global snake_dir
if snake_dir != "right":
snake_dir = "left"
def go_right():
global snake_dir
if snake_dir != "left":
snake_dir = "right"
#define screen setup
screen = t.Screen()
screen.setup(w, h)
screen.title("Snake Game")
screen.bgcolor("lightgrey")
screen.tracer(0)
#define snake setup
pen = t.Turtle("square")
pen.penup()
#define food setup
food = t.Turtle()
food.shape("circle")
food.color("red")
food.shapesize(food_size / 20)
food.penup()
#define control setup
screen.listen()
screen.onkey(go_up, "Up")
screen.onkey(go_right, "Right")
screen.onkey(go_down, "Down")
screen.onkey(go_left, "Left")
reset()
t.done()