mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-09 11:30:38 +00:00
Add university content
This commit is contained in:
85
high-school/casse-brique/brique.py
Normal file
85
high-school/casse-brique/brique.py
Normal file
@@ -0,0 +1,85 @@
|
||||
import pygame
|
||||
from constantes import *
|
||||
|
||||
|
||||
class Brique:
|
||||
"""
|
||||
Definie l'objet brique immobile dans le jeu.
|
||||
Attributs : xpos, ypos, vie, largeur, hauteur tous de type int
|
||||
Methodes : enVie(), collisionVerticale(balle), collisionHorizontale(balle),
|
||||
collision(balle), affiche()
|
||||
"""
|
||||
|
||||
def __init__(self, xpos, ypos, vie):
|
||||
self.xpos = xpos
|
||||
self.ypos = ypos
|
||||
self.vie = vie
|
||||
self.largeur = LARGEUR_ECRAN // 15
|
||||
self.hauteur = 20
|
||||
|
||||
def enVie(self):
|
||||
"""indique si la brique à un nombre de vie strictement positif
|
||||
Paramètres :
|
||||
une brique mais utiliser br.enVie()
|
||||
Return :
|
||||
True si self.vie > 0
|
||||
False sinon
|
||||
"""
|
||||
return self.vie > 0
|
||||
|
||||
def collisionVerticale(self, balle):
|
||||
return (
|
||||
balle.xpos > self.xpos
|
||||
and balle.xpos < self.xpos + self.largeur
|
||||
and (
|
||||
(balle.ypos < self.ypos and balle.ypos + balle.rayon > self.ypos)
|
||||
or (
|
||||
balle.ypos > self.ypos + self.hauteur
|
||||
and balle.ypos - balle.rayon < self.ypos + self.hauteur
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
def collisionHorizontale(self, balle):
|
||||
return (
|
||||
balle.ypos > self.ypos
|
||||
and balle.ypos < self.ypos + self.hauteur
|
||||
and (
|
||||
(balle.xpos < self.xpos and balle.xpos + balle.rayon > self.xpos)
|
||||
or (
|
||||
balle.xpos > self.xpos + self.largeur
|
||||
and balle.xpos - balle.rayon < self.xpos + self.largeur
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
def collision(self, balle):
|
||||
if self.enVie():
|
||||
if self.collisionVerticale(balle):
|
||||
balle.yvit = -balle.yvit
|
||||
self.vie -= 1
|
||||
balle.xpos += balle.xvit
|
||||
balle.ypos += balle.yvit
|
||||
elif self.collisionHorizontale(balle):
|
||||
balle.xvit = -balle.xvit
|
||||
self.vie -= 1
|
||||
balle.xpos += balle.xvit
|
||||
balle.ypos += balle.yvit
|
||||
|
||||
def affiche(self, ecran):
|
||||
if self.enVie():
|
||||
pygame.draw.rect(
|
||||
ecran, (0, 0, 0), (self.xpos, self.ypos, self.largeur, self.hauteur)
|
||||
)
|
||||
if self.vie > 1:
|
||||
pygame.draw.rect(
|
||||
ecran,
|
||||
(255, 0, 0),
|
||||
(self.xpos + 1, self.ypos + 1, self.largeur - 2, self.hauteur - 2),
|
||||
)
|
||||
else:
|
||||
pygame.draw.rect(
|
||||
ecran,
|
||||
(0, 255, 0),
|
||||
(self.xpos + 1, self.ypos + 1, self.largeur - 2, self.hauteur - 2),
|
||||
)
|
||||
Reference in New Issue
Block a user