Compare commits
No commits in common. "main" and "e3f9f23cf502162aa2a327efd4818241bd9be22e" have entirely different histories.
main
...
e3f9f23cf5
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,3 @@
|
||||
# ---> Python
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
@ -159,4 +158,3 @@ cython_debug/
|
||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||
#.idea/
|
||||
|
||||
|
14
.replit
Normal file
14
.replit
Normal file
@ -0,0 +1,14 @@
|
||||
entrypoint = "main.py"
|
||||
|
||||
modules = ["python-3.10"]
|
||||
|
||||
audio = true
|
||||
|
||||
hidden = [".pythonlibs"]
|
||||
|
||||
[nix]
|
||||
channel = "stable-23_05"
|
||||
|
||||
[[ports]]
|
||||
localPort = 5900
|
||||
externalPort = 80
|
BIN
bruitstirs.wav
BIN
bruitstirs.wav
Binary file not shown.
BIN
gameover.mp3
BIN
gameover.mp3
Binary file not shown.
BIN
generated-icon.png
Normal file
BIN
generated-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
333
main.py
333
main.py
@ -1,238 +1,117 @@
|
||||
import pygame
|
||||
from pygame.locals import *
|
||||
from random import randint
|
||||
from pygame.mixer import music #musique
|
||||
pygame.mixer.init() #initialiser la musique
|
||||
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()
|
||||
ananas.rect.x = pos_x
|
||||
ananas.rect.y = pos_y
|
||||
return ananas
|
||||
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])
|
||||
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)
|
||||
|
||||
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 pour le fond de la terre
|
||||
fond.image = pygame.image.load("terre.jpg").convert() #charger l'image de la terre
|
||||
fond.rect = fond.image.get_rect() #obtenir les coordonnées de l'image de la terre
|
||||
fond.rect.x = 0 #position x de l'image "terre.jpg"
|
||||
fond.rect.y = 0 #position y de l'image "terre.jpg"
|
||||
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)
|
||||
|
||||
def creer_ananas(pos_x, pos_y): #créer un ananas (adversaire)
|
||||
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 de l'ananas
|
||||
ananas.image = pygame.transform.scale(ananas.image,[200, 100]) #redimensionner l'image de l'ananas
|
||||
ananas.rect = ananas.image.get_rect() #obtenir les coordonnées de l'image de l'ananas
|
||||
ananas.rect.x = pos_x # position x de l'image de l'ananas
|
||||
ananas.rect.y = pos_y # position y de l'image de l'ananas
|
||||
return ananas #retourner l'ananas
|
||||
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)
|
||||
|
||||
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 du missile
|
||||
missiles.image = pygame.transform.scale(missiles.image,[10, 100]) #redimensionner l'image du missile
|
||||
missiles.rect = missiles.image.get_rect() #obtenir les coordonnées de l'image du missile
|
||||
missiles.rect.x = pos_x # position x de l'image du missile
|
||||
missiles.rect.y = pos_y # position y de l'image du missile
|
||||
return missiles #retourner le missile
|
||||
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)
|
||||
|
||||
liste_sprites_ananas = pygame.sprite.LayeredUpdates() #créer une liste pour les ananas
|
||||
liste_de_missiles = [] #créer une liste vide pour stocker les missiles
|
||||
liste_sprites_missiles = pygame.sprite.Group() #créer un groupe pour stocker les missiles
|
||||
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)
|
||||
|
||||
pygame.init() #initialiser pygame
|
||||
clock = pygame.time.Clock() #créer un horloge pour contrôler la vitesse de rafraîchissement de la fenêtre
|
||||
running = True #définir la variable running
|
||||
|
||||
avion = pygame.sprite.Sprite() #créer un sprite pour l'avion
|
||||
pygame.sprite.Sprite.__init__(avion) #initialiser le sprite de l'avion
|
||||
avion.image = pygame.image.load("avion.png").convert_alpha() #charger l'image de l'avion
|
||||
avion.image = pygame.transform.scale(avion.image,[120, 120]) #redimensionner l'image de l'avion
|
||||
avion.rect = avion.image.get_rect() #obtenir les coordonnées de l'image de l'avion
|
||||
avion.rect.x = 200 #position x de l'image de l'avion
|
||||
avion.rect.y = 450 #position y de l'image de l'avion
|
||||
liste_des_sprites = pygame.sprite.LayeredUpdates() #créer un groupe pour stocker les sprites
|
||||
liste_des_sprites.add(fond) #ajouter le fond à la liste des sprites
|
||||
liste_des_sprites.add(avion) #ajouter l'avion à la liste des sprites
|
||||
liste_d_ananas = [] #créer une liste vide pour stocker les ananas
|
||||
|
||||
gameover = False #définir la variable gameover
|
||||
|
||||
intro = int(input("Voulez-vous sauver la Terre ? 1 pour oui, 2 pour non: ")) #demander à l'utilisateur s'il veut sauver la Terre
|
||||
sauver = (intro == 1)
|
||||
|
||||
if sauver == True: #si l'utilisateur veut sauver la Terre
|
||||
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! En éliminant les adversaires, vous gagnez 10 points. La planète sera sauvée, lorsque vous aurez atteind les 100 points! Pour ce faire, appuyez sur votre souris pour tirer et manoeuvrez-la en la pour bouger votre SU-PER12. Bonne chance!") #afficher un message
|
||||
music = pygame.mixer.music.load("musique fond.mp3")
|
||||
#charger la musique de fond correspondant à sauver == True
|
||||
pygame.mixer.music.play(-1) #jouer la musique de fond en boucle
|
||||
pygame.mixer.music.set_volume(0.3) # changer le volume de la musique de fond
|
||||
|
||||
else: #si l'utilisateur ne veut pas sauver la Terre
|
||||
gameover == True #définir la variable gameover
|
||||
print("Dommage, la fin du Monde est proche...")
|
||||
avion.kill() # enlever l'avion de la liste des sprites (et donc de la fenetre)
|
||||
liste_sprites_missiles.empty() #enlever tout les missiles du groupe
|
||||
music = pygame.mixer.music.load("invasion musique.mp3") #charger la musique de fond correspondant à sauver == False
|
||||
pygame.mixer.music.play(1) #jouer la musique de fond qu'une seule fois
|
||||
|
||||
police = pygame.font.Font(None, 30) #créer une police
|
||||
texte= pygame.sprite.Sprite() #créer un sprite
|
||||
texte.image = police.render("ALERTE, PLANETE TERRE EST SOUS ATTAQUE", 1, (10, 10, 10),(255, 90, 20)) #créer un texte pour annoncer l'invasion
|
||||
texte.rect = texte.image.get_rect() #obtenir les coordonnées du texte
|
||||
texte.rect.centerx = 310 #position x du texte
|
||||
texte.rect.centery = 20 #position y du texte
|
||||
liste_des_sprites.add(texte) #ajouter le texte à la liste des sprites
|
||||
|
||||
rapidite_ananas = 4 # mouvement de l'ananas (4 pixels par refraichissement de la fenêtre))
|
||||
|
||||
delay = 10 #définir le délai (10sec) des ananas pour que l'utilisateur puisse lire la consigne
|
||||
|
||||
missiles_sound = pygame.mixer.Sound("bruitstirs.wav") #créer un son pour les missiles
|
||||
|
||||
timer = 0 #initialiser le timer
|
||||
|
||||
score = 0 #initialiser le score
|
||||
|
||||
while running: #tant que running est vrai
|
||||
if sauver == False: #si l'utilisateur choisit l'sauver == False
|
||||
timer += 1 #incrément du timer à chaque phase d'exécution
|
||||
if timer >= 30 * 60: #si le timer est plus grand ou égal à 30 sec * 60 cadres par sec
|
||||
gameover = True #définir gameover comme True
|
||||
music = pygame.mixer.music.load("gameover.mp3") #charger la musique du gameover
|
||||
pygame.mixer.music.play(1)#jouer la musique du gameover qu'une seule fois
|
||||
|
||||
police = pygame.font.Font(None, 50) #créer une police pour le texte
|
||||
texte = pygame.sprite.Sprite() #créer un texte pour le gameover
|
||||
texte.image = police.render("GAMEOVER", 1, (10, 10, 10),(255, 90, 20)) #créer un texte pour le gameover
|
||||
texte.rect = texte.image.get_rect() #obtenir les coordonnées du texte
|
||||
texte.rect.centerx = 310 #position x du texte
|
||||
texte.rect.centery = 200 #position y du texte
|
||||
liste_des_sprites.add(texte) #ajouter le texte à la liste des sprites
|
||||
texte = pygame.sprite.Sprite() #créer un second message
|
||||
texte.image = police.render("INVASION ABOUTIE", 1, (10, 10, 10),(255, 90, 20)) #créer un texte pour informer le joueur de l'invasion
|
||||
texte.rect = texte.image.get_rect() #obtenir les coordonnées de l'image
|
||||
texte.rect.centerx = 310
|
||||
texte.rect.centery = 240
|
||||
liste_des_sprites.add(texte) #ajouter le texte
|
||||
|
||||
|
||||
liste_des_sprites.draw(fenetre) #dessiner les sprites
|
||||
liste_sprites_ananas.draw(fenetre) #dessiner les ananas
|
||||
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
|
||||
gameover = False
|
||||
score = 0
|
||||
while running:
|
||||
liste_des_sprites.draw(fenetre)
|
||||
liste_sprites_ananas.draw(fenetre)
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
running = False
|
||||
if event.type == MOUSEMOTION: #si l'événement est la position de la souris
|
||||
if event.type == MOUSEMOTION:
|
||||
avion.rect.x = event.pos[0]
|
||||
if event.type == MOUSEBUTTONDOWN: #si l'événement est le clic de la souris
|
||||
if gameover == False and sauver == True: #if gameover is not true
|
||||
nouveau_missile = tirer_missiles(avion.rect.centerx, HAUTEUR/2) #créer un nouveau missile
|
||||
pygame.mixer.Sound.play(missiles_sound) #jouer le son du tir
|
||||
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é
|
||||
if score < 100: # only spawn ananas if score is less than 100
|
||||
nombre_aleatoire = randint(0, 100) #obtenir un nombre aléatoire pour contrôler la fréquence des ananas
|
||||
if nombre_aleatoire == 100: #si le nombre aléatoire est 100
|
||||
position_x_aleatoire = randint(0, LARGEUR - 60) #obtenir une position x aléatoire pour l'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
|
||||
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:
|
||||
if ananas.delay_timer > 0: #si le délai est supérieur à 0
|
||||
ananas.delay_timer -= 1 #soustraire le délai d'une ananas
|
||||
else:
|
||||
ananas.rect.y += rapidite_ananas #ajouter la vitesse à la position y de l'ananas
|
||||
if ananas.rect.colliderect(avion) and sauver == True: #si l'ananas touche l'avion ET si sauver == True
|
||||
print("COLLISION, L'OBJET A ÉTÉ ÉLIMINÉ, MALHEUREUSEMENT, VOUS AUSSI.") #message pour informer la mort de l'utilisateur
|
||||
avion.kill() #enlever l'avion de la liste des sprites (et donc de la fenetre))
|
||||
music = pygame.mixer.music.load("gameover.mp3") #charger la musique du gameover
|
||||
pygame.mixer.music.play(1) #jouer la musique du gameover qu'une seule fois
|
||||
|
||||
police = pygame.font.Font(None, 50) #créer une police pour le texte
|
||||
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 du texte
|
||||
texte.rect.centerx = 310 #position x du texte
|
||||
texte.rect.centery = 200 #position y du texte
|
||||
liste_des_sprites.add(texte) #ajouter le texte à la liste des sprites
|
||||
|
||||
liste_d_ananas.remove(ananas) #retirer l'ananas de la liste
|
||||
ananas.kill() #supprimer l'ananas (de la fenetre)
|
||||
gameover = True #définir la variable gameover comme vrai
|
||||
|
||||
if ananas.rect.y > HAUTEUR: #si l'ananas dépasse l'hauteur de la fenêtre
|
||||
|
||||
if sauver == False: #si l'utilisateur a choisi de ne pas sauver la Terre
|
||||
gameover = False #définir la variable gameover comme faux
|
||||
else:
|
||||
gameover = True #définir la variable gameover comme vrai
|
||||
|
||||
police = pygame.font.Font(None, 36)
|
||||
texte1 = pygame.sprite.Sprite() #créer un texte du gameover
|
||||
pygame.sprite.Sprite.__init__(texte1) #initialiser le sprite
|
||||
texte1.image = police.render("GAMEOVER", 1, (10,10,10),(255, 90, 20)) #créer un texte du gameover
|
||||
texte1.rect = texte1.image.get_rect() #obtenir les coordonnées du texte
|
||||
texte1.rect.centerx = 310 #position x du texte
|
||||
texte1.rect.centery = 200 #position y du texte
|
||||
liste_des_sprites.add(texte1) #ajouter le texte1 à la liste des sprites
|
||||
|
||||
police = pygame.font.Font(None, 36) #créer une police pour le texte
|
||||
texte22 = pygame.sprite.Sprite() #créer un texte pour informer de l'invasion des adversaires
|
||||
pygame.sprite.Sprite.__init__(texte22) #initialiser le sprite
|
||||
texte22.image = police.render("L'ennemi est entré dans notre atmosphère!", 1, (10,10,10),(255, 90, 20)) #créer un texte pour informer de l'invasion des adversaires
|
||||
texte22.rect = texte22.image.get_rect() #obtenir les coordonnées du texte
|
||||
texte22.rect.centerx = 310 #position x du texte
|
||||
texte22.rect.centery = 250 #position y du texte
|
||||
liste_des_sprites.add(texte22) #ajouter le texte22 à la liste des sprites
|
||||
|
||||
police = pygame.font.Font(None, 36) #créer une police pour le texte
|
||||
texte33 = pygame.sprite.Sprite() #créer un texte motivant l'utilisateur d'une (nouvelle) mission
|
||||
pygame.sprite.Sprite.__init__(texte33) #initialiser le sprite
|
||||
texte33.image = police.render("Réessayez de tuer tout les ennemis!", 1, (10,10,10),(255, 90, 20)) #créer un texte motivant l'utilisateur d'une (nouvelle) mission
|
||||
texte33.rect = texte33.image.get_rect() #obtenir les coordonnées du texte
|
||||
texte33.rect.centerx = 310 #position x du texte
|
||||
texte33.rect.centery = 300 #position y du texte
|
||||
liste_des_sprites.add(texte33) #ajouter le texte33 à la liste des sprites
|
||||
|
||||
for missiles in liste_de_missiles: #pour chaque missile dans la liste des missiles
|
||||
missiles.rect.y -= 10 #soustraire 10 à la position y du missile (10 pixels, le missile monte dans l'écran)
|
||||
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 (de la fenetre)
|
||||
else:
|
||||
for ananas in liste_d_ananas: #pour chaque ananas dans la liste des ananas
|
||||
if ananas.rect.colliderect(missiles): #si l'ananas touche le missile
|
||||
liste_d_ananas.remove(ananas) #retirer l'ananas de la liste des ananas
|
||||
ananas.kill() #supprimer l'ananas (de la fenetre)
|
||||
liste_de_missiles.remove(missiles) #retirer le missile de la liste des missiles
|
||||
missiles.kill() #supprimer le missile (de la fenetre)
|
||||
score += 10 # augmenter le score de l'utilisateur de 10 points
|
||||
print(f"Score:", score) # print le score
|
||||
texte_score = police.render("Score: " + str(score), 1, (10, 10, 10), (255, 90, 20)) #actualiser le texte du score
|
||||
texte_score_rect = texte_score.get_rect() #obtenir les coordonnées du texte
|
||||
texte_score_rect.topleft = (10, 10) #position du texte
|
||||
if score >= 100: #vérifier le jeu pour une victoire
|
||||
gameover = True #définir la variable gameover comme vrai
|
||||
music = pygame.mixer.music.load("victoire.mp3") #charger la musique de la victoire
|
||||
pygame.mixer.music.play(1) #jouer la musique de la victoire qu'une seule fois
|
||||
|
||||
police = pygame.font.Font(None, 50) #créer une police pour le texte
|
||||
texte = pygame.sprite.Sprite() #créer un texte pour informer de la victoire
|
||||
texte.image = police.render("VICTOIRE!", 1, (10, 10, 10),(255, 90, 20)) #créer un texte pour informer de la victoire
|
||||
texte.rect = texte.image.get_rect() #obtenir les coordonnées du texte
|
||||
texte.rect.centerx = 310 #position x du texte
|
||||
texte.rect.centery = 200 #position y du texte
|
||||
liste_des_sprites.add(texte) #ajouter le texte à la liste des sprites
|
||||
|
||||
texte = pygame.sprite.Sprite() #créer un second texte pour informer de la victoire
|
||||
texte.image = police.render("LA TERRE EST SAUVÉE!", 1, (10, 10, 10),(255, 90, 20)) #créer un second texte pour informer de la victoire
|
||||
texte.rect = texte.image.get_rect() #obtenir les coordonnées du texte
|
||||
texte.rect.centerx = 310 #position x du texte
|
||||
texte.rect.centery = 235 #position y du texte
|
||||
liste_des_sprites.add(texte) #ajouter le texte à la liste des sprites
|
||||
|
||||
pygame.display.flip() #mettre à jour la fenêtre
|
||||
fenetre.fill((0,0,0)) #remplir la fenêtre avec la couleur noire (derrière la terre)
|
||||
clock.tick(50) #mettre le nombre de cadres par sec
|
||||
pygame.quit() #quitter pygame
|
||||
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)
|
||||
pygame.display.flip()
|
||||
fenetre.fill((0,0,0))
|
||||
clock.tick(60)
|
||||
pygame.quit()
|
BIN
missiles.png
BIN
missiles.png
Binary file not shown.
Before Width: | Height: | Size: 92 KiB |
BIN
musique fond.mp3
BIN
musique fond.mp3
Binary file not shown.
99
poetry.lock
generated
Normal file
99
poetry.lock
generated
Normal file
@ -0,0 +1,99 @@
|
||||
# This file is automatically @generated by Poetry 1.5.4 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "dearpygui"
|
||||
version = "1.10.1"
|
||||
description = "DearPyGui: A simple Python GUI Toolkit"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "dearpygui-1.10.1-cp310-cp310-macosx_10_6_x86_64.whl", hash = "sha256:ef1f1a8dbbd2dac9ea4fbf9d37e7812741e9a33de03ce385e398258750966a85"},
|
||||
{file = "dearpygui-1.10.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:7dc32b229d89b10ec4f647414738783afc2d6aa09c28c9f7384b07023b6ee261"},
|
||||
{file = "dearpygui-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:8047f4ac06fb774c1335a98d3dbb47337b07e17629a85789740298a61e6ae999"},
|
||||
{file = "dearpygui-1.10.1-cp311-cp311-macosx_10_6_x86_64.whl", hash = "sha256:e87016bdd388d0e33080cd2033047f6c58df7808e1c3e14a1b0d736b2184e1ce"},
|
||||
{file = "dearpygui-1.10.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:ac4e1cb01cd53490df20365645fbd0296bac093b8a415c805c18cad0aa85cac6"},
|
||||
{file = "dearpygui-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:1711a5cc991eaa6bc8a7a3cadb3845236c16b6753dc46b2fd1f4285db57d998e"},
|
||||
{file = "dearpygui-1.10.1-cp312-cp312-macosx_10_6_x86_64.whl", hash = "sha256:e506507ee5344bb8d059d333c4dd77cd61bb4850f66fc4b5508ffa4f456f5a98"},
|
||||
{file = "dearpygui-1.10.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:ed0d58e057636c4b79aee14d09b78042b122f42a6bef08d9901239de3361449d"},
|
||||
{file = "dearpygui-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:5350d2a03da789684fcd384d7ee9e0ea029ecf134bef30d134c439d35c9d60b4"},
|
||||
{file = "dearpygui-1.10.1-cp37-cp37m-macosx_10_6_x86_64.whl", hash = "sha256:d36b16afd0dd22674a59195e2ba37b787ea18bfb4ca96c460d6b7795f2c56980"},
|
||||
{file = "dearpygui-1.10.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2d94b23bed91e121ad4556b811fe164598c5b4dc94a19e3195bb70a4ff632759"},
|
||||
{file = "dearpygui-1.10.1-cp37-cp37m-win_amd64.whl", hash = "sha256:d1b877a147971e062d3c006027e880fd2b88dad9d198620f12b8407dddb1f795"},
|
||||
{file = "dearpygui-1.10.1-cp38-cp38-macosx_10_6_x86_64.whl", hash = "sha256:0e30634f1f8c13994ec59c58048e97103e672f792145a57aab4a7c39c6445e5e"},
|
||||
{file = "dearpygui-1.10.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:d2cb73d22ec6c186c039c60c22efa5fc94f0562793bf20996d9eeae5ee601d55"},
|
||||
{file = "dearpygui-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:2a8a1305ad6bfbc6f46968067b7f02d8404f2df21a13627e8c93cdabbb30f37b"},
|
||||
{file = "dearpygui-1.10.1-cp39-cp39-macosx_10_6_x86_64.whl", hash = "sha256:a2e722e5b1fb8ab8d25e3ed82a790778849c1c66a522a327a73e25e218f98873"},
|
||||
{file = "dearpygui-1.10.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:358a221d5f53b584e7bbc76e2ad7ca012991debdd74ea3a6cfc8e2ed0ea51c92"},
|
||||
{file = "dearpygui-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:5ccb75b5377e5d4fcd6358ac2164418301b2747a78fee55422e3995d167d364a"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pygame"
|
||||
version = "2.5.2"
|
||||
description = "Python Game Development"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
files = [
|
||||
{file = "pygame-2.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a0769eb628c818761755eb0a0ca8216b95270ea8cbcbc82227e39ac9644643da"},
|
||||
{file = "pygame-2.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed9a3d98adafa0805ccbaaff5d2996a2b5795381285d8437a4a5d248dbd12b4a"},
|
||||
{file = "pygame-2.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30d1618672a55e8c6669281ba264464b3ab563158e40d89e8c8b3faa0febebd"},
|
||||
{file = "pygame-2.5.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:39690e9be9baf58b7359d1f3b2336e1fd6f92fedbbce42987be5df27f8d30718"},
|
||||
{file = "pygame-2.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03879ec299c9f4ba23901b2649a96b2143f0a5d787f0b6c39469989e2320caf1"},
|
||||
{file = "pygame-2.5.2-cp310-cp310-win32.whl", hash = "sha256:74e1d6284100e294f445832e6f6343be4fe4748decc4f8a51131ae197dae8584"},
|
||||
{file = "pygame-2.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:485239c7d32265fd35b76ae8f64f34b0637ae11e69d76de15710c4b9edcc7c8d"},
|
||||
{file = "pygame-2.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:34646ca20e163dc6f6cf8170f1e12a2e41726780112594ac061fa448cf7ccd75"},
|
||||
{file = "pygame-2.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3b8a6e351665ed26ea791f0e1fd649d3f483e8681892caef9d471f488f9ea5ee"},
|
||||
{file = "pygame-2.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc346965847aef00013fa2364f41a64f068cd096dcc7778fc306ca3735f0eedf"},
|
||||
{file = "pygame-2.5.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35632035fd81261f2d797fa810ea8c46111bd78ceb6089d52b61ed7dc3c5d05f"},
|
||||
{file = "pygame-2.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e24d05184e4195fe5ebcdce8b18ecb086f00182b9ae460a86682d312ce8d31f"},
|
||||
{file = "pygame-2.5.2-cp311-cp311-win32.whl", hash = "sha256:f02c1c7505af18d426d355ac9872bd5c916b27f7b0fe224749930662bea47a50"},
|
||||
{file = "pygame-2.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:6d58c8cf937815d3b7cdc0fa9590c5129cb2c9658b72d00e8a4568dea2ff1d42"},
|
||||
{file = "pygame-2.5.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1a2a43802bb5e89ce2b3b775744e78db4f9a201bf8d059b946c61722840ceea8"},
|
||||
{file = "pygame-2.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1c289f2613c44fe70a1e40769de4a49c5ab5a29b9376f1692bb1a15c9c1c9bfa"},
|
||||
{file = "pygame-2.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:074aa6c6e110c925f7f27f00c7733c6303407edc61d738882985091d1eb2ef17"},
|
||||
{file = "pygame-2.5.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe0228501ec616779a0b9c4299e837877783e18df294dd690b9ab0eed3d8aaab"},
|
||||
{file = "pygame-2.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31648d38ecdc2335ffc0e38fb18a84b3339730521505dac68514f83a1092e3f4"},
|
||||
{file = "pygame-2.5.2-cp312-cp312-win32.whl", hash = "sha256:224c308856334bc792f696e9278e50d099a87c116f7fc314cd6aa3ff99d21592"},
|
||||
{file = "pygame-2.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:dd2d2650faf54f9a0f5bd0db8409f79609319725f8f08af6507a0609deadcad4"},
|
||||
{file = "pygame-2.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9b30bc1220c457169571aac998e54b013aaeb732d2fd8744966cb1cfab1f61d1"},
|
||||
{file = "pygame-2.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78fcd7643358b886a44127ff7dec9041c056c212b3a98977674f83f99e9b12d3"},
|
||||
{file = "pygame-2.5.2-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cf093a51cb294ede56c29d4acf41538c00f297fcf78a9b186fb7d23c0577b6"},
|
||||
{file = "pygame-2.5.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fe323acbf53a0195c8c98b1b941eba7ac24e3e2b28ae48e8cda566f15fc4945"},
|
||||
{file = "pygame-2.5.2-cp36-cp36m-win32.whl", hash = "sha256:5697528266b4716d9cdd44a5a1d210f4d86ef801d0f64ca5da5d0816704009d9"},
|
||||
{file = "pygame-2.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:edda1f7cff4806a4fa39e0e8ccd75f38d1d340fa5fc52d8582ade87aca247d92"},
|
||||
{file = "pygame-2.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9bd738fd4ecc224769d0b4a719f96900a86578e26e0105193658a32966df2aae"},
|
||||
{file = "pygame-2.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30a8d7cf12363b4140bf2f93b5eec4028376ca1d0fe4b550588f836279485308"},
|
||||
{file = "pygame-2.5.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc12e4dea3e88ea8a553de6d56a37b704dbe2aed95105889f6afeb4b96e62097"},
|
||||
{file = "pygame-2.5.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b34c73cb328024f8db3cb6487a37e54000148988275d8d6e5adf99d9323c937"},
|
||||
{file = "pygame-2.5.2-cp37-cp37m-win32.whl", hash = "sha256:7d0a2794649defa57ef50b096a99f7113d3d0c2e32d1426cafa7d618eadce4c7"},
|
||||
{file = "pygame-2.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:41f8779f52e0f6e6e6ccb8f0b5536e432bf386ee29c721a1c22cada7767b0cef"},
|
||||
{file = "pygame-2.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:677e37bc0ea7afd89dde5a88ced4458aa8656159c70a576eea68b5622ee1997b"},
|
||||
{file = "pygame-2.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:47a8415d2bd60e6909823b5643a1d4ef5cc29417d817f2a214b255f6fa3a1e4c"},
|
||||
{file = "pygame-2.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ff21201df6278b8ca2e948fb148ffe88f5481fd03760f381dd61e45954c7dff"},
|
||||
{file = "pygame-2.5.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d29a84b2e02814b9ba925357fd2e1df78efe5e1aa64dc3051eaed95d2b96eafd"},
|
||||
{file = "pygame-2.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d78485c4d21133d6b2fbb504cd544ca655e50b6eb551d2995b3aa6035928adda"},
|
||||
{file = "pygame-2.5.2-cp38-cp38-win32.whl", hash = "sha256:d851247239548aa357c4a6840fb67adc2d570ce7cb56988d036a723d26b48bff"},
|
||||
{file = "pygame-2.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:88d1cdacc2d3471eceab98bf0c93c14d3a8461f93e58e3d926f20d4de3a75554"},
|
||||
{file = "pygame-2.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4f1559e7efe4efb9dc19d2d811d702f325d9605f9f6f9ececa39ee6890c798f5"},
|
||||
{file = "pygame-2.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cf2191b756ceb0e8458a761d0c665b0c70b538570449e0d39b75a5ba94ac5cf0"},
|
||||
{file = "pygame-2.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cf2257447ce7f2d6de37e5fb019d2bbe32ed05a5721ace8bc78c2d9beaf3aee"},
|
||||
{file = "pygame-2.5.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75cbbfaba2b81434d62631d0b08b85fab16cf4a36e40b80298d3868927e1299"},
|
||||
{file = "pygame-2.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:daca456d5b9f52e088e06a127dec182b3638a775684fb2260f25d664351cf1ae"},
|
||||
{file = "pygame-2.5.2-cp39-cp39-win32.whl", hash = "sha256:3b3e619e33d11c297d7a57a82db40681f9c2c3ae1d5bf06003520b4fe30c435d"},
|
||||
{file = "pygame-2.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:1822d534bb7fe756804647b6da2c9ea5d7a62d8796b2e15d172d3be085de28c6"},
|
||||
{file = "pygame-2.5.2-pp36-pypy36_pp73-win32.whl", hash = "sha256:e708fc8f709a0fe1d1876489345f2e443d47f3976d33455e2e1e937f972f8677"},
|
||||
{file = "pygame-2.5.2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c13edebc43c240fb0532969e914f0ccefff5ae7e50b0b788d08ad2c15ef793e4"},
|
||||
{file = "pygame-2.5.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:263b4a7cbfc9fe2055abc21b0251cc17dea6dff750f0e1c598919ff350cdbffe"},
|
||||
{file = "pygame-2.5.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e58e2b0c791041e4bccafa5bd7650623ba1592b8fe62ae0a276b7d0ecb314b6c"},
|
||||
{file = "pygame-2.5.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0bd67426c02ffe6c9827fc4bcbda9442fbc451d29b17c83a3c088c56fef2c90"},
|
||||
{file = "pygame-2.5.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dcff6cbba1584cf7732ce1dbdd044406cd4f6e296d13bcb7fba963fb4aeefc9"},
|
||||
{file = "pygame-2.5.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ce4b6c0bfe44d00bb0998a6517bd0cf9455f642f30f91bc671ad41c05bf6f6ae"},
|
||||
{file = "pygame-2.5.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:68c4e8e60b725ffc7a6c6ecd9bb5fcc5ed2d6e0e2a2c4a29a8454856ef16ad63"},
|
||||
{file = "pygame-2.5.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f3849f97372a3381c66955f99a0d58485ccd513c3d00c030b869094ce6997a6"},
|
||||
{file = "pygame-2.5.2.tar.gz", hash = "sha256:c1b89eb5d539e7ac5cf75513125fb5f2f0a2d918b1fd6e981f23bf0ac1b1c24a"},
|
||||
]
|
||||
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = ">=3.10.0"
|
||||
content-hash = "5e87325b3835bfcefdcd3a01afb512f9063d24ed31ebd7620dcf328c01c74d86"
|
24
pyproject.toml
Normal file
24
pyproject.toml
Normal file
@ -0,0 +1,24 @@
|
||||
[tool.poetry]
|
||||
name = "python-template"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
authors = ["Your Name <you@example.com>"]
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = ">=3.10.0"
|
||||
pygame = "^2.1.2"
|
||||
dearpygui = "^1.6.2"
|
||||
|
||||
[tool.pyright]
|
||||
# https://github.com/microsoft/pyright/blob/main/docs/configuration.md
|
||||
useLibraryCodeForTypes = true
|
||||
exclude = [".cache"]
|
||||
|
||||
[tool.ruff]
|
||||
# https://beta.ruff.rs/docs/configuration/
|
||||
select = ['E', 'W', 'F', 'I', 'B', 'C4', 'ARG', 'SIM']
|
||||
ignore = ['W291', 'W292', 'W293']
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core>=1.0.0"]
|
||||
build-backend = "poetry.core.masonry.api"
|
14
replit.nix
Normal file
14
replit.nix
Normal file
@ -0,0 +1,14 @@
|
||||
{ pkgs }: {
|
||||
deps = [
|
||||
pkgs.portmidi
|
||||
pkgs.pkg-config
|
||||
pkgs.libpng
|
||||
pkgs.libjpeg
|
||||
pkgs.freetype
|
||||
pkgs.fontconfig
|
||||
pkgs.SDL2_ttf
|
||||
pkgs.SDL2_mixer
|
||||
pkgs.SDL2_image
|
||||
pkgs.SDL2
|
||||
];
|
||||
}
|
BIN
victoire.mp3
BIN
victoire.mp3
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user