import pygame 
import time
import random
pygame.init()

white = (255, 255, 255)
yellow = (255, 255, 102)
black = (0, 0, 0)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)

dis_width = 700
dis_height = 500

dis = pygame.display.set_mode((dis_width,dis_height))
#pygame.display.update()
pygame.display.set_caption('Simple snake game')

snake_block = 10
snake_speed = 20
clock = pygame.time.Clock()

font_style = pygame.font.SysFont("bahnschrift", 20)
score_font = pygame.font.SysFont("comicsansms", 20)

def score(Score):
	value = score_font.render('Your score: '+str(Score), True, yellow)
	dis.blit(value, [0,0])

def our_snake(snake_block, snake_list):
	for x in snake_list:
		pygame.draw.rect(dis,blue,[x[0],x[1],snake_block,snake_block])

def message(msg, color):
	mesg = font_style.render(msg, True, color)
	dis.blit(mesg, [dis_width/7,dis_height/5])
	
def gameLoop():
	game_over = False
	game_close = False
	
	x1 = int(dis_width/2)
	y1 = int(dis_height/2)
	x1_change = 0
	y1_change = 0
	
	snake_list = []
	snake_len = 1
	score_on = 0
	
	foodx = round(random.randrange(0, int(dis_width - snake_block)/10.0)) * 10.0
	foody = round(random.randrange(0, int(dis_height - snake_block)/ 10.0)) * 10.0
	while not game_over:
		while game_close == True:
			dis.fill(blue)
			message('You lost !! Press q to quit or c to play again',black)
			score(snake_len - 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 = -snake_block
					y1_change = 0
				elif event.key == pygame.K_RIGHT:
					x1_change = snake_block
					y1_change = 0
				elif event.key == pygame.K_UP:
					x1_change = 0
					y1_change = -snake_block
				elif event.key == pygame.K_DOWN:
					x1_change = 0
					y1_change = snake_block
				
		if x1 >= dis_width or x1 < 0 or y1 >= dis_height or y1<0:
			game_close = True
	
				
		x1 += x1_change
		y1 += y1_change
		dis.fill(black)
		pygame.draw.rect(dis,green,[foodx,foody,snake_block,snake_block])
		snake_head = []
		snake_head.append(x1)
		snake_head.append(y1)
		snake_list.append(snake_head)
		if len(snake_list) > snake_len:
			del snake_list[0]
			
		for x in snake_list[:-1]:
			if x == snake_head:
				game_close = True
			
		our_snake(snake_block, snake_list)
		score(score_on)
		
		pygame.display.update()
		
		if x1 == foodx and y1 == foody:
			#message('Tasty!!',red)
			print('Yummy')
			foodx = round(random.randrange(0, int(dis_width - snake_block)/10.0)) * 10.0
			foody = round(random.randrange(0, int(dis_height - snake_block)/10.0)) * 10.0
			snake_len += 1
			score_on +=5
		
		clock.tick(snake_speed)

	pygame.quit()
	quit()
	
gameLoop()