Skip to content

Instantly share code, notes, and snippets.

@GravenilvecTV
Created April 12, 2020 16:10
Show Gist options
  • Save GravenilvecTV/6fdd30619a554c4c14877c97c7e7f99e to your computer and use it in GitHub Desktop.
Save GravenilvecTV/6fdd30619a554c4c14877c97c7e7f99e to your computer and use it in GitHub Desktop.
Correction TP 24/30 -
from panier import Panier # on importe le composant panier
from oeuf import OeufChocolat # on import la classe oeuf chocolat
import pygame # utiliser le module pygame pour faire des jeux avec python
pygame.init() # charger les composants
# definir les dimentions
largeur = 800
hauteur = 480
# creer la fenetre avec pygame
fenetre = pygame.display.set_mode((largeur, hauteur)) # on definit la taille
pygame.display.set_caption("Chasse aux oeufs") # on definit un titre
pygame.display.set_icon(pygame.image.load('assets/panier.png'))
# maintenir la fenetre du jeu en eveil pour pas qu'elle se ferme
running = True
fond = pygame.image.load('assets/fond.jpg') # charger l'image de l'arrière plan
sol = pygame.image.load('assets/sol.png') # charger l'image du sol
# charger la barre de chocolat
bar_chocolat = pygame.image.load('assets/chocolate.png')
# redimentionner
bar_chocolat = pygame.transform.scale(bar_chocolat, (60, 60))
# créer un dictionnaire qui va contenir en temps reel les touches enclenchées par le joueur
touches_active = {}
# créer le panier du joueur
panier = Panier(largeur, hauteur)
# créer la couleur
chocolat_couleur = (87, 64, 53)
# créer un groupe qui va contenir plusieurs oeufs en chocolat
oeufs = pygame.sprite.Group()
oeufs.add(OeufChocolat(largeur, hauteur, panier))
oeufs.add(OeufChocolat(largeur, hauteur, panier))
# tant que la fenetre est active, on boucle des instructions à chaque fois
while running:
# actualiser toutes les images qui sont sur le jeu
fenetre.blit(fond, (0, 0))
oeufs.draw(fenetre)
fenetre.blit(panier.image, panier.rect)
fenetre.blit(sol, (0, 0))
largeur_chocolat = panier.points * 3 - 20
# dessiner l'arriere de la jauge
pygame.draw.rect(fenetre, (128, 128, 128), [10, hauteur - 50, largeur - 20, 32] )
pygame.draw.rect(fenetre, chocolat_couleur, [10, hauteur - 50, largeur_chocolat, 32] )
# on place la bar de chocolat
fenetre.blit(bar_chocolat, (largeur_chocolat - bar_chocolat.get_width() / 2, 420))
# recupere tout les oeufs depuis mon groupe de sprite
for oeuf in oeufs:
oeuf.gravite()
# detecter quelle est la touche active par le joueur
if touches_active.get(pygame.K_RIGHT): # si la touche droite est active
panier.deplacement_droite()
elif touches_active.get(pygame.K_LEFT): # si la touche gauche est active
panier.deplacement_gauche()
# mettre à jour l'ecran du jeu
pygame.display.flip()
# boucler sur les evenements actif du joueur
for evenement in pygame.event.get():
# si l'evenement c'est la fermeture de fenetre
if evenement.type == pygame.QUIT:
running = False # on arrete la boucle pour que la fenetre se ferme
quit() # on quitte le jeu
# si l'evenement est une interaction au clavier
elif evenement.type == pygame.KEYDOWN:
touches_active[evenement.key] = True # la touche est active
elif evenement.type == pygame.KEYUP:
touches_active[evenement.key] = False # la touche est desactive
import random # pour faire des choses au hasard
import pygame # recuperer les composants
# créer une classe qui va representer l'oeuf en chocolat
class OeufChocolat(pygame.sprite.Sprite):
# definir la fonction init qui charge les caracteristiques de base de notre oeuf
def __init__(self, largeur_ecran, hauteur_ecran, panier):
super().__init__()
self.vitesse_chute = random.randint(1, 3)
self.panier = panier
self.panier_group = pygame.sprite.Group()
self.panier_group.add(self.panier)
self.largeur_ecran = largeur_ecran
self.hauteur_ecran = hauteur_ecran
self.image = pygame.image.load('assets/oeuf.png')
self.image = pygame.transform.scale(self.image, (40, 40))
self.rect = self.image.get_rect()
self.rect.x = random.randint(20, largeur_ecran - 40)
# teleporter respawn
def repositionner(self):
# reteleporter l'oeuf en haut
self.rect.x = random.randint(20, self.largeur_ecran - 40)
self.rect.y = - self.image.get_height()
self.vitesse_chute = random.randint(1, 3)
# une methode pour deplacer vers le bas l'oeuf, chuter
def gravite(self):
self.rect.y += self.vitesse_chute
# si il touche le panier
if pygame.sprite.spritecollide(self, self.panier_group, False, pygame.sprite.collide_mask) and self.rect.y >= 360:
print("Collision", self.rect.y)
self.repositionner()
# ajouter des points
self.panier.ajouter_points()
# si il sort de l'ecran
if self.rect.y >= self.hauteur_ecran:
self.repositionner()
# enlever les points
self.panier.enlever_points()
import pygame # importe les composants
# créer une classe qui va representer le concept de joueur ou du panier sur notre jeu
class Panier(pygame.sprite.Sprite):
# le constructeur
def __init__(self, largeur_ecran, hauteur_ecran):
super().__init__()
self.largeur_ecran = largeur_ecran
self.points = 50 # nombre de points qu'aura le joueur
self.maximum_points = 100 # nombre maximum de points
self.image = pygame.image.load('assets/panier.png') # charger l'image du panier
self.image = pygame.transform.scale(self.image, (120, 120)) # redimentionner l'image
self.rect = self.image.get_rect() # on lui definit un rectangle
self.rect.x = (largeur_ecran / 2) - self.image.get_width() /2
self.rect.y = hauteur_ecran - 180
self.vitesse = 6 # vitesse de deplacement du panier
# methode pour ajouter 5 points
def ajouter_points(self):
if self.points + 5 <= self.maximum_points: # limite de points
print("+5 points")
self.points += 5
# methode enlever 2 points
def enlever_points(self):
if self.points - 2 > 0:
print("-2 points")
self.points -= 2
else:
# perdu
print("Perdu")
# methode pour le deplacement droite
def deplacement_droite(self):
if self.rect.x + self.image.get_width() < self.largeur_ecran:
self.rect.x += self.vitesse
# methode pour le deplacement gauche
def deplacement_gauche(self):
if self.rect.x > 0:
self.rect.x -= self.vitesse
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment