Briquitas

Professeur référent : M FAURY (ISN)

Notre projet

Nous avons pour but de créer un casse brique en Python.

Nous planifions de créer 4 niveaux avec des difficultés croissantes et des bonus.

Présentation de l’équipe

Mathieu, Emilie et Anne, élèves de terminale S au lycée Blaise Pascal (2016-2017)

Tâches à réaliser

Tâche Détails
Création du menu Sous-menu « jouer » : lance le jeu

Sous-menu « paramètres » : son (on/off) , explication des bonus

Sous-menu « meilleurs scores » : tableau des 5 meilleurs scores et du nom des joueurs

Création de l’interface Raquette (longueur de base et bonus, déplacements)

Balle (diamètre, vitesse, gravité)

Brique (simple, disparition quand contact avec balle, briques à plusieurs rebonds avec chiffre inscrit dessus)

Bonus (apparition aléatoire à partir du niveau 4) : agrandir la raquette, ralentir la balle, vie supplémentaire,  démultiplieur de balles

Frontières de l’espace de jeu

Infos jeu : Compteur de score, affichage des vies restantes

Fin de partie « Game over »

Affichage du score

Rentrer le nom du joueur

Commandes/Déplacements Touches de commandes : Flèches + barre espace pour démarrer le jeu

Déplacement des objets

Création de niveaux niveau 1 : briques à casser 10*3

niveau 2 : 3*10 briques à casser + 1 à casser en 2 rebonds ( au milieu)10*1

niveau 3 : 4*10 briques normales + 2*10 en 2 rebonds (une tout en haut et une au dessous)+ à chaque retour de la balle à la raquette, les briques descendent d’un rang

niveau 4 : 2*10 briques normales + 3*10 en deux rebonds (une au milieu et 2 au-dessus) + 1*10 en 4 rebonds (tout en haut) + briques qui descendent

 

Répartition des tâches

Émilie Mathieu  Anne
 Élaboration d’une structure pour les données (objets raquette, brique, écran, balle,Affichage des niveaux,Compteur de score,Affichage des vies, prémenu …)
Gestion des briques  Mouvements de la balle  Raquette

Créer 5 lignes de 10 briques, et il faut qu’elles disparaissent suite au contact avec la balle

La balle doit se déplacer avec une vitesse rectiligne uniforme et rebondir sur les parois de la zone de jeu

Déplacer la raquette à l’aide du clavier à partir du moment où on a cliqué sur espace

Code Python

[reveal heading= »%image% Voir le code »]
import pygame
from pygame.locals import *
import random
from random import randint
pygame.init()

pas_rkt = 20

#score
#def score (score):
 #   textscore = font.render("Score:" +str(score))                            



#Ouvrir la fenêtre
wf, hf = 1000, 550                                           #on définit sa taille
fenetre = pygame.display.set_mode((wf,hf))      #on l'affiche

#insérer une musique
pygame.mixer.music.load('Bag Raiders - Shooting Stars.mp3')
pygame.mixer.music.play(-1,0.0)

#Création et collage du fond
fond = pygame.image.load("Background.jpg").convert()                        #on définit le fond
fenetre.blit(fond, (0,0))                                                                        #on l'affiche dans la fenêtre

#Création et collage du menu
menu = pygame.image.load("BackgroundMenu.png").convert_alpha()      #on définit le menu
menu_x, menu_y = 830 , 0                                                                     #on définit sa position
fenetre.blit(menu, (menu_x, menu_y))                                                      #on l'affiche dans la fenêtre
font=pygame.font.Font(None, 24)
text = font.render("Casse Brique",1,(255,255,255))
instruction = font.render ( "Cliquez espace", 1 , (100,100,100))
instruction2 = font.render ( "pour commencer", 1 , (100,100,100))
instruction3 = font.render ( "ou mettre en pause" ,1,(100,100,100))          #on définit le texte et sa position

#Création et collage de la raquette
rkt = pygame.image.load("RKT.png").convert_alpha()                               #on définit la raquette
rkt_x, rkt_y = 330, 525                                                                             #on définit sa position
position_rkt = rkt.get_rect()                                                                    #on crée une variable pour sa position
fenetre.blit(rkt, (rkt_x, rkt_y))                                                                   #on l'affiche dans la fenêtre

#Si on appuie longtemps sur la flèche
pygame.key.set_repeat(400, 30)                                                           #argument : temps ou on reste enfoncé, temps entre chaque déplaccment


#Creation et collage des briques

def construire_brique(fenetre, rect, coul, resist):
    return {'rect':  rect, #dictionnaire
            'coul':  coul,
            'resist': resist}
             #fabrication de l'objet
briques = []

couleurs = [0x00BFFF,0xFF0000,0xFFD700,0x32CD32,0xDA70D6] #liste de couleurs possibles
    
#chargement et collage de la brique
for ligne in range(5): #5 lignes
    c = couleurs[randint(0,4)] #choix d'une couleur de la liste "couleurs" entre les indices 0 et 4
    for col in range(8): #8 colonnes
        briques.append(construire_brique(fenetre,
                                         (col*105,ligne*40, 93, 35),
                                        c,
                                        1))
def dessiner_briques(fenetre):
    for brique in briques:
        pygame.draw.rect(fenetre, brique['coul'], brique['rect'])
#Rafraichir l'écran
pygame.display.flip()

marche = False

#rejouer = Button(fenetre, text="rejouer")
#rejouer_x, rejouer_y = 0 , 0

#Boucle infinie jeu
continuer=1
while continuer :
    for event in pygame.event.get():	                                                #Attente des événements

        if event.type == QUIT:
            continuer=0                                                                          #sortir de la boule quand on ferme la fenetre
        
        if event.type == KEYDOWN:

            if event.key == K_SPACE :                                                      #si on appuie sur espace
                marche = not marche                                                       #marche devient "true"

            elif marche == True:
                
                if event.key == K_LEFT:	                                            #Si "flèche gauche"
                    if rkt_x > pas_rkt:                                                       #si on est pas au bord gauche
                        rkt_x -= pas_rkt                                                     #deplacement
                    else:                                                                        # si on est au bord gauche
                        rkt_x = 0                                                              #on ne bouge pas
                elif event.key == K_RIGHT:                                             #si “fleche droite”
                    if rkt_x + 380 < wf :                                                   #si on est pas au bord droit
                        rkt_x += pas_rkt                                                   #deplacement
                    else :                                                                       #si on est au bord droit
                        rkt_x= wf-380                                                       #on ne bouge pas

            
    #if score == 150 :
          #fond = pygame.image.load("You win.png").convert()
     #if PAS DE BALLE :
        #fond = pygame.image.load("Game Over.png").convert()

    #score (#nb de briques totales-nb de briques actuel)

    #Actualisation
    fenetre.blit(fond, (0,0))
    fenetre.blit(rkt, (rkt_x, rkt_y))
    fenetre.blit(menu, (menu_x, menu_y))
    fenetre.blit(text, (860, 50))
    fenetre.blit (instruction, (835,100))
    fenetre.blit (instruction2, (835,115))
    fenetre.blit (instruction3, (835,130))
    #fenetre.blit (rejouer, (0,0))
    dessiner_briques(fenetre)
    #fenetre.blit (score, (835, 140)) 
    
    
    #Rafraichissement
    pygame.display.flip()


pygame.quit()
exit(0)

 

[/reveal]

Ressources

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *