1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
#########################################
# Programme écrit par Guillaume Serrano 1G4 #
#########################################
i=0
import random
def niveau(n):
"""Cette fonction génère des coordonnées de retangles aléatoirement"""
if n==1:
for i in range(100,500,50):
aliens.append(pygame.Rect(i,random.randint(100,200),31,24))
import pygame,sys
from pygame.locals import *
pygame.init()
pygame.font.init()
fenetre_jeu=pygame.display.set_mode((450,560)) # Taille fenêtre du jeu en pixels
pygame.display.set_caption('SpaceInvader') # titre de la fenêtre
#############################
# Déclaration des variables #
#############################
tps_tir_alien = i + random.randint(15,60)
missiles_aliens=[]
vitesse=1
missiles=[(12,12)]
deplace_missiles_aliens()
def placer_aliens(image):
"""Cette fonction permet de placer les aliens dans la fenêtre de jeu"""
for alien in aliens:
fenetre_jeu.blit(image,alien)
pygame.display.update()
def detecte_collision():
for missile in missiles:
for alien in aliens:
if missile.colliderect(alien):
aliens.remove(alien)
missiles.remove(missile)
def deplace_aliens(x,y):
for alien in aliens:
alien.left + = x
alien.top + = y
pygame.display.update()
def change_sens_aliens():
vitesse
if x>440 or y<10
vitesse=-vitesse
déplace aliens (0,10)
stop (break)
def ajouter_tir_alien()
choix=random.choice(aliens)
missiles_aliens.append(pygame.Rect(choix.left+12,choix.botom,6,16))
Gauche = False
Droite = False
Texty = pygame.font.Font('SUPERPOI_R.TTF', 10)
Obj_texte = Texty.render('les envahisseurs', 0, (0,0,255))
clock = pygame.time.Clock()
vaisseau = pygame.image.load('vaisseau.png')
rectangle_vaisseau = pygame.Rect(20,500,31,32)
img_aliens=[pygame.image.load('invader1.png'),pygame.image.load('invader2.png')]
rectangle_vaisseau = pygame.Rect(20,500,31,32)
aliens[]
#####################################
# Fonction de détection des Touches #
#####################################
def detecte_touches():
global Gauche,Droite
for event in pygame.event.get():
if event.type==QUIT: # Traite l'évènement fermer la fenêtre avec la souris
pygame.quit()
sys.exit()
if event.type== KEYDOWN: # Traiter les évènements du clavier
if event.key==K_ESCAPE:
pygame.quit()
sys.exit()
if event.key==K_RIGHT:
Droite = True
if event.key==K_LEFT:
Gauche = True
if event.type== KEYUP:
if event.key==K_RIGHT:
Droite = False
if event.key==K_LEFT:
Gauche = False
if event.key==K_SPACE:
missiles.append(pygame.Rect(rectangle_vaisseau.left+12,rectangle_vaisseau.top,6,16))
def niveau(n):
niveau(1)
if n = 2:
for y (100,250)50:
for x (75,300)50:
aliens (x,y,31,24)
#####################
# BOUCLE PRINCIPALE #
#####################
if tps_tir_alien=i:
tps_tir_alien=i+random.randint(15,60)
ajouter_tir_alien()
deplace_aliens(vitesse,0)
niveau(2)
detect_collision()
i+=1
placer_aliens(img_aliens[(i//15)%2]) # Changement d'image toutes les 0.5 secondes si FPS=30
def deplace_missiles():
""" Cette fonction permet de changer les coordonnées des missiles contenu dans la liste missiles"""
for missile in missiles: # pour chaque missiles existant
missile.top=missile.top-10 # soustraire 10 à la coordonnée du point haut
pygame.draw.rect(fenetre_jeu,0xFF0000,missile) # dessinner un rectangle de couleur rouge
if missile.top<=100: # si le missiles arrive en haut de l'écran
missiles.remove(missile) # supprimer le missiles de la liste
while True:
fenetre_jeu.fill (0x00001A) # Remplir l'arrieère plan avec la couleur RVB Bleu foncé
fenetre_jeu.blit(Obj_texte,(50,20)) # Placer le texte
fenetre_jeu.blit(vaisseau,rectangle_vaisseau) # placer l'image
detecte_touches()
# Déplacement du vaisseau d'un pixel
if Gauche and rectangle_vaisseau.left > 10 : rectangle_vaisseau.left -= 5
if Droite and rectangle_vaisseau.right < 440 : rectangle_vaisseau.right += 5
pygame.display.update() # rafraichir l'affichage de la fenêtre jeu
clock.tick(30) # Vitesse du jeu : 30 FPS |
Partager