Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.87 KB | None | 0 0
  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()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement