################################################################################
#                                   AVERTISSEMENT                              #
#                       Ne rien modifier dans ce fichier !!                    #
################################################################################
import random

import pygame as pg
import sys
from tp_jeu import *



pg.init()
pg.display.set_caption("Space dodge")

screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()

ship = pg.image.load('ufo.png').convert_alpha()
ship = pg.transform.scale(ship, (64, 64))

pg.display.set_icon(ship)

ship_rect = ship.get_rect()

stone = pg.image.load('stone.png').convert_alpha()
stone = pg.transform.scale(stone, (64, 64))
stone_rect = stone.get_rect()

background = pg.Surface((640,480))
background.fill('gray7')

n_stars = {1:50, 2:10, 3:5}

for r in n_stars:
    for _ in range(n_stars[r]):
        a = random.randint(0,640)
        b = random.randint(0,480)
        pg.draw.circle(background, "white", (a,b), r)



DIRECTIONS = {pg.K_UP:'haut', pg.K_DOWN:'bas', pg.K_LEFT:'gauche', pg.K_RIGHT:'droite'}

font = pg.font.SysFont('arial', 28)
collision_text = font.render('Collision', True, 'orange')
collision_text_rect = collision_text.get_rect(midbottom=(320, 480))


score = None


def check_events():
    for event in pg.event.get():
        if event.type == pg.QUIT or (event.type == pg.KEYDOWN and event.key == pg.K_ESCAPE):
            pg.quit()
            sys.exit()

    pressed = pg.key.get_pressed()

    global ship_x, ship_y
    if pressed[pg.K_RIGHT]:
        ship_x, ship_y = deplacement_droite(ship_x, ship_y)
    try:
        if pressed[pg.K_LEFT]:
            ship_x, ship_y = deplacement_gauche(ship_x, ship_y)
        if pressed[pg.K_UP]:
            ship_x, ship_y = deplacement_haut(ship_x, ship_y)
        if pressed[pg.K_DOWN]:
            ship_x, ship_y = deplacement_bas(ship_x, ship_y)
    except NameError:
        print('déplacement non défini')




def reset_score():
    """remet le score à 0"""
    global score
    score = 0


def up_score():
    """Augmente le score d'un point"""
    global score
    if score is None:
        score = 0
    score += 1

def handle_collisions():
    global ship_x, ship_y, asteroides
    if collision(ship_x, ship_y, asteroides):
        screen.blit(collision_text, collision_text_rect)
        pg.display.flip()
        pg.time.wait(700)

        ship_x = 320
        ship_y = 360
        asteroides = [(220, 100), (400, 200)]

def draw_elements(ship_position):
    screen.blit(background, (0,0))


    ship_rect.center = ship_position
    screen.blit(ship, ship_rect)

    for asteroide in asteroides:
        stone_rect.center = asteroide
        screen.blit(stone, stone_rect)

    handle_collisions()
    if score is not None:
        score_text = font.render(f'Score : {score}', True, 'white')
        score_text_rect = score_text.get_rect(topright=(640, 0))
        screen.blit(score_text, score_text_rect)
    pg.display.flip()


def play():
    while True:
        clock.tick(30)
        check_events()

        global asteroides
        new_asteroides = deplacement_asteroides(asteroides)
        if new_asteroides != []:
            asteroides = new_asteroides

        ajout_asteroides(asteroides)

        draw_elements((ship_x, ship_y))

