sound und kommentare

This commit is contained in:
Stefan Liebl 2025-01-05 16:09:27 +01:00
parent f12bd0b5e8
commit 4a2997b710
4 changed files with 137 additions and 135 deletions

BIN
bruitstirs.wav Normal file

Binary file not shown.

BIN
invasion_musique.mp3 Normal file

Binary file not shown.

260
main.py
View File

@ -1,173 +1,175 @@
import pygame import pygame
from pygame.locals import * from pygame.locals import *
from random import randint from random import randint
LARGEUR = 900 from pygame.mixer import music
HAUTEUR = 700 pygame.mixer.init()
fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR))
fond = pygame.sprite.Sprite() LARGEUR = 610 #largeur de la fenêtre
fond.image = pygame.image.load("terre.jpg").convert() HAUTEUR = 600 #hauteur de la fenêtre
fond.rect = fond.image.get_rect() fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR)) #créer la fenêtre
fond.rect.x = 55 fond = pygame.sprite.Sprite() #créer un sprite
fond.rect.y = 0 fond.image = pygame.image.load("terre.jpg").convert() #charger l'image
def creer_ananas(pos_x, pos_y): fond.rect = fond.image.get_rect() #obtenir les coordonnées de l'image
ananas = pygame.sprite.Sprite() fond.rect.x = 0 #position x
pygame.sprite.Sprite.__init__(ananas) fond.rect.y = 0 #position y
ananas.image = pygame.image.load("ananas.png").convert_alpha() def creer_ananas(pos_x, pos_y): #créer un ananas
ananas.image = pygame.transform.scale(ananas.image,[200, 100]) ananas = pygame.sprite.Sprite() #créer un sprite
ananas.rect = ananas.image.get_rect() 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.x = pos_x
ananas.rect.y = pos_y ananas.rect.y = pos_y
return ananas return ananas #retourner l'ananas
def tirer_missiles(pos_x, pos_y): def tirer_missiles(pos_x, pos_y): #créer un missile
missiles = pygame.sprite.Sprite() missiles = pygame.sprite.Sprite() #créer un sprite
pygame.sprite.Sprite.__init__(missiles) pygame.sprite.Sprite.__init__(missiles) #initialiser le sprite
missiles.image = pygame.image.load("missiles.png").convert_alpha() missiles.image = pygame.image.load("missiles.png").convert_alpha() #charger l'image
missiles.image = pygame.transform.scale(missiles.image,[10, 100]) missiles.image = pygame.transform.scale(missiles.image,[10, 100]) #redimensionner l'image
missiles.rect = missiles.image.get_rect() missiles.rect = missiles.image.get_rect() #obtenir les coordonnées de l'image
missiles.rect.x = pos_x missiles.rect.x = pos_x
missiles.rect.y = pos_y missiles.rect.y = pos_y
return missiles return missiles
missiles = pygame.sprite.Sprite() missiles = pygame.sprite.Sprite() #créer un sprite
liste_de_missiles = [] liste_de_missiles = [] #créer une liste
liste_sprites_missiles = pygame.sprite.Group() liste_sprites_missiles = pygame.sprite.Group() #créer un groupe
pygame.sprite.LayeredUpdates() pygame.sprite.LayeredUpdates() #mettre les sprites en ordre
pygame.init() pygame.init()
clock = pygame.time.Clock() clock = pygame.time.Clock() #créer un horloge
running = True running = True #définir la variable running
avion = pygame.sprite.Sprite() avion = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(avion) pygame.sprite.Sprite.__init__(avion) #initialiser le sprite
avion.image = pygame.image.load("avion.png").convert_alpha() avion.image = pygame.image.load("avion.png").convert_alpha() #charger l'image
avion.image = pygame.transform.scale(avion.image,[120, 120]) avion.image = pygame.transform.scale(avion.image,[120, 120]) #redimensionner l'image
avion.rect = avion.image.get_rect() avion.rect = avion.image.get_rect()
avion.rect.x = 200 avion.rect.x = 200 #position x
avion.rect.y = 400 avion.rect.y = 400 #position y
liste_des_sprites = pygame.sprite.LayeredUpdates() liste_des_sprites = pygame.sprite.LayeredUpdates() #créer un groupe
liste_des_sprites.add(fond) liste_des_sprites.add(fond) #ajouter le fond
liste_sprites_ananas = pygame.sprite.LayeredUpdates() liste_sprites_ananas = pygame.sprite.LayeredUpdates()
liste_des_sprites.add(avion) liste_des_sprites.add(avion) #ajouter l'avion
liste_d_ananas = [] liste_d_ananas = [] #créer une liste
police = pygame.font.Font(None, 25) gameover = False #définir la variable gameover
texte = pygame.sprite.Sprite() intro = int(input("Voulez-vous sauver la Terre ? 1 pour oui, 2 pour non"))
pygame.sprite.Sprite.__init__(texte) if intro == 1:
texte.image = police.render("ALERTE! La planète Terre est attaquée par une flotte davions spatiaux!", 1, (10, 10, 10),(255, 90, 20)) print("ALERTE! La planète Terre est attaquée par une flotte davions spatiaux! Vous vous trouvez dans lengin SU-PER12. Votre mission est déliminer le plus dennemis 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 = texte.image.get_rect()
texte.rect.centerx = 360 texte.rect.centerx = 310 #position x
texte.rect.centery = 30 texte.rect.centery = 20 #position y
liste_des_sprites.add(texte) liste_des_sprites.add(texte) #ajouter le texte
police = pygame.font.Font(None, 20) gameover = False #définir la variable gameover
texte2 = pygame.sprite.Sprite()
texte2.image = police.render("Vous vous trouvez dans lengin SU-PER12. Votre mission est déliminer le plus dennemis 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) ananas_speed = 4 #définir la vitesse de l'ananas
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)
police = pygame.font.Font(None, 20) delay = 10 #définir le délai
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) missiles_sound = pygame.mixer.Sound("bruitstirs.wav") #créer un son
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 music = pygame.mixer.music.load("musique fond.mp3") #charger la musique
ananas_speed = 4
while running: while running: #tant que running est vrai
keys = pygame.key.get_pressed() keys = pygame.key.get_pressed() #obtenir les touches appuyées
if keys[pygame.K_SPACE]: if keys[pygame.K_SPACE] == True: #si la touche espace est appuyée
liste_des_sprites.remove(texte) liste_des_sprites.remove(texte) #retirer le 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) liste_des_sprites.draw(fenetre) #dessiner les sprites
liste_sprites_ananas.draw(fenetre) liste_sprites_ananas.draw(fenetre)
liste_sprites_missiles.draw(fenetre) liste_sprites_missiles.draw(fenetre) #dessiner les missiles
for event in pygame.event.get(): for event in pygame.event.get(): #pour chaque événement
if event.type == pygame.QUIT: if event.type == pygame.QUIT: #si l'événement est quitter
running = False 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] avion.rect.x = event.pos[0]
if event.type == MOUSEBUTTONDOWN: if event.type == MOUSEBUTTONDOWN: #si l'événement est le clic de la souris
print("Vous avez tué l'ennemi! Continuez!") nouveau_missile = tirer_missiles(avion.rect.centerx, HAUTEUR/2) #créer un nouveau missile
nouveau_missile = tirer_missiles(avion.rect.centerx, HAUTEUR/2) pygame.mixer.Sound.play(missiles_sound) #jouer le son
liste_de_missiles.append(nouveau_missile) == [nouveau_missile] liste_de_missiles.append(nouveau_missile) #ajouter le nouveau missile à la liste
liste_sprites_missiles.add(nouveau_missile) == pygame.sprite.Group(nouveau_missile) liste_sprites_missiles.add(nouveau_missile) #ajouter le nouveau missile au groupe
if gameover == False: if gameover == False: #si le jeu n'est pas terminé
nombre_aleatoire = randint(0, 100) nombre_aleatoire = randint(0, 100) #obtenir un nombre aléatoire
if nombre_aleatoire == 100: if nombre_aleatoire == 100: #si le nombre aléatoire est 100
position_x_aleatoire = randint(0, LARGEUR - 60) position_x_aleatoire = randint(0, LARGEUR - 60)
nouvel_ananas = creer_ananas(position_x_aleatoire, -100) nouvel_ananas = creer_ananas(position_x_aleatoire, -100) #créer une nouvelle ananas
liste_d_ananas.append(nouvel_ananas) liste_d_ananas.append(nouvel_ananas) #l'ajouter à la liste
liste_sprites_ananas.add(nouvel_ananas) 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: for ananas in liste_d_ananas:
ananas.rect.y += ananas_speed if ananas.delay_timer > 0: #si le délai est supérieur à 0
if ananas.rect.colliderect(avion): ananas.delay_timer -= 1 #soustraire le délai d'un
print("COLLISION, L'OBJET A ÉTÉ ÉLIMINÉ, MALHEUREUSEMENT, VOUS AUSSI") else:
liste_d_ananas.remove(ananas) ananas.rect.y += ananas_speed #ajouter la vitesse à la position y de l'ananas
ananas.kill() if ananas.rect.colliderect(avion): #si l'ananas touche l'avion
gameover = True print("COLLISION, L'OBJET A ÉTÉ ÉLIMINÉ, MALHEUREUSEMENT, VOUS AUSSI.")
if ananas.rect.y > HAUTEUR: 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 gameover = True
police = pygame.font.Font(None, 36) 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) 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 = texte22.image.get_rect()
texte22.rect.centerx = 360 texte22.rect.centerx = 310
texte22.rect.centery = 500 texte22.rect.centery = 250
liste_des_sprites.add(texte22) liste_des_sprites.add(texte22) #ajouter le texte22
police = pygame.font.Font(None, 36) police = pygame.font.Font(None, 36)
texte33 = pygame.sprite.Sprite() texte33 = pygame.sprite.Sprite() #créer un texte
pygame.sprite.Sprite.__init__(texte33) 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 = texte33.image.get_rect()
texte33.rect.centerx = 360 texte33.rect.centerx = 310
texte33.rect.centery = 450 texte33.rect.centery = 300
liste_des_sprites.add(texte33) liste_des_sprites.add(texte33) #ajouter le texte33
for missiles in liste_de_missiles: for missiles in liste_de_missiles: #pour chaque missile
missiles.rect.y -= 10 missiles.rect.y -= 10 #soustraire 10 à la position y du missile
if missiles.rect.y <= 0: if missiles.rect.y <= 0: #si la position y du missile est inférieure ou égale à 0
liste_de_missiles.remove(missiles) liste_de_missiles.remove(missiles) #retirer le missile de la liste
missiles.kill() missiles.kill() #supprimer le missile
else: else:
for ananas in liste_d_ananas: for ananas in liste_d_ananas: #pour chaque ananas
if ananas.rect.colliderect(missiles): if ananas.rect.colliderect(missiles): #si l'ananas touche le missile
liste_d_ananas.remove(ananas) liste_d_ananas.remove(ananas) #retirer l'ananas de la liste
ananas.kill() ananas.kill() #supprimer l'ananas
liste_de_missiles.remove(missiles) liste_de_missiles.remove(missiles) #retirer le missile de la liste
missiles.kill() missiles.kill() #supprimer le missile
pygame.display.flip() pygame.display.flip() #mettre à jour la fenêtre
fenetre.fill((0,0,0)) fenetre.fill((0,0,0)) #remplir la fenêtre avec la couleur noire
clock.tick(50) clock.tick(50) #mettre le nombre de frames par seconde
pygame.quit() pygame.quit()

BIN
musique fond.mp3 Normal file

Binary file not shown.