diff --git a/bruitstirs.wav b/bruitstirs.wav new file mode 100644 index 0000000..8cd48f4 Binary files /dev/null and b/bruitstirs.wav differ diff --git a/invasion_musique.mp3 b/invasion_musique.mp3 new file mode 100644 index 0000000..0584aa6 Binary files /dev/null and b/invasion_musique.mp3 differ diff --git a/main.py b/main.py index 0305a8e..05e9e37 100644 --- a/main.py +++ b/main.py @@ -1,173 +1,175 @@ 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 -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() +from pygame.mixer import music +pygame.mixer.init() + +LARGEUR = 610 #largeur de la fenêtre +HAUTEUR = 600 #hauteur de la fenêtre +fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR)) #créer la fenêtre +fond = pygame.sprite.Sprite() #créer un sprite +fond.image = pygame.image.load("terre.jpg").convert() #charger l'image +fond.rect = fond.image.get_rect() #obtenir les coordonnées de l'image +fond.rect.x = 0 #position x +fond.rect.y = 0 #position y +def creer_ananas(pos_x, pos_y): #créer un ananas + ananas = pygame.sprite.Sprite() #créer un sprite + pygame.sprite.Sprite.__init__(ananas) #initialiser le sprite + ananas.image = pygame.image.load("ananas.png").convert_alpha() #charger l'image + ananas.image = pygame.transform.scale(ananas.image,[200, 100]) #redimensionner l'image + ananas.rect = ananas.image.get_rect() #obtenir les coordonnées de l'image ananas.rect.x = pos_x ananas.rect.y = pos_y - return ananas + return ananas #retourner l'ananas -def tirer_missiles(pos_x, pos_y): - missiles = pygame.sprite.Sprite() - pygame.sprite.Sprite.__init__(missiles) - missiles.image = pygame.image.load("missiles.png").convert_alpha() - missiles.image = pygame.transform.scale(missiles.image,[10, 100]) - missiles.rect = missiles.image.get_rect() +def tirer_missiles(pos_x, pos_y): #créer un missile + missiles = pygame.sprite.Sprite() #créer un sprite + pygame.sprite.Sprite.__init__(missiles) #initialiser le sprite + missiles.image = pygame.image.load("missiles.png").convert_alpha() #charger l'image + missiles.image = pygame.transform.scale(missiles.image,[10, 100]) #redimensionner l'image + missiles.rect = missiles.image.get_rect() #obtenir les coordonnées de l'image missiles.rect.x = pos_x missiles.rect.y = pos_y return missiles -missiles = pygame.sprite.Sprite() -liste_de_missiles = [] -liste_sprites_missiles = pygame.sprite.Group() +missiles = pygame.sprite.Sprite() #créer un sprite +liste_de_missiles = [] #créer une liste +liste_sprites_missiles = pygame.sprite.Group() #créer un groupe -pygame.sprite.LayeredUpdates() -pygame.init() -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]) +pygame.sprite.LayeredUpdates() #mettre les sprites en ordre +pygame.init() +clock = pygame.time.Clock() #créer un horloge +running = True #définir la variable running +avion = pygame.sprite.Sprite() +pygame.sprite.Sprite.__init__(avion) #initialiser le sprite +avion.image = pygame.image.load("avion.png").convert_alpha() #charger l'image +avion.image = pygame.transform.scale(avion.image,[120, 120]) #redimensionner l'image 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) +avion.rect.x = 200 #position x +avion.rect.y = 400 #position y +liste_des_sprites = pygame.sprite.LayeredUpdates() #créer un groupe +liste_des_sprites.add(fond) #ajouter le fond liste_sprites_ananas = pygame.sprite.LayeredUpdates() -liste_des_sprites.add(avion) -liste_d_ananas = [] +liste_des_sprites.add(avion) #ajouter l'avion +liste_d_ananas = [] #créer une liste -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)) +gameover = False #définir la variable gameover +intro = int(input("Voulez-vous sauver la Terre ? 1 pour oui, 2 pour non")) +if intro == 1: + print("ALERTE! La planète Terre est attaquée par une flotte d’avions spatiaux! Vous vous trouvez dans l’engin SU-PER12. Votre mission est d’éliminer le plus d’ennemis possible! Pour ce faire, appuyez sur votre souris pour tirer et manoeuvrez-la en la pour bouger votre SU-PER12! Bonne chance!") #afficher un message + +else: + gameover == True #définir la variable gameover + print("Dommage, la fin du Monde est proche...") + avion.remove(liste_des_sprites) #enlever l'avion + +police = pygame.font.Font(None, 30) #créer une police +texte= pygame.sprite.Sprite() +texte.image = police.render("ALERTE, PLANETE TERRE EST SOUS ATTAQUE", 1, (10, 10, 10),(255, 90, 20)) #créer un texte texte.rect = texte.image.get_rect() -texte.rect.centerx = 360 -texte.rect.centery = 30 -liste_des_sprites.add(texte) +texte.rect.centerx = 310 #position x +texte.rect.centery = 20 #position y +liste_des_sprites.add(texte) #ajouter le texte -police = pygame.font.Font(None, 20) -texte2 = pygame.sprite.Sprite() -texte2.image = police.render("Vous vous trouvez 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) +gameover = False #définir la variable gameover -police = pygame.font.Font(None, 20) -texte3 = pygame.sprite.Sprite() -texte3.image = police.render("Pour ce faire, appuyez sur votre souris pour tirer et 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) +ananas_speed = 4 #définir la vitesse de l'ananas -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 +delay = 10 #définir le délai -ananas_speed = 4 +missiles_sound = pygame.mixer.Sound("bruitstirs.wav") #créer un son -while running: +music = pygame.mixer.music.load("musique fond.mp3") #charger la musique - keys = pygame.key.get_pressed() - if keys[pygame.K_SPACE]: - liste_des_sprites.remove(texte) - liste_des_sprites.remove(texte1) - liste_des_sprites.remove(texte2) - liste_des_sprites.remove(texte3) - liste_des_sprites.remove(texte4) - liste_des_sprites.remove(texte5) - - liste_des_sprites.draw(fenetre) + +while running: #tant que running est vrai + + keys = pygame.key.get_pressed() #obtenir les touches appuyées + if keys[pygame.K_SPACE] == True: #si la touche espace est appuyée + liste_des_sprites.remove(texte) #retirer le texte + + liste_des_sprites.draw(fenetre) #dessiner les sprites liste_sprites_ananas.draw(fenetre) - liste_sprites_missiles.draw(fenetre) - for event in pygame.event.get(): - if event.type == pygame.QUIT: + liste_sprites_missiles.draw(fenetre) #dessiner les missiles + for event in pygame.event.get(): #pour chaque événement + if event.type == pygame.QUIT: #si l'événement est quitter running = False - if event.type == MOUSEMOTION: + if event.type == MOUSEMOTION: #si l'événement est la position de la souris avion.rect.x = event.pos[0] - if event.type == MOUSEBUTTONDOWN: - print("Vous avez tué l'ennemi! Continuez!") - nouveau_missile = tirer_missiles(avion.rect.centerx, HAUTEUR/2) - liste_de_missiles.append(nouveau_missile) == [nouveau_missile] - liste_sprites_missiles.add(nouveau_missile) == pygame.sprite.Group(nouveau_missile) + if event.type == MOUSEBUTTONDOWN: #si l'événement est le clic de la souris + nouveau_missile = tirer_missiles(avion.rect.centerx, HAUTEUR/2) #créer un nouveau missile + pygame.mixer.Sound.play(missiles_sound) #jouer le son + liste_de_missiles.append(nouveau_missile) #ajouter le nouveau missile à la liste + liste_sprites_missiles.add(nouveau_missile) #ajouter le nouveau missile au groupe - if gameover == False: - nombre_aleatoire = randint(0, 100) - if nombre_aleatoire == 100: + if gameover == False: #si le jeu n'est pas terminé + nombre_aleatoire = randint(0, 100) #obtenir un nombre aléatoire + if nombre_aleatoire == 100: #si le nombre aléatoire est 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) + nouvel_ananas = creer_ananas(position_x_aleatoire, -100) #créer une nouvelle ananas + liste_d_ananas.append(nouvel_ananas) #l'ajouter à la liste + liste_sprites_ananas.add(nouvel_ananas) #l'ajouter au groupe + nouvel_ananas.delay_timer = delay * 60 #définir le délai for ananas in liste_d_ananas: - ananas.rect.y += ananas_speed - if ananas.rect.colliderect(avion): - print("COLLISION, L'OBJET A ÉTÉ ÉLIMINÉ, MALHEUREUSEMENT, VOUS AUSSI") - liste_d_ananas.remove(ananas) - ananas.kill() - gameover = True - if ananas.rect.y > HAUTEUR: + if ananas.delay_timer > 0: #si le délai est supérieur à 0 + ananas.delay_timer -= 1 #soustraire le délai d'un + else: + ananas.rect.y += ananas_speed #ajouter la vitesse à la position y de l'ananas + if ananas.rect.colliderect(avion): #si l'ananas touche l'avion + print("COLLISION, L'OBJET A ÉTÉ ÉLIMINÉ, MALHEUREUSEMENT, VOUS AUSSI.") + police = pygame.font.Font(None, 50) #créer une police + texte = pygame.sprite.Sprite() #créer un texte + texte.image = police.render("GAMEOVER", 1, (10, 10, 10),(255, 90, 20)) + texte.rect = texte.image.get_rect() #obtenir les coordonnées de l'image + texte.rect.centerx = 310 + texte.rect.centery = 200 + liste_des_sprites.add(texte) #ajouter le texte + liste_d_ananas.remove(ananas) #retirer l'ananas de la liste + ananas.kill() #supprimer l'ananas + gameover = True #définir la variable gameover à vrai + if ananas.rect.y > HAUTEUR: #si l'ananas dépasse la hauteur de la fenêtre gameover = True police = pygame.font.Font(None, 36) - texte22 = pygame.sprite.Sprite() + texte1 = pygame.sprite.Sprite() #créer un texte + pygame.sprite.Sprite.__init__(texte1) #initialiser le sprite + texte1.image = police.render("GAMEOVER", 1, (10,10,10),(255, 90, 20)) + texte1.rect = texte1.image.get_rect() + texte1.rect.centerx = 310 + texte1.rect.centery = 200 + liste_des_sprites.add(texte1) #ajouter le texte1 + + police = pygame.font.Font(None, 36) + texte22 = pygame.sprite.Sprite() #créer un texte pygame.sprite.Sprite.__init__(texte22) - texte22.image = police.render("Réessaye de tuer tout les ennemis!", 1, (10,10,10),(255, 90, 20)) + texte22.image = police.render("L'ennemi est entré dans notre atmosphère!", 1, (10,10,10),(255, 90, 20)) texte22.rect = texte22.image.get_rect() - texte22.rect.centerx = 360 - texte22.rect.centery = 500 - liste_des_sprites.add(texte22) + texte22.rect.centerx = 310 + texte22.rect.centery = 250 + liste_des_sprites.add(texte22) #ajouter le texte22 police = pygame.font.Font(None, 36) - texte33 = pygame.sprite.Sprite() + texte33 = pygame.sprite.Sprite() #créer un texte pygame.sprite.Sprite.__init__(texte33) - texte33.image = police.render("L'ennemi est entré dans notre atmosphère!", 1, (10,10,10),(255, 90, 20)) + texte33.image = police.render("Réessayez de tuer tout les ennemis!", 1, (10,10,10),(255, 90, 20)) texte33.rect = texte33.image.get_rect() - texte33.rect.centerx = 360 - texte33.rect.centery = 450 - liste_des_sprites.add(texte33) + texte33.rect.centerx = 310 + texte33.rect.centery = 300 + liste_des_sprites.add(texte33) #ajouter le texte33 - for missiles in liste_de_missiles: - missiles.rect.y -= 10 - if missiles.rect.y <= 0: - liste_de_missiles.remove(missiles) - missiles.kill() + for missiles in liste_de_missiles: #pour chaque missile + missiles.rect.y -= 10 #soustraire 10 à la position y du missile + if missiles.rect.y <= 0: #si la position y du missile est inférieure ou égale à 0 + liste_de_missiles.remove(missiles) #retirer le missile de la liste + missiles.kill() #supprimer le missile else: - for ananas in liste_d_ananas: - if ananas.rect.colliderect(missiles): - liste_d_ananas.remove(ananas) - ananas.kill() - liste_de_missiles.remove(missiles) - missiles.kill() - - pygame.display.flip() - fenetre.fill((0,0,0)) - clock.tick(50) + for ananas in liste_d_ananas: #pour chaque ananas + if ananas.rect.colliderect(missiles): #si l'ananas touche le missile + liste_d_ananas.remove(ananas) #retirer l'ananas de la liste + ananas.kill() #supprimer l'ananas + liste_de_missiles.remove(missiles) #retirer le missile de la liste + missiles.kill() #supprimer le missile + + pygame.display.flip() #mettre à jour la fenêtre + fenetre.fill((0,0,0)) #remplir la fenêtre avec la couleur noire + clock.tick(50) #mettre le nombre de frames par seconde pygame.quit() diff --git a/musique fond.mp3 b/musique fond.mp3 new file mode 100644 index 0000000..e8bdfec Binary files /dev/null and b/musique fond.mp3 differ