Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- from pygame.locals import *
- from os.path import join
- import math
- import sys
- import time
- import os
- pygame.init()
- #variable du jeu
- longeur_fenetre = 640
- largeur_fenetre = 480
- red = (255,0,0)
- bleu = (100,0,100)
- jaune =(255,255,0)
- white = (255,255,255)
- bleu1 = (30, 252, 255)
- angle = 270
- x_balle1 = 350
- y_balle1 = 237
- vie = 3
- score_actuel = 0
- var = 0
- var1 = 0
- var2 = 0
- b = 0
- xx = 0
- longueur_brique = 30
- largeur_brique = 15
- longueur_barre = 70
- largeur_barre = 10
- x_barre = longeur_fenetre/2 - longueur_barre/2
- y_barre = 472
- x_balle = x_barre + longueur_barre/2
- y_balle = y_barre-5
- partir = 0
- niv = 1
- allbriques = []
- debut = time.time()
- cass = []
- n = 0
- w = 0
- val = 2
- # creation fenetre
- fenetre = pygame.display.set_mode((longeur_fenetre,largeur_fenetre),RESIZABLE)
- #var des boules de vie
- nb_vie = []
- boule2 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-40), int(6)), 3)
- boule1 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-50), int(6)), 3)
- def balle(fenetre,color,x_balle,y_balle,rayon):
- pygame.draw.circle(fenetre, color, (int(x_balle), int(y_balle)), rayon)
- def move(longeur_fenetre,largeur_fenetre):
- global x_balle , y_balle, angle
- dx = 1*math.cos(math.radians(angle))
- dy = 1*math.sin(math.radians(angle))
- x_balle -= dx
- y_balle -= dy
- # si collision gauche
- if x_balle < 0 :
- angle = 180-angle
- # si collision droire
- if x_balle > longeur_fenetre:
- angle = 180-angle
- #si collision haut
- if y_balle < 0 :
- angle = 360-angle
- barreimg = pygame.image.load("/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/barre.png").convert()
- def barre():
- global x_barre, y_barre, x_balle, angle, longeur_fenetre, score_actuel,longueur_barre,longueur_barre,partir
- fenetre.blit(barreimg,(x_barre,y_barre,longueur_barre,largeur_barre))
- if y_balle > y_barre and x_barre < x_balle < x_barre +longueur_barre :
- var1 = -x_barre + x_balle
- if x_barre <x_balle< x_barre + longueur_barre:
- angle = 20+var1*2
- if partir == 0:
- if x_barre > x_balle -1:
- x_barre = x_balle - 1
- if x_barre + longueur_barre < x_balle:
- x_barre = x_balle - longueur_barre +1
- #reaparition barre a droite
- if x_barre+longueur_barre< 0:
- x_barre = longeur_fenetre
- #reaparition barre a gauche
- if x_barre > longeur_fenetre:
- x_barre = -70
- def reprendre():
- global vie, partir, angle,x_balle,x_barre,longueur_barre,y_balle,y_barre
- boule_vie()
- partir = 0
- angle = 270
- x_balle = x_barre + longueur_barre/2
- y_balle = y_barre -5
- def gagnée():
- global niv
- police = pygame.font.Font(None, 56)
- texte = police.render(("LE JEU A ETE VAINCU"), 0, white)
- niv = niv+1
- if niv < 7:
- allbriques[:] = []
- charger(niv)
- reprendre()
- continuer_acceuil = 0
- pygame.display.update()
- elif niv == 7:
- fenetre.blit(texte, (longeur_fenetre/2-200,largeur_fenetre/2))
- pygame.display.update()
- time.sleep(2)
- sys.exit();
- def gameOver():
- police = pygame.font.Font(None, 100)
- texte = police.render("Game Over ", 0, white)
- fenetre.blit(texte, (140,180))
- pygame.display.update()
- time.sleep(7)
- sys.exit();
- def chronometre(temps_min,temps_sec):
- police = pygame.font.Font(None, 16)
- texte = police.render("temps : "+str(int(temps_min))+ ' min '+str(int(temps_sec))+ " sec", 0, white)
- fenetre.blit(texte, (longeur_fenetre/2-50,0))
- def chronometre_lancer():
- global debut
- fin = time.time()
- temps = fin - debut
- temps_min = temps / 60
- temps_sec = -((1-temps_min)*60)
- if temps > 60:
- chronometre(temps_min,temps_sec)
- else:
- chronometre(0,temps)
- def boule_vie():
- global vie
- if vie == 3:
- boule1 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-50), int(6)), 3)
- boule2 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-40), int(6)), 3)
- if vie == 2:
- boule1 = pygame.draw.circle(fenetre, red, (int(longeur_fenetre-50), int(6)), 3)
- if vie == 0:
- fenetre.blit(fond, (0, 0));
- gameOver()
- def restart():
- global vie, partir, angle,x_balle,x_barre,longueur_barre,y_balle,y_barre
- vie = vie-1
- boule_vie()
- partir = 0
- angle = 270
- x_balle = x_barre + longueur_barre/2
- y_balle = y_barre -5
- time.sleep(1.5)
- def vies():
- global x_balle, y_balle
- police = pygame.font.Font(None, 16)
- texte = police.render("vies : ", 0, white)
- fenetre.blit(texte, (longeur_fenetre-90,0))
- boule_vie()
- if y_balle > y_barre + 14:
- restart()
- def score(compte):
- police = pygame.font.Font(None, 16)
- texte = police.render("score : " + str(compte), 0, white)
- fenetre.blit(texte, (10,0))
- def brique(x_brique,y_brique,longueur_brique,largeur_brique):
- pygame.draw.rect(fenetre,bleu,(x_brique,y_brique,longueur_brique,largeur_brique))
- def charger(niv):
- global allbriques
- fichier = open(join('niveaux','niv'+str(niv)+".cb"))
- donnee = fichier.readlines()
- for levelLine in donnee:
- lineBricks = levelLine.strip().split(',')
- for briquechar in lineBricks:
- allbriques.append(briquechar)
- cassable = pygame.image.load('/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/cassable.png').convert()
- invincible = pygame.image.load('/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/invincible.png').convert()
- def brique_invincible(x_brique,y_brique,longueur_brique,largeur_brique):
- global x_balle, angle, y_balle,bla
- fenetre.blit(invincible,(x_brique,y_brique,longueur_brique,largeur_brique))
- if xx < x_balle < xx+longueur_brique and int(yy+largeur_brique) == int(y_balle):
- angle = 360-angle
- if xx < x_balle < xx+longueur_brique and int(yy) == int(y_balle):
- angle = 360-angle
- if int(xx) == int(x_balle) and yy < y_balle< yy+largeur_brique:
- angle = 180-angle
- if int(xx+longueur_brique) == int(x_balle) and yy < y_balle< yy+largeur_brique:
- angle = 180-angle
- def brique_cassable(x_brique,y_brique,longueur_brique,largeur_brique):
- global x_balle, angle, y_balle, allbriques,bal,score_actuel
- fenetre.blit(cassable,(x_brique,y_brique,longueur_brique,largeur_brique))
- if len(bal) == allbriques.count("R"):
- for i in range (0,allbriques.count("R"),1):
- if bal[i][0]<x_balle< bal[i][0]+longueur_brique and int(y_balle) == int(bal[i][1]+largeur_brique):
- v = bal[i][2]
- allbriques[v] = '.'
- angle = 360-angle
- score_actuel += 10
- if bal[i][0]<x_balle< bal[i][0]+longueur_brique and int(y_balle) == int(bal[i][1]):
- v = bal[i][2]
- allbriques[v] = '.'
- angle = 360-angle
- score_actuel += 10
- if int(bal[i][0]) == int(x_balle) and bal[i][1]<y_balle<bal[i][1] + largeur_brique:
- v = bal[i][2]
- allbriques[v] = '.'
- angle = 180-angle
- score_actuel += 10
- if int(bal[i][0] + longueur_brique) == int(x_balle) and bal[i][1]<y_balle<bal[i][1] + largeur_brique:
- v = bal[i][2]
- allbriques[v] = '.'
- angle = 180-angle
- score_actuel += 10
- def brique_cassable_2(x_brique,y_brique,longueur_brique,largeur_brique):
- global x_balle, angle, y_balle, allbriques,bal1,score_actuel
- pygame.draw.rect(fenetre,bleu,(x_brique,y_brique,longueur_brique,largeur_brique))
- if len(bal1) == allbriques.count("X"):
- for i in range (0,allbriques.count("X"),1):
- if bal1[i][0]<x_balle< bal1[i][0]+longueur_brique and int(y_balle) == int(bal1[i][1]+largeur_brique):
- v = bal1[i][2]
- r = cass[i][0]
- c = cass[i][1]
- angle = 360-angle
- score_actuel += 10
- c -= 1
- cass[i] = (r,c)
- if c == 0:
- allbriques[v] = '.'
- if bal1[i][0]<x_balle< bal1[i][0]+longueur_brique and int(y_balle) == int(bal1[i][1]):
- v = bal1[i][2]
- r = cass[i][0]
- c = cass[i][1]
- angle = 360-angle
- score_actuel += 10
- c -= 1
- cass[i] = (r,c)
- if c == 0:
- allbriques[v] = '.'
- if int(bal1[i][0]) == int(x_balle) and bal1[i][1]<y_balle<bal1[i][1] + largeur_brique:
- v = bal1[i][2]
- r = cass[i][0]
- c = cass[i][1]
- angle = 180-angle
- score_actuel += 10
- c -= 1
- cass[i] = (r,c)
- if c == 0:
- allbriques[v] = '.'
- if int(bal1[i][0] + longueur_brique) == int(x_balle) and bal1[i][1]<y_balle<bal1[i][1] + largeur_brique:
- v = bal1[i][2]
- r = cass[i][0]
- c = cass[i][1]
- angle = 180-angle
- score_actuel += 10
- c -= 1
- cass[i] = (r,c)
- if c == 0:
- allbriques[v] = '.'
- def casss():
- global cass,n,w,val,allbriques
- while w != len(allbriques):
- if allbriques[w] == 'X':
- cass.append((n,val))
- print(cass)
- n = n+1
- w = w+1
- fond = pygame.image.load("/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/fond.jpg").convert()
- menu = pygame.image.load("/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/menu.jpg").convert()
- niveauxx = pygame.image.load("/home/evanhays/Desktop/CASSEUBRIK/niveaux/image/niveauxx.jpg").convert()
- pygame.key.set_repeat(4, 4)
- continuer_jeu = 0
- continuer_acceuil = 1
- while continuer_jeu == 0:
- for event in pygame.event.get():
- if event.type == QUIT:
- continuer_jeu = 1
- continuer_acceuil = 1
- elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 190 < event.pos[0] < 460 and 200 < event.pos[1] < 280:
- continuer_acceuil = 0
- charger(1)
- casss()
- elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 244 < event.pos[0] < 396 and 314 < event.pos[1] < 372:
- continuer_acceuil = 2
- fenetre.blit(menu, (0, 0));
- pygame.display.update()
- while continuer_acceuil == 2:
- for event in pygame.event.get():
- if event.type == MOUSEBUTTONDOWN and event.button == 1 and 37 < event.pos[0] < 143 and 207 < event.pos[1] < 237:
- charger(1)
- casss()
- continuer_acceuil = 0
- elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 267 < event.pos[0] < 374 and 207 < event.pos[1] < 237:
- charger(2)
- casss()
- continuer_acceuil = 0
- elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 498 < event.pos[0] < 603 and 207 < event.pos[1] < 237:
- charger(3)
- casss()
- continuer_acceuil = 0
- elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 37 < event.pos[0] < 143 and 258 < event.pos[1] < 283:
- charger(4)
- casss()
- continuer_acceuil = 0
- elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 267 < event.pos[0] < 374 and 258 < event.pos[1] < 283:
- charger(5)
- casss()
- continuer_acceuil = 0
- elif event.type == MOUSEBUTTONDOWN and event.button == 1 and 498 < event.pos[0] < 603 and 258 < event.pos[1] < 283:
- charger(6)
- casss()
- continuer_acceuil = 0
- fenetre.blit(niveauxx, (0, 0));
- pygame.display.update()
- while continuer_acceuil == 0:
- for event in pygame.event.get():
- if event.type == QUIT:
- continuer_jeu = 1
- continuer_acceuil = 1
- if event.type == KEYDOWN:
- if event.key == K_LEFT:
- x_barre -= 3
- if event.key == K_RIGHT:
- x_barre += 3
- if event.type == KEYDOWN:
- if event.key == K_UP:
- partir = 1
- if event.type == KEYDOWN:
- if event.key == K_DOWN:
- restart()
- police = pygame.font.Font(None, 60)
- texte = police.render("Level "+str(int(niv)), 0, white)
- fenetre.blit(fond, (0, 0));
- fenetre.blit(texte, (250,10));
- balle(fenetre,white,x_balle,y_balle,5)
- barre()
- vies()
- score(score_actuel)
- chronometre_lancer()
- if partir == 1:
- move(longeur_fenetre,largeur_fenetre)
- a = 0
- xx = 15
- yy = 90
- bal = []
- bal1 = []
- n = 0
- while a != len(allbriques):
- if allbriques[a] == 'R':
- bal.append((xx,yy,n))
- brique_cassable(xx,yy,longueur_brique,largeur_brique)
- if allbriques[a] == 'X':
- bal1.append((xx,yy,n))
- brique_cassable_2(xx,yy,longueur_brique,largeur_brique)
- if allbriques[a] == 'P':
- brique_invincible(xx,yy,longueur_brique,largeur_brique)
- xx += 40
- if allbriques[a] == 'S':
- yy += 19
- xx = 14
- a = a+1
- n = n+1
- if allbriques.count("R") == 0 :
- fenetre.blit(fond, (0, 0));
- gagnée()
- pygame.display.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement