-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Commit for Script, Splash Screen and Icon for an executable later using Pyinstaller
- Loading branch information
Showing
3 changed files
with
147 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
import pygame | ||
import time | ||
import random | ||
import sys | ||
|
||
try: | ||
# Close the splash screen. | ||
import pyi_splash | ||
pyi_splash.close() | ||
except ImportError: | ||
# Otherwise do nothing. | ||
pass | ||
|
||
snake_speed = 15 | ||
|
||
# Window size | ||
window_x = 720 | ||
window_y = 480 | ||
|
||
# defining colors | ||
black = pygame.Color(0, 0, 0) | ||
white = pygame.Color(255, 255, 255) | ||
red = pygame.Color(255, 0, 0) | ||
green = pygame.Color(0, 255, 0) | ||
blue = pygame.Color(0, 0, 255) | ||
|
||
# Initialising pygame | ||
pygame.init() | ||
|
||
# Initialise game window | ||
pygame.display.set_caption('Snake Game') | ||
game_window = pygame.display.set_mode((window_x, window_y)) | ||
|
||
# FPS (frames per second) controller | ||
fps = pygame.time.Clock() | ||
|
||
# defining snake default position | ||
snake_position = [100, 50] | ||
|
||
# defining first 4 blocks of snake body | ||
snake_body = [[100, 50], | ||
[90, 50], | ||
[80, 50], | ||
[70, 50] | ||
] | ||
# fruit position | ||
fruit_position = [random.randrange(1, (window_x//10)) * 10, | ||
random.randrange(1, (window_y//10)) * 10] | ||
fruit_spawn = True | ||
|
||
# setting default snake direction towards right | ||
direction = 'RIGHT' | ||
change_to = direction | ||
|
||
# initial score | ||
score = 0 | ||
|
||
# displaying Score function | ||
def show_score(choice, color, font, size): | ||
score_font = pygame.font.SysFont(font, size) | ||
score_surface = score_font.render('Score : ' + str(score), True, color) | ||
score_rect = score_surface.get_rect() | ||
game_window.blit(score_surface, score_rect) | ||
|
||
# game over function | ||
def game_over(): | ||
my_font = pygame.font.SysFont('times new roman', 50) | ||
game_over_surface = my_font.render('Your Score is : ' + str(score), True, red) | ||
game_over_rect = game_over_surface.get_rect() | ||
game_over_rect.midtop = (window_x/2, window_y/4) | ||
game_window.blit(game_over_surface, game_over_rect) | ||
pygame.display.flip() | ||
time.sleep(2) | ||
pygame.quit() | ||
sys.exit() | ||
|
||
|
||
# main function | ||
while True: | ||
# handling key events | ||
for event in pygame.event.get(): | ||
if event.type == pygame.KEYDOWN: | ||
if event.key == pygame.K_UP: | ||
change_to = 'UP' | ||
if event.key == pygame.K_DOWN: | ||
change_to = 'DOWN' | ||
if event.key == pygame.K_LEFT: | ||
change_to = 'LEFT' | ||
if event.key == pygame.K_RIGHT: | ||
change_to = 'RIGHT' | ||
|
||
# Making sure the snake cannot move in the opposite direction instantaneously | ||
if change_to == 'UP' and direction != 'DOWN': | ||
direction = 'UP' | ||
if change_to == 'DOWN' and direction != 'UP': | ||
direction = 'DOWN' | ||
if change_to == 'LEFT' and direction != 'RIGHT': | ||
direction = 'LEFT' | ||
if change_to == 'RIGHT' and direction != 'LEFT': | ||
direction = 'RIGHT' | ||
|
||
# Moving the snake | ||
if direction == 'UP': | ||
snake_position[1] -= 10 | ||
if direction == 'DOWN': | ||
snake_position[1] += 10 | ||
if direction == 'LEFT': | ||
snake_position[0] -= 10 | ||
if direction == 'RIGHT': | ||
snake_position[0] += 10 | ||
|
||
# Snake body growing mechanism | ||
snake_body.insert(0, list(snake_position)) | ||
if snake_position[0] == fruit_position[0] and snake_position[1] == fruit_position[1]: | ||
score += 1 | ||
fruit_spawn = False | ||
else: | ||
snake_body.pop() | ||
|
||
if not fruit_spawn: | ||
fruit_position = [random.randrange(1, (window_x//10)) * 10, | ||
random.randrange(1, (window_y//10)) * 10] | ||
|
||
fruit_spawn = True | ||
game_window.fill(black) | ||
|
||
for pos in snake_body: | ||
pygame.draw.rect(game_window, green, | ||
pygame.Rect(pos[0], pos[1], 10, 10)) | ||
pygame.draw.rect(game_window, red, | ||
pygame.Rect(fruit_position[0], | ||
fruit_position[1], 10, 10)) | ||
|
||
# Game Over conditions | ||
if snake_position[0] < 0 or snake_position[0] > window_x-10: | ||
game_over() | ||
if snake_position[1] < 0 or snake_position[1] > window_y-10: | ||
game_over() | ||
|
||
for block in snake_body[1:]: | ||
if snake_position[0] == block[0] and snake_position[1] == block[1]: | ||
game_over() | ||
|
||
show_score(1, white, 'times new roman', 20) | ||
|
||
pygame.display.update() | ||
fps.tick(snake_speed) |