python2dspiel/main.py

176 lines
8.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import pygame
from pygame.locals import *
from random import randint
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 #retourner l'ananas
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() #créer un sprite
liste_de_missiles = [] #créer une liste
liste_sprites_missiles = pygame.sprite.Group() #créer un groupe
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 #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) #ajouter l'avion
liste_d_ananas = [] #créer une liste
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 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.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()