Advertisement
Guest User

tregdsgds

a guest
May 24th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 13.98 KB | None | 0 0
  1. import pygame
  2. from pygame.locals import *
  3. from os.path import join
  4. import math
  5. import sys
  6. import time
  7. import os
  8.  
  9. pygame.init()
  10.  
  11. #variable du jeu
  12. longeur_fenetre = 640
  13. largeur_fenetre = 480
  14. red = (255,0,0)
  15. bleu = (100,0,100)
  16. jaune =(255,255,0)
  17. white = (255,255,255)
  18. bleu1 = (30, 252, 255)
  19. angle = 270
  20. x_balle1 = 350
  21. y_balle1 = 237
  22. vie = 3
  23. score_actuel = 0
  24. var = 0
  25. var1 = 0
  26. var2 = 0
  27. b = 0
  28. xx = 0
  29. longueur_brique = 30
  30. largeur_brique = 15
  31. longueur_barre = 70
  32. largeur_barre = 10
  33. x_barre = longeur_fenetre/2 - longueur_barre/2
  34. y_barre = 472
  35. x_balle = x_barre + longueur_barre/2
  36. y_balle = y_barre-5
  37. partir = 0
  38. niv = 1
  39. allbriques = []
  40. debut = time.time()
  41. cass = []
  42. n = 0
  43. w = 0
  44. val = 2
  45.  
  46.  
  47. # creation fenetre
  48. fenetre = pygame.display.set_mode((longeur_fenetre,largeur_fenetre),RESIZABLE)
  49.  
  50. #var des boules de vie
  51. nb_vie = []
  52. boule2 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-40), int(6)), 3)
  53. boule1 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-50), int(6)), 3)  
  54.  
  55. def balle(fenetre,color,x_balle,y_balle,rayon):
  56.     pygame.draw.circle(fenetre, color, (int(x_balle), int(y_balle)), rayon)
  57.  
  58. def move(longeur_fenetre,largeur_fenetre):
  59.     global x_balle , y_balle, angle
  60.     dx = 1*math.cos(math.radians(angle))
  61.     dy = 1*math.sin(math.radians(angle))
  62.     x_balle -= dx
  63.     y_balle -= dy
  64.     # si collision gauche
  65.     if x_balle < 0 :
  66.         angle  = 180-angle
  67.     # si collision droire
  68.     if x_balle > longeur_fenetre:
  69.         angle  = 180-angle
  70.     #si collision haut
  71.     if y_balle < 0 :
  72.         angle  = 360-angle
  73.  
  74. barreimg = pygame.image.load("/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/barre.png").convert()
  75. def barre():
  76.     global x_barre, y_barre, x_balle, angle, longeur_fenetre, score_actuel,longueur_barre,longueur_barre,partir
  77.     fenetre.blit(barreimg,(x_barre,y_barre,longueur_barre,largeur_barre))
  78.     if y_balle > y_barre and x_barre < x_balle < x_barre +longueur_barre :
  79.         var1 = -x_barre + x_balle
  80.         if x_barre <x_balle< x_barre + longueur_barre:
  81.             angle = 20+var1*2
  82.     if partir == 0:
  83.         if x_barre > x_balle -1:
  84.             x_barre = x_balle - 1
  85.         if x_barre + longueur_barre < x_balle:
  86.             x_barre = x_balle - longueur_barre +1
  87.  
  88.              
  89.        
  90.     #reaparition barre a droite
  91.     if x_barre+longueur_barre< 0:
  92.         x_barre = longeur_fenetre
  93.     #reaparition barre a gauche
  94.     if x_barre > longeur_fenetre:
  95.         x_barre = -70
  96.  
  97. def reprendre():
  98.     global vie, partir, angle,x_balle,x_barre,longueur_barre,y_balle,y_barre
  99.     boule_vie()
  100.     partir = 0
  101.     angle = 270
  102.     x_balle = x_barre + longueur_barre/2
  103.     y_balle = y_barre -5
  104.        
  105. def gagnée():
  106.     global niv
  107.     police = pygame.font.Font(None, 56)
  108.     texte = police.render(("LE JEU A ETE VAINCU"), 0, white)
  109.     niv = niv+1
  110.     if niv < 7:
  111.         allbriques[:] = []
  112.         charger(niv)
  113.         reprendre()
  114.         continuer_acceuil = 0
  115.         pygame.display.update()
  116.     elif niv == 7:
  117.         fenetre.blit(texte, (longeur_fenetre/2-200,largeur_fenetre/2))
  118.         pygame.display.update()
  119.         time.sleep(2)
  120.         sys.exit();
  121.        
  122.            
  123. def gameOver():
  124.     police = pygame.font.Font(None, 100)
  125.     texte = police.render("Game Over ", 0, white)
  126.     fenetre.blit(texte, (140,180))
  127.     pygame.display.update()
  128.     time.sleep(7)
  129.     sys.exit();
  130.    
  131. def chronometre(temps_min,temps_sec):
  132.     police = pygame.font.Font(None, 16)
  133.     texte = police.render("temps : "+str(int(temps_min))+ ' min '+str(int(temps_sec))+ " sec", 0, white)
  134.     fenetre.blit(texte, (longeur_fenetre/2-50,0))  
  135.  
  136. def chronometre_lancer():
  137.     global debut
  138.     fin = time.time()
  139.     temps = fin - debut
  140.     temps_min = temps / 60
  141.     temps_sec = -((1-temps_min)*60)
  142.     if temps > 60:
  143.         chronometre(temps_min,temps_sec)
  144.     else:
  145.         chronometre(0,temps)
  146.  
  147. def boule_vie():
  148.     global vie
  149.     if vie == 3:
  150.         boule1 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-50), int(6)), 3)
  151.         boule2 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-40), int(6)), 3)
  152.     if vie == 2:
  153.         boule1 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-50), int(6)), 3)
  154.     if vie == 0:
  155.         fenetre.blit(fond, (0, 0));
  156.         gameOver()
  157.    
  158. def restart():
  159.     global vie, partir, angle,x_balle,x_barre,longueur_barre,y_balle,y_barre
  160.     vie = vie-1
  161.     boule_vie()
  162.     partir = 0
  163.     angle = 270
  164.     x_balle = x_barre + longueur_barre/2
  165.     y_balle = y_barre -5
  166.     time.sleep(1.5)
  167.        
  168. def vies():
  169.     global x_balle, y_balle
  170.    
  171.     police = pygame.font.Font(None, 16)
  172.     texte = police.render("vies  : ", 0, white)
  173.     fenetre.blit(texte, (longeur_fenetre-90,0))
  174.     boule_vie()
  175.    
  176.     if y_balle > y_barre + 14:
  177.         restart()
  178.  
  179. def score(compte):
  180.     police = pygame.font.Font(None, 16)
  181.     texte = police.render("score : " + str(compte), 0, white)
  182.     fenetre.blit(texte, (10,0))
  183.  
  184. def brique(x_brique,y_brique,longueur_brique,largeur_brique):
  185.     pygame.draw.rect(fenetre,bleu,(x_brique,y_brique,longueur_brique,largeur_brique))
  186.  
  187.  
  188. def charger(niv):
  189.     global allbriques
  190.     fichier = open(join('niveaux','niv'+str(niv)+".cb"))
  191.     donnee = fichier.readlines()
  192.     for levelLine in donnee:
  193.         lineBricks = levelLine.strip().split(',')
  194.         for briquechar in lineBricks:
  195.             allbriques.append(briquechar)      
  196.  
  197.  
  198. cassable = pygame.image.load('/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/cassable.png').convert()
  199. invincible = pygame.image.load('/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/invincible.png').convert()
  200.  
  201. def brique_invincible(x_brique,y_brique,longueur_brique,largeur_brique):
  202.     global x_balle, angle, y_balle,bla
  203.     fenetre.blit(invincible,(x_brique,y_brique,longueur_brique,largeur_brique))
  204.     if xx < x_balle < xx+longueur_brique and int(yy+largeur_brique) == int(y_balle):
  205.         angle  = 360-angle
  206.  
  207.     if xx < x_balle < xx+longueur_brique and int(yy) == int(y_balle):
  208.         angle  = 360-angle
  209.        
  210.     if int(xx) == int(x_balle) and yy < y_balle< yy+largeur_brique:
  211.         angle  = 180-angle
  212.  
  213.     if int(xx+longueur_brique) == int(x_balle) and yy < y_balle< yy+largeur_brique:
  214.         angle  = 180-angle
  215.  
  216.  
  217. def brique_cassable(x_brique,y_brique,longueur_brique,largeur_brique):
  218.     global x_balle, angle, y_balle, allbriques,bal,score_actuel
  219.     fenetre.blit(cassable,(x_brique,y_brique,longueur_brique,largeur_brique))
  220.     if len(bal) == allbriques.count("R"):
  221.         for i in range (0,allbriques.count("R"),1):
  222.             if bal[i][0]<x_balle< bal[i][0]+longueur_brique and int(y_balle) == int(bal[i][1]+largeur_brique):
  223.                 v = bal[i][2]
  224.                 allbriques[v] = '.'
  225.                 angle  = 360-angle
  226.                 score_actuel += 10            
  227.             if bal[i][0]<x_balle< bal[i][0]+longueur_brique and int(y_balle) == int(bal[i][1]):
  228.                 v = bal[i][2]
  229.                 allbriques[v] = '.'
  230.                 angle  = 360-angle
  231.                 score_actuel += 10                  
  232.             if int(bal[i][0]) == int(x_balle) and bal[i][1]<y_balle<bal[i][1] + largeur_brique:
  233.                 v = bal[i][2]
  234.                 allbriques[v] = '.'
  235.                 angle  = 180-angle
  236.                 score_actuel += 10
  237.             if int(bal[i][0] + longueur_brique) == int(x_balle) and bal[i][1]<y_balle<bal[i][1] + largeur_brique:
  238.                 v = bal[i][2]
  239.                 allbriques[v] = '.'
  240.                 angle  = 180-angle
  241.                 score_actuel += 10
  242.  
  243. def brique_cassable_2(x_brique,y_brique,longueur_brique,largeur_brique):
  244.     global x_balle, angle, y_balle, allbriques,bal1,score_actuel
  245.     pygame.draw.rect(fenetre,bleu,(x_brique,y_brique,longueur_brique,largeur_brique))
  246.     if len(bal1) == allbriques.count("X"):
  247.         for i in range (0,allbriques.count("X"),1):
  248.             if bal1[i][0]<x_balle< bal1[i][0]+longueur_brique and int(y_balle) == int(bal1[i][1]+largeur_brique):
  249.                 v = bal1[i][2]
  250.                 r = cass[i][0]
  251.                 c = cass[i][1]
  252.                 angle  = 360-angle
  253.                 score_actuel += 10
  254.                 c -= 1
  255.                 cass[i] = (r,c)
  256.                 if c == 0:
  257.                     allbriques[v] = '.'            
  258.             if bal1[i][0]<x_balle< bal1[i][0]+longueur_brique and int(y_balle) == int(bal1[i][1]):
  259.                 v = bal1[i][2]
  260.                 r = cass[i][0]
  261.                 c = cass[i][1]
  262.                 angle  = 360-angle
  263.                 score_actuel += 10
  264.                 c -= 1
  265.                 cass[i] = (r,c)
  266.                 if c == 0:
  267.                     allbriques[v] = '.'                  
  268.             if int(bal1[i][0]) == int(x_balle) and bal1[i][1]<y_balle<bal1[i][1] + largeur_brique:
  269.                 v = bal1[i][2]
  270.                 r = cass[i][0]
  271.                 c = cass[i][1]
  272.                 angle  = 180-angle
  273.                 score_actuel += 10
  274.                 c -= 1
  275.                 cass[i] = (r,c)
  276.                 if c == 0:
  277.                     allbriques[v] = '.'  
  278.             if int(bal1[i][0] + longueur_brique) == int(x_balle) and bal1[i][1]<y_balle<bal1[i][1] + largeur_brique:
  279.                 v = bal1[i][2]
  280.                 r = cass[i][0]
  281.                 c = cass[i][1]
  282.                 angle  = 180-angle
  283.                 score_actuel += 10
  284.                 c -= 1
  285.                 cass[i] = (r,c)
  286.                 if c == 0:
  287.                     allbriques[v] = '.'  
  288.  
  289. def casss():
  290.     global cass,n,w,val,allbriques
  291.     while w != len(allbriques):
  292.         if allbriques[w] == 'X':
  293.             cass.append((n,val))
  294.         print(cass)
  295.         n = n+1
  296.         w = w+1
  297.  
  298.  
  299.  
  300. fond = pygame.image.load("/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/fond.jpg").convert()
  301. menu = pygame.image.load("/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/menu.jpg").convert()
  302. niveauxx = pygame.image.load("/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/niveauxx.jpg").convert()
  303. pygame.key.set_repeat(4, 4)
  304. continuer_jeu = 0
  305. continuer_acceuil = 1
  306. while continuer_jeu == 0:
  307.     for event in pygame.event.get():
  308.         if event.type == QUIT:
  309.             continuer_jeu = 1
  310.             continuer_acceuil = 1
  311.         elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 190 < event.pos[0] < 460 and 200 < event.pos[1] < 280:
  312.                 continuer_acceuil = 0
  313.                 charger(1)
  314.                 casss()
  315.         elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 244 < event.pos[0] < 396 and 314 < event.pos[1] < 372:
  316.                 continuer_acceuil = 2
  317.         fenetre.blit(menu, (0, 0));
  318.         pygame.display.update()
  319.  
  320.     while continuer_acceuil == 2:
  321.         for event in pygame.event.get():
  322.             if event.type == MOUSEBUTTONDOWN and event.button == 1 and 37 < event.pos[0] < 143 and 207 < event.pos[1] < 237:
  323.                 charger(1)
  324.                 casss()
  325.                 continuer_acceuil = 0
  326.             elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 267 < event.pos[0] < 374 and 207 < event.pos[1] < 237:
  327.                 charger(2)
  328.                 casss()
  329.                 continuer_acceuil = 0
  330.             elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 498 < event.pos[0] < 603 and 207 < event.pos[1] < 237:
  331.                 charger(3)
  332.                 casss()
  333.                 continuer_acceuil = 0
  334.             elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 37 < event.pos[0] < 143 and 258 < event.pos[1] < 283:
  335.                 charger(4)
  336.                 casss()
  337.                 continuer_acceuil = 0
  338.             elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 267 < event.pos[0] < 374 and 258 < event.pos[1] < 283:
  339.                 charger(5)
  340.                 casss()
  341.                 continuer_acceuil = 0
  342.             elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 498 < event.pos[0] < 603 and 258 < event.pos[1] < 283:
  343.                 charger(6)
  344.                 casss()
  345.                 continuer_acceuil = 0                                  
  346.         fenetre.blit(niveauxx, (0, 0));
  347.         pygame.display.update()
  348.                            
  349.     while continuer_acceuil == 0:
  350.         for event in pygame.event.get():
  351.             if event.type == QUIT:
  352.                 continuer_jeu = 1
  353.                 continuer_acceuil = 1
  354.             if event.type == KEYDOWN:
  355.                 if event.key == K_LEFT:
  356.                     x_barre -= 3
  357.                 if event.key == K_RIGHT:
  358.                     x_barre += 3
  359.             if event.type == KEYDOWN:
  360.                 if event.key == K_UP:
  361.                     partir = 1
  362.             if event.type == KEYDOWN:
  363.                 if event.key == K_DOWN:
  364.                     restart()
  365.        
  366.         police = pygame.font.Font(None, 60)
  367.         texte = police.render("Level "+str(int(niv)), 0, white)
  368.                                            
  369.         fenetre.blit(fond, (0, 0));    
  370.         fenetre.blit(texte, (250,10));
  371.         balle(fenetre,white,x_balle,y_balle,5)
  372.         barre()
  373.         vies()
  374.         score(score_actuel)
  375.         chronometre_lancer()
  376.  
  377.                                
  378.         if partir == 1:
  379.             move(longeur_fenetre,largeur_fenetre)
  380.        
  381.         a = 0
  382.         xx = 15
  383.         yy = 90
  384.         bal = []
  385.         bal1 = []
  386.         n = 0
  387.         while a != len(allbriques):
  388.             if allbriques[a] == 'R':
  389.                 bal.append((xx,yy,n))
  390.                 brique_cassable(xx,yy,longueur_brique,largeur_brique)
  391.             if allbriques[a] == 'X':
  392.                 bal1.append((xx,yy,n))
  393.                 brique_cassable_2(xx,yy,longueur_brique,largeur_brique)
  394.             if allbriques[a] == 'P':
  395.                 brique_invincible(xx,yy,longueur_brique,largeur_brique)
  396.             xx += 40
  397.             if allbriques[a] == 'S':
  398.                 yy += 19
  399.                 xx = 14
  400.             a = a+1
  401.             n = n+1
  402.         if allbriques.count("R") == 0 :
  403.             fenetre.blit(fond, (0, 0));
  404.             gagnée()
  405.  
  406.         pygame.display.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement