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.

308
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
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 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)
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)
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
ananas_speed = 4
while running:
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)
liste_sprites_ananas.draw(fenetre)
liste_sprites_missiles.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:
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 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 += 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:
gameover = True
police = pygame.font.Font(None, 36)
texte22 = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(texte22)
texte22.image = police.render("Réessaye de tuer tout les ennemis!", 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)
police = pygame.font.Font(None, 36)
texte33 = pygame.sprite.Sprite()
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.rect = texte33.image.get_rect()
texte33.rect.centerx = 360
texte33.rect.centery = 450
liste_des_sprites.add(texte33)
for missiles in liste_de_missiles:
missiles.rect.y -= 10
if missiles.rect.y <= 0:
liste_de_missiles.remove(missiles)
missiles.kill()
else: else:
for ananas in liste_d_ananas: gameover == True #définir la variable gameover
if ananas.rect.colliderect(missiles): print("Dommage, la fin du Monde est proche...")
liste_d_ananas.remove(ananas) avion.remove(liste_des_sprites) #enlever l'avion
ananas.kill()
liste_de_missiles.remove(missiles)
missiles.kill()
pygame.display.flip() police = pygame.font.Font(None, 30) #créer une police
fenetre.fill((0,0,0)) texte= pygame.sprite.Sprite()
clock.tick(50) 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 = 310 #position x
texte.rect.centery = 20 #position y
liste_des_sprites.add(texte) #ajouter le texte
gameover = False #définir la variable gameover
ananas_speed = 4 #définir la vitesse de l'ananas
delay = 10 #définir le délai
missiles_sound = pygame.mixer.Sound("bruitstirs.wav") #créer un son
music = pygame.mixer.music.load("musique fond.mp3") #charger la musique
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) #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: #si l'événement est la position de la souris
avion.rect.x = event.pos[0]
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: #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) #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:
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)
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("L'ennemi est entré dans notre atmosphère!", 1, (10,10,10),(255, 90, 20))
texte22.rect = texte22.image.get_rect()
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() #créer un texte
pygame.sprite.Sprite.__init__(texte33)
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 = 310
texte33.rect.centery = 300
liste_des_sprites.add(texte33) #ajouter le texte33
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: #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() pygame.quit()

BIN
musique fond.mp3 Normal file

Binary file not shown.