import pygame
from pygame.locals import *
from random import randint
LARGEUR = 900
HAUTEUR = 700
fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR))
fond = pygame.sprite.Sprite()
fond.image = pygame.image.load("terre.jpg").convert()
fond.rect = fond.image.get_rect()
fond.rect.x = 55
fond.rect.y = 0

# Bullets
def creer_bullet(pos_x, pos_y):
    bullet = pygame.sprite.Sprite()
    pygame.sprite.Sprite.__init__(bullet)
    bullet.image = pygame.image.load("avion.png").convert_alpha()
    bullet.image = pygame.transform.scale(bullet.image,[20, 20]) 
    bullet.rect = bullet.image.get_rect()
    bullet.rect.x = pos_x
    bullet.rect.y = pos_y
    return bullet
liste_d_bullets = []
liste_sprites_bullets = pygame.sprite.LayeredUpdates()

def creer_ananas(pos_x, pos_y):
    ananas = pygame.sprite.Sprite()
    pygame.sprite.Sprite.__init__(ananas)
    ananas.image = pygame.image.load("ananas.png").convert_alpha()
    ananas.image = pygame.transform.scale(ananas.image,[200, 100]) 
    ananas.rect = ananas.image.get_rect()
    ananas.rect.x = pos_x
    ananas.rect.y = pos_y
    return ananas
pygame.init()
bullet_sound = pygame.mixer.Sound('laser-shot-ingame-230500.mp3')
clock = pygame.time.Clock()
running = True
avion = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(avion)
avion.image = pygame.image.load("avion.png").convert_alpha()
avion.image = pygame.transform.scale(avion.image,[120, 120])
avion.rect = avion.image.get_rect()
avion.rect.x = 200
avion.rect.y = 400
liste_des_sprites = pygame.sprite.LayeredUpdates()
liste_des_sprites.add(fond)
liste_sprites_ananas = pygame.sprite.LayeredUpdates()
liste_des_sprites.add(avion)
liste_d_ananas = []
police = pygame.font.Font(None, 25)
texte = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(texte)
texte.image = police.render("ALERTE! La planète terre est attaquée par une flotte d’avions spatiaux!", 1, (10, 10, 10),(255, 90, 20))
texte.rect = texte.image.get_rect()
texte.rect.centerx = 360
texte.rect.centery = 30
liste_des_sprites.add(texte)

police = pygame.font.Font(None, 20)
texte2 = pygame.sprite.Sprite()
texte2.image = police.render("Vous vous trouver dans l’engin SU-PER12. Votre mission est d’éliminer le plus d’ennemis possible!", 1, (10, 10, 10),(255, 90, 20))
texte2.rect = texte2.image.get_rect()
texte2.rect.centerx = 360
texte2.rect.centery = 60
liste_des_sprites.add(texte2)

police = pygame.font.Font(None, 20)
texte3 = pygame.sprite.Sprite()
texte3.image = police.render("Pour ce faire, appuyez sur « espace » pour tirer et bougez la souris pour manoeuvrer votre SU-PER12!", 1, (10, 10, 10),(255, 90, 20))
texte3.rect = texte3.image.get_rect()
texte3.rect.centerx = 360
texte3.rect.centery = 80
liste_des_sprites.add(texte3)

police = pygame.font.Font(None, 20)
texte4 = pygame.sprite.Sprite()
texte4.image = police.render("Bonne chance!", 1, (10, 10, 10),(255, 90, 20))
texte4.rect = texte4.image.get_rect()
texte4.rect.centerx = 360
texte4.rect.centery = 100
liste_des_sprites.add(texte4)

police = pygame.font.Font(None, 20)
texte5 = pygame.sprite.Sprite()
texte5.image = police.render("ALERTE, PLANETE TERRE EST SOUS ATTAQUE", 1, (10, 10, 10),(255, 90, 20))
texte5.rect = texte5.image.get_rect()
texte5.rect.centerx = 360
texte5.rect.centery = 1500
liste_des_sprites.add(texte5)

gameover = False
score = 0
while running:
    liste_des_sprites.draw(fenetre)
    liste_sprites_ananas.draw(fenetre)
    liste_sprites_bullets.draw(fenetre)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == MOUSEMOTION:
            avion.rect.x = event.pos[0]
        if event.type == MOUSEBUTTONDOWN:
            nouvel_bullet = creer_bullet(avion.rect.centerx, avion.rect.y)
            liste_d_bullets.append(nouvel_bullet)
            liste_sprites_bullets.add(nouvel_bullet)
            pygame.mixer.Sound.play(bullet_sound)
    keys = pygame.key.get_pressed()
    if keys[pygame.K_SPACE]:
        liste_des_sprites.remove(texte)
    if gameover == False:
        nombre_aleatoire = randint(0, 100)
        if nombre_aleatoire == 100:
            position_x_aleatoire = randint(0, LARGEUR - 60)
            nouvel_ananas = creer_ananas(position_x_aleatoire, -100)
            liste_d_ananas.append(nouvel_ananas)
            liste_sprites_ananas.add(nouvel_ananas)
        for ananas in liste_d_ananas:
            ananas.rect.y += 5
            if ananas.rect.colliderect(avion):
                print("COLLISION")
                score += 1
                liste_d_ananas.remove(ananas)
                ananas.kill()
            if ananas.rect.y > HAUTEUR:
                gameover = True
                police = pygame.font.Font(None, 36)
                texte = pygame.sprite.Sprite()
                pygame.sprite.Sprite.__init__(texte)
                texte.image = police.render("Gameover. L'ennemi est entré dans notre atmosphère! Réessaye de tuer tout les ennemis! Score : "+ str(score), 1, (10, 10, 10),(255, 90, 20))
                texte.rect = texte.image.get_rect()
                texte.rect.centerx = 360 
                texte.rect.centery = 450
                liste_des_sprites.add(texte)
            # Check for hitting bullets
            for bullet in liste_d_bullets:
                if ananas.rect.colliderect(bullet):
                    score += 1
                    liste_d_ananas.remove(ananas)
                    ananas.kill()
                    liste_d_bullets.remove(bullet)
                    bullet.kill()
        # Move all bullets
        for bullet in liste_d_bullets:
            bullet.rect.y -= 10
            if bullet.rect.y <= 0:
                liste_d_bullets.remove(bullet)
                bullet.kill()
    pygame.display.flip()
    fenetre.fill((0,0,0))
    clock.tick(60)
pygame.quit()