SHARE
TWEET

Untitled

a guest Jun 19th, 2019 64 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Space invaders
  5. @author: the only one redwood soleil (he is so handsome)
  6. """
  7. #importement
  8. import pygame
  9. import sys
  10. import random
  11. import time
  12. pygame.init()
  13.  
  14.  
  15. #nom fenetre
  16. pygame.display.set_caption("redwood's space")
  17.  
  18. #variables
  19.  
  20. w = 70     #weight standarde
  21. h = 80     #height standarde
  22.  
  23. x = 500 - 35          #abscisse du vaisseau
  24. y = 700          #ordonnee du vaisseau
  25. X = x - 35          #abscisse de l'alien
  26. Y = 70          #ordonnee de l'alien
  27.  
  28. a = 0         #variable essentielle pour etoile
  29.  
  30. ecran = pygame.display.set_mode((1000, 800))
  31.  
  32. clock = pygame.time.Clock()   #pour mettre les FPS
  33.  
  34. vaisseau = pygame.image.load('vaisseau.png')
  35. vaisseau = pygame.transform.scale(vaisseau, (w, h))  #resize de l'image
  36. alien = pygame.image.load("alien.png").convert_alpha()     #import et transparence
  37. alien = pygame.transform.scale(alien, (w, h))
  38.  
  39. icone = pygame.transform.scale(alien, (64, 64))
  40. pygame.display.set_icon(icone)        #icone du jeu
  41.  
  42. tir = pygame.mixer.Sound('tir.wav')     #tir vaisseau
  43. tir_ennemi = pygame.mixer.Sound('tir-ennemi.wav')   #tir ennemi
  44. ambiance = pygame.mixer.Sound('musique.wav')
  45.  
  46. font = pygame.font.SysFont("papyrus", 72)
  47. font_ = pygame.font.SysFont("papyrus", 30)
  48.  
  49. ver, hor = 0, 0           #wallah frere je sais pas a quoi sa sert
  50.  
  51. pv_alien = 50             #points de vie de l'alien
  52. pv_vaisseau = 3            #points de vie du vaisseau
  53.  
  54. bouger = 0             #variable de mouvement de l'alien
  55. valeurs = [-1, 0, 1]
  56.  
  57. liste_tirs = []      #liste des tirs effectues par le joueur
  58.  
  59. tirs_alien = []          #liste des tirs de l'alien
  60. tirage = 0              #variable pour que l'alien tire
  61.  
  62. jouer = False         #bool de jeu
  63. fin_jeu = False       #bool de fin de jeu
  64. quitter = False      #bool de quittage
  65. ecran_titre = True       #bool ecran titre
  66.  
  67. debut = time.time()        #debut du jeu
  68.  
  69. #couleurs
  70. blue = (0, 0, 255)
  71. red = (255, 0, 0)
  72. orange = (255,165,0)
  73. yellow = (255,255,0)
  74. white = (255, 255, 255)
  75. black = (0, 0, 0)
  76. blue_ = (0, 100, 155)
  77.  
  78.  
  79. #fonctions pour tirer
  80. def tirer(a):
  81.     if a % 2 == 0:        
  82.         tir.play()
  83.         liste_tirs.append([x+35, y])
  84.  
  85.     else:
  86.         tir_ennemi.play()
  87.         tirs_alien.append([X + w/2, Y+h])
  88.        
  89.  
  90. #musique
  91. ambiance.play()
  92.  
  93.  
  94. #programme
  95.  
  96.   #ecran titre
  97. while ecran_titre:
  98.    
  99.     text_debut = font_.render("REDWOOD'S SPACE [press R to start playing]", True, blue_)
  100.     rect_text = text_debut.get_rect()
  101.     ecran.blit(text_debut, (500 - rect_text[2]/2, 400 - rect_text[3]/2))
  102.     pygame.display.update()
  103.  
  104.     for event in pygame.event.get():
  105.         if event.type == pygame.QUIT:
  106.             quitter = True
  107.             ecran_titre = False
  108.        
  109.         if event.type == pygame.KEYDOWN and event.key == pygame.K_r:
  110.             jouer = True
  111.             ecran.fill(black)
  112.             ecran_titre = False
  113.   #jeu
  114.  
  115. while jouer:
  116.    
  117.    
  118.     if not fin_jeu:
  119.    
  120.         a = 0                                          #generateur d'etoiles        
  121.         rect_alien = pygame.Rect(X, Y, w, h)           #Rect associe a l'alien
  122.         rect_vaisseau = pygame.Rect(x, y, w, h)        #Rect associe au vaisseau
  123.         text = font.render("PV : {}/50".format(pv_alien), True, yellow)  
  124.         text_ = font.render("PV : {}/3".format(pv_vaisseau), True, red)
  125.        
  126.        
  127.         #mouvement vaisseau
  128.        
  129.         pressed = pygame.key.get_pressed()
  130.         if pressed[pygame.K_LEFT] and x > 0:  #le and c'est pour pas sortir de l'ecran
  131.             x -= 3
  132.         if pressed[pygame.K_RIGHT] and x < 930: #pareil
  133.             x += 3
  134.        
  135.         #mouvement alien
  136.         if bouger == 30:    
  137.             ver , hor = random.choice(valeurs) , random.choice(valeurs)
  138.             bouger = 0
  139.            
  140.         if X + ver*3 >= 0 and X + ver*3 + w <= 1000:
  141.             X += ver*5
  142.        
  143.         if Y + hor*3 >= 0 and Y + hor*3 + h <= 500:
  144.             Y += hor*3
  145.  
  146.         #tir alien
  147.         if tirage == 50 :
  148.             tirer(1)
  149.             tirage = 0
  150.        
  151.        
  152.         #evenements
  153.         for event in pygame.event.get():
  154.             if event.type == pygame.QUIT:  #quand il quitte la fenetre
  155.                 quitter = True
  156.                 jouer = False
  157.            
  158.             if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
  159.                 tirer(2)
  160.    
  161.    
  162.    
  163.         #affichage des bullets et leur collision
  164.            
  165.             #du vaisseau
  166.         for i in liste_tirs:
  167.            
  168.             rect_tir = pygame.Rect(i[0], i[1], 3, 6)    #rect associe a chaque tir
  169.            
  170.             if rect_tir.colliderect(rect_alien):    #collision du tir
  171.                 pv_alien -= 1
  172.                 liste_tirs.remove(i)
  173.                
  174.                
  175.            
  176.             elif i[1] <= 0 :                  #pour pas que le jeu ne commence à ramer sa mère
  177.                 liste_tirs.remove(i)
  178.                
  179.             else:
  180.                 i[1] -= 5
  181.                 pygame.draw.rect(ecran, red, rect_tir, 0)
  182.                 ecran.blit(vaisseau, [x, y])
  183.                
  184.             #de l'alien
  185.         for o in tirs_alien:
  186.            
  187.             rect_tir_ = pygame.Rect(o[0], o[1], 3, 6)          #rect associe a chaque tir de l'ennemi
  188.            
  189.             if rect_tir_.colliderect(rect_vaisseau):              #collision du tir avec le vaisseau
  190.                 pv_vaisseau -= 1
  191.                 tirs_alien.remove(o)
  192.            
  193.             elif o[1] >= 800:                       #pour eviter que le jeu ramme
  194.                 tirs_alien.remove(o)
  195.            
  196.             else:
  197.                 o[1] += 5
  198.                 pygame.draw.rect(ecran, yellow, rect_tir_, 0)
  199.                 ecran.blit(alien, [X, Y])
  200.        
  201.          
  202.        
  203.         #si l'un des deux meurs
  204.         if pv_alien <= 0 or pv_vaisseau <= 0:
  205.             fin = time.time()
  206.             fin_jeu = True        
  207.            
  208.            
  209.         #collision des deux antagonistes
  210.         if rect_alien.colliderect(rect_vaisseau) or rect_vaisseau.colliderect(rect_alien):
  211.             pv_vaisseau -= 1
  212.            
  213.         #affichage vaisseau, alien, etc......  
  214.         ecran.blit(vaisseau, [x, y])
  215.         ecran.blit(alien, [X, Y])
  216.         ecran.blit(text, (0,0))
  217.         ecran.blit(text_, (0,750))
  218.        
  219.        
  220.         while a <= 2:                #etoiles aleatoires
  221.             pygame.draw.circle(ecran, white, [random.randint(0,1000), random.randint(0,800)], 1)
  222.             a += 1
  223.        
  224.         bouger += 1      #augmentation de l'indice de mouvement
  225.         tirage += 1      #augmentation de l'indice de tir
  226.        
  227.         pygame.display.update()
  228.         ecran.fill(black)
  229.         clock.tick(60)
  230.  
  231. #fin du jeu    
  232.     else:
  233.        
  234.         #time score
  235.         duree = fin - debut
  236.        
  237.         #text de congratulance
  238.         ecran.fill(black)
  239.         text_fin = font.render("Bravo, your score {}".format(int(duree), True, yellow)      #felicitations
  240.         rect_fin =  text_debut.get_rect()                                                                                  
  241.         texte_fin_ = font.render("You failed", True, yellow)            #depression                
  242.         rect_fin_ = texte_fin_.get_rect()
  243.        
  244.         if pv_alien <= 0:         #si le joueur a gagne
  245.             ecran.blit(text_fin, (500 - rect_fin[2]/2, 400 - rect_fin[3]/2))
  246.        
  247.         else:                    #si le joueur a perdu
  248.             ecran.blit(texte_fin_, (500 - rect_fin_[2]/2, 400 - rect_fin_[3]/2))
  249.        
  250.        
  251.         pygame.display.update()
  252.        
  253.         for event in pygame.event.get():
  254.             if event.type == pygame.QUIT:  #quand il quitte la fenetre
  255.                 quitter = True
  256.                 jouer = False
  257.        
  258. if quitter: #quand le joueur quitte
  259.     pygame.quit()
  260.     sys.exit()
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top