snake game

import pygame
import random
import os
pygame.init()
pygame.mixer.init()

#colors
white=(255,255,255)
red=(255,0,0)
black=(0,0,0)

#game window
screen_w=500
screen_h=500
gamewindow=pygame.display.set_mode((screen_w,screen_h))
pygame.display.set_caption("snake game")
clock=pygame.time.Clock()

#background
image=pygame.image.load("background.jpg")
image=pygame.transform.scale(image,(screen_w,screen_h)).convert_alpha()

#text on screen
font=pygame.font.SysFont(None,30)
def screentext(text,color,x,y):
textonscreen=font.render(text,True,color)
gamewindow.blit(textonscreen,[x,y])

#snake length increment(plotting snake)
def plotsnake(gamewindow,color,snk_list,snake_size):
for x,y in snk_list:
pygame.draw.rect(gamewindow, color, [x, y, snake_size, snake_size])

def welcome():
pygame.mixer.music.load("snakeGameback.mp3")
pygame.mixer.music.set_volume(0.7)
pygame.mixer.music.play()
fps=30
game_e = False
while not game_e:
gamewindow.fill(white)
screentext("Welcome To Snake Game", black, 130, 150)
screentext("press Enter To Start The Game", black,110,180)
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_e=True
if event.type == pygame.KEYDOWN:
if event.key==pygame.K_RETURN:
pygame.mixer.music.load("snakeGameback.mp3")
pygame.mixer.music.set_volume(0.7)
pygame.mixer.music.pause()
gameloop()
pygame.display.flip()
clock.tick(fps)

#game loop
def gameloop():
# game specific variables
game_o = False
game_e = False
snake_x = 1
snake_y = 40
velocity_x = 0
velocity_y = 0
snake_size = 15
init_velocity = 5
food_x = random.randint(10, screen_w / 2)
food_y = random.randint(10, screen_h / 2)
food_size = 15
score = 0
fps = 30
snk_list = []
snk_length = 0
if (not os.path.exists("highscore.txt")):
with open("highscore.txt", "w") as f:
f.write("0")
with open("highscore.txt", "r") as f:
highscore = f.read()

gamewindow.fill(white)
while not game_e:

if game_o==True:
with open("highscore.txt", "w") as f:
f.write(str(highscore))
gamewindow.fill(white)
screentext("Game Over!press enter to restart", red, 90,190)
screentext("your score: " + str(score), black, 180, 220)
for event in pygame.event.get():
if event.type==pygame.QUIT:
game_e = True
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_RETURN:
welcome()
else:
for event in pygame.event.get():
if event.type==pygame.QUIT:
game_e = True
if event.type==pygame.KEYDOWN:
if event.key==pygame.K_RIGHT:
velocity_x=init_velocity
velocity_y=0
if event.key==pygame.K_LEFT:
velocity_x = -init_velocity
velocity_y=0
if event.key==pygame.K_UP:
velocity_y = -init_velocity
velocity_x = 0
if event.key==pygame.K_DOWN:
velocity_y = init_velocity
velocity_x = 0
if abs(snake_x-food_x)<6 and abs(snake_y-food_y)<6:
pygame.mixer.music.load("snakeeat.mp3")
pygame.mixer.music.set_volume(0.7)
pygame.mixer.music.play()
score+=10
food_x = random.randint(10, screen_w/2)
food_y = random.randint(10, screen_h/2)
snk_length+=5

if score>int(highscore):
highscore=score

snake_x+=velocity_x
snake_y+=velocity_y

head=[]
head.append(snake_x)
head.append(snake_y)
snk_list.append(head)
if len(snk_list)>snk_length:
del snk_list[0]

#game over
if snake_x>screen_w or snake_x<0 or snake_y>screen_h or snake_y<0:
game_o=True
if head in snk_list[:-1]:
game_o=True

gamewindow.fill(black)
gamewindow.blit(image, (0, 0))
pygame.draw.rect(gamewindow,black,[snake_x,snake_y,snake_size,snake_size])
pygame.draw.rect(gamewindow,red,[food_x,food_y,food_size,food_size])
screentext("score:"+ str(score)+ " Highscore:"+str(highscore),red,5,5)
plotsnake(gamewindow, black, snk_list, snake_size)

pygame.display.update()
clock.tick(fps)

pygame.quit()
exit()

welcome() 

Comments

Popular posts from this blog

Steps taken by a compiler to execute a C program

Tokens in C

Variables and Data Types in C