import pygame
import random

WIDTH = 480
HEIGHT = 600
FPS = 60

WHITE = (255,255,255)
BLACK = (0,0,0)
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)
DarkSlateGrey = (47,79,79)

pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("snake")
clock = pygame.time.Clock()

snake_block = 35
snake_speed = 15


class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((snake_block, snake_block))
        self.image.fill(WHITE)
        self.rect = self.image.get_rect()
        self.rect.x = WIDTH/2
        self.rect.y = HEIGHT/2
        self.dx = 0
        self.dy = 0



    def update(self):
        self.rect.y += self.dy
        self.rect.x += self.dx



class Food(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((snake_block, snake_block))
        self.image.fill(RED)
        self.rect = self.image.get_rect()
        self.respawn()

    def respawn(self):
        self.rect.x = random.randrange(0, 480-snake_block, snake_block)
        self.rect.y = random.randrange(0, 600-snake_block, snake_block)





all_sprites = pygame.sprite.Group()
foods = pygame.sprite.Group()
player = Player()
apple = Food()
all_sprites.add(player,apple)
foods.add(apple)



running = True
while running:
    clock.tick(FPS)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT and player.dx == 0:
                player.dx = -3
                player.dy = 0
            elif event.key == pygame.K_RIGHT and player.dx == 0:
                player.dx = +3
                player.dy = 0
            elif event.key == pygame.K_UP and player.dy == 0:
                player.dy = -3
                player.dx = 0
            elif event.key == pygame.K_DOWN and player.dy == 0:
                player.dy = +3
                player.dx = 0

    #if Player.update():
       # running = False

    if (player.rect.x < 0 or player.rect.x>WIDTH or player.rect.y < 0 or player.rect.y > WIDTH):
        running = False

    if pygame.sprite.spritecollide(player, foods,  True ):

        new_food = Food()
        all_sprites.add(new_food)
        foods.add(new_food)

    screen.fill(GREEN)
    all_sprites.draw(screen)


    all_sprites.update()

    pygame.display.flip()



pygame.quit()
