-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsnake.py
More file actions
138 lines (110 loc) · 3.72 KB
/
snake.py
File metadata and controls
138 lines (110 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import pygame
import random
import time
# Initialize Pygame
pygame.init()
# Define colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (213, 50, 80)
GREEN = (0, 255, 0)
BLUE = (50, 153, 213)
# Screen dimensions
WIDTH = 600
HEIGHT = 400
BLOCK_SIZE = 10
# Set up the screen
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('Snake Game')
# Set up the clock
clock = pygame.time.Clock()
# Font for displaying score
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)
# Function to display score
def Your_score(score):
value = score_font.render("Your Score: " + str(score), True, WHITE)
screen.blit(value, [0, 0])
# Function to draw the snake
def draw_snake(snake_block, snake_list):
for x in snake_list:
pygame.draw.rect(screen, GREEN, [x[0], x[1], snake_block, snake_block])
# Function to display a message
def message(msg, color):
mesg = font_style.render(msg, True, color)
screen.blit(mesg, [WIDTH / 6, HEIGHT / 3])
# Main game loop
def gameLoop():
game_over = False
game_close = False
# Starting position of the snake
x1 = WIDTH / 2
y1 = HEIGHT / 2
# Change in snake's position
x1_change = 0
y1_change = 0
# Snake body (list of x, y coordinates)
snake_List = []
Length_of_snake = 1
# Food position
foodx = round(random.randrange(0, WIDTH - BLOCK_SIZE) / 10.0) * 10.0
foody = round(random.randrange(0, HEIGHT - BLOCK_SIZE) / 10.0) * 10.0
# Game loop
while not game_over:
while game_close:
screen.fill(BLUE)
message("You Lost! Press C-Continue or Q-Quit", RED)
Your_score(Length_of_snake - 1)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
gameLoop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -BLOCK_SIZE
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = BLOCK_SIZE
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -BLOCK_SIZE
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = BLOCK_SIZE
x1_change = 0
# Check if the snake hits the boundary
if x1 >= WIDTH or x1 < 0 or y1 >= HEIGHT or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
screen.fill(BLUE)
pygame.draw.rect(screen, RED, [foodx, foody, BLOCK_SIZE, BLOCK_SIZE])
snake_Head = []
snake_Head.append(x1)
snake_Head.append(y1)
snake_List.append(snake_Head)
if len(snake_List) > Length_of_snake:
del snake_List[0]
for x in snake_List[:-1]:
if x == snake_Head:
game_close = True
draw_snake(BLOCK_SIZE, snake_List)
Your_score(Length_of_snake - 1)
pygame.display.update()
# Check if the snake ate the food
if x1 == foodx and y1 == foody:
foodx = round(random.randrange(0, WIDTH - BLOCK_SIZE) / 10.0) * 10.0
foody = round(random.randrange(0, HEIGHT - BLOCK_SIZE) / 10.0) * 10.0
Length_of_snake += 1
clock.tick(15)
pygame.quit()
quit()
# Start the game
gameLoop()