python2dspiel/main.py
2024-12-28 21:09:02 +01:00

153 lines
5.7 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
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
# Bullets
def creer_bullet(pos_x, pos_y):
bullet = pygame.sprite.Sprite()
pygame.sprite.Sprite.__init__(bullet)
bullet.image = pygame.image.load("avion.png").convert_alpha()
bullet.image = pygame.transform.scale(bullet.image,[20, 20])
bullet.rect = bullet.image.get_rect()
bullet.rect.x = pos_x
bullet.rect.y = pos_y
return bullet
liste_d_bullets = []
liste_sprites_bullets = pygame.sprite.LayeredUpdates()
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()
bullet_sound = pygame.mixer.Sound('laser-shot-ingame-230500.mp3')
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 davions 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)
police = pygame.font.Font(None, 20)
texte2 = pygame.sprite.Sprite()
texte2.image = police.render("Vous vous trouver 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 « 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)
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
score = 0
while running:
liste_des_sprites.draw(fenetre)
liste_sprites_ananas.draw(fenetre)
liste_sprites_bullets.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:
nouvel_bullet = creer_bullet(avion.rect.centerx, avion.rect.y)
liste_d_bullets.append(nouvel_bullet)
liste_sprites_bullets.add(nouvel_bullet)
pygame.mixer.Sound.play(bullet_sound)
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:
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)
# Check for hitting bullets
for bullet in liste_d_bullets:
if ananas.rect.colliderect(bullet):
score += 1
liste_d_ananas.remove(ananas)
ananas.kill()
liste_d_bullets.remove(bullet)
bullet.kill()
# Move all bullets
for bullet in liste_d_bullets:
bullet.rect.y -= 10
if bullet.rect.y <= 0:
liste_d_bullets.remove(bullet)
bullet.kill()
pygame.display.flip()
fenetre.fill((0,0,0))
clock.tick(60)
pygame.quit()