mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-08 03:00:37 +00:00
formatte file
This commit is contained in:
@@ -3,39 +3,43 @@ from constantes import *
|
||||
import raquette
|
||||
from math import *
|
||||
|
||||
|
||||
class Balle(object):
|
||||
|
||||
|
||||
def __init__(self):
|
||||
self.rayon = 10
|
||||
self.xpos = LARGEUR_ECRAN/2
|
||||
self.ypos = HAUTEUR_ECRAN/2
|
||||
self.xvit =4.5
|
||||
self.yvit = 3.0
|
||||
|
||||
|
||||
def deplace(self,raquette):
|
||||
self.rayon = 10
|
||||
self.xpos = LARGEUR_ECRAN / 2
|
||||
self.ypos = HAUTEUR_ECRAN / 2
|
||||
self.xvit = 4.5
|
||||
self.yvit = 3.0
|
||||
|
||||
def deplace(self, raquette):
|
||||
self.xpos += self.xvit
|
||||
self.ypos += self.yvit
|
||||
self.rebonds(raquette)
|
||||
|
||||
|
||||
|
||||
def affiche(self, ecran):
|
||||
pygame.draw.circle(ecran,(0,0,0) , (int(self.xpos),int(self.ypos)) , self.rayon)
|
||||
|
||||
pygame.draw.circle(
|
||||
ecran, (0, 0, 0), (int(self.xpos), int(self.ypos)), self.rayon
|
||||
)
|
||||
|
||||
def rebonds(self, raquette):
|
||||
if self.xpos + self.rayon > LARGEUR_ECRAN or self.xpos - self.rayon < 0:
|
||||
self.xvit = - self.xvit
|
||||
self.xvit = -self.xvit
|
||||
if self.ypos + self.rayon > HAUTEUR_ECRAN or self.ypos - self.rayon < 0:
|
||||
self.yvit = - self.yvit
|
||||
|
||||
if self.ypos >= HAUTEUR_ECRAN-20:
|
||||
self.yvit = -self.yvit
|
||||
|
||||
if self.ypos >= HAUTEUR_ECRAN - 20:
|
||||
if self.xpos >= raquette.xpos:
|
||||
if self.xpos <= raquette.xpos + raquette.largeur :
|
||||
self.yvit = - self.yvit
|
||||
if self.xpos >= raquette.xpos + raquette.largeur - raquette.largeur/10:
|
||||
if self.xpos <= raquette.xpos + raquette.largeur:
|
||||
self.yvit = -self.yvit
|
||||
if (
|
||||
self.xpos
|
||||
>= raquette.xpos + raquette.largeur - raquette.largeur / 10
|
||||
):
|
||||
self.xvit = 4.0
|
||||
self.yvit = 6.0
|
||||
|
||||
if self.xpos <= raquette.xpos + raquette.largeur/20:
|
||||
|
||||
if self.xpos <= raquette.xpos + raquette.largeur / 20:
|
||||
self.xvit = -4.0
|
||||
self.yvit = 6.0
|
||||
self.yvit = 6.0
|
||||
|
||||
@@ -2,13 +2,13 @@ import sys, pygame
|
||||
import balle
|
||||
from constantes import *
|
||||
|
||||
pygame.init() #initialisation des modules de pygame
|
||||
pygame.init() # initialisation des modules de pygame
|
||||
|
||||
# Creation de la fenetre
|
||||
ecran = pygame.display.set_mode((LARGEUR_ECRAN, HAUTEUR_ECRAN))
|
||||
ecran.fill(BLANC)
|
||||
ecran.fill(BLANC)
|
||||
|
||||
pygame.display.set_caption('Balle rebondissante')
|
||||
pygame.display.set_caption("Balle rebondissante")
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
@@ -16,28 +16,27 @@ b1 = balle.Balle()
|
||||
|
||||
bouge = False
|
||||
|
||||
while True: #Demarrage de la boucle infinie
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT: #Evt de sortie de boucle
|
||||
sys.exit()
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
|
||||
bouge = not bouge
|
||||
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
|
||||
bouge = not bouge
|
||||
ecran.fill(BLANC)
|
||||
|
||||
b1.deplace()
|
||||
b1.affiche(ecran)
|
||||
pygame.display.update()
|
||||
|
||||
|
||||
ecran.fill(BLANC)
|
||||
if bouge:
|
||||
b1.deplace()
|
||||
b1.affiche(ecran)
|
||||
|
||||
pygame.display.update() #rafraichissement
|
||||
clock.tick(60)
|
||||
|
||||
if __name__ == '__main__':
|
||||
while True: # Demarrage de la boucle infinie
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT: # Evt de sortie de boucle
|
||||
sys.exit()
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
|
||||
bouge = not bouge
|
||||
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
|
||||
bouge = not bouge
|
||||
ecran.fill(BLANC)
|
||||
|
||||
b1.deplace()
|
||||
b1.affiche(ecran)
|
||||
pygame.display.update()
|
||||
|
||||
ecran.fill(BLANC)
|
||||
if bouge:
|
||||
b1.deplace()
|
||||
b1.affiche(ecran)
|
||||
|
||||
pygame.display.update() # rafraichissement
|
||||
clock.tick(60)
|
||||
|
||||
if __name__ == "__main__":
|
||||
b1 = balle.Balle()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import sys, pygame
|
||||
import sys, pygame
|
||||
import balle
|
||||
import raquette
|
||||
from constantes import *
|
||||
@@ -6,10 +6,10 @@ from constantes import *
|
||||
pygame.init()
|
||||
|
||||
# Creation de la fenetre
|
||||
ecran = pygame.display.set_mode((LARGEUR_ECRAN,HAUTEUR_ECRAN))
|
||||
ecran = pygame.display.set_mode((LARGEUR_ECRAN, HAUTEUR_ECRAN))
|
||||
|
||||
# Titre de la fenetre
|
||||
pygame.display.set_caption('Casse_Brique')
|
||||
pygame.display.set_caption("Casse_Brique")
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
@@ -19,25 +19,23 @@ bouge = False
|
||||
bouge_gauche_raquette = False
|
||||
bouge_droite_raquette = False
|
||||
|
||||
while True :
|
||||
for event in pygame.event.get() :
|
||||
if event.type == pygame.QUIT :
|
||||
while True:
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT:
|
||||
sys.exit()
|
||||
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE :
|
||||
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
|
||||
bouge = not bouge
|
||||
|
||||
|
||||
if pygame.key.get_pressed()[pygame.K_q]:
|
||||
r1.deplaceGauche()
|
||||
if pygame.key.get_pressed()[pygame.K_d]:
|
||||
r1.deplaceDroite()
|
||||
|
||||
ecran.fill(BLANC)
|
||||
|
||||
if bouge :
|
||||
|
||||
if bouge:
|
||||
b1.deplace(r1)
|
||||
|
||||
|
||||
|
||||
|
||||
b1.deplace(r1)
|
||||
b1.affiche(ecran)
|
||||
r1.affiche(ecran)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
##########Definitions des constantes
|
||||
# Taille de la fenetre
|
||||
LARGEUR_ECRAN = 600
|
||||
LARGEUR_ECRAN = 600
|
||||
HAUTEUR_ECRAN = 800
|
||||
# Couleur
|
||||
BLANC = (255, 255, 255)
|
||||
|
||||
@@ -1,56 +1,59 @@
|
||||
import pygame
|
||||
from constantes import *
|
||||
|
||||
|
||||
class Raquette:
|
||||
"""
|
||||
Definie une raquette qui se deplace horizontalement
|
||||
dans le bas de la fenetre ecran
|
||||
Attributs : largeur (int defaut 100),
|
||||
xpos (int defaut LARGEUR_ECRAN//2 - self.largeur//2),
|
||||
vit (int defaut 6)
|
||||
L'épaisseur de la raquette est de 10
|
||||
Methodes : deplaceGauche, deplaceDroite, affiche
|
||||
"""
|
||||
Definie une raquette qui se deplace horizontalement
|
||||
dans le bas de la fenetre ecran
|
||||
Attributs : largeur (int defaut 100),
|
||||
xpos (int defaut LARGEUR_ECRAN//2 - self.largeur//2),
|
||||
vit (int defaut 6)
|
||||
L'épaisseur de la raquette est de 10
|
||||
Methodes : deplaceGauche, deplaceDroite, affiche
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.largeur = 100
|
||||
self.xpos = LARGEUR_ECRAN//2 - self.largeur//2
|
||||
self.xpos = LARGEUR_ECRAN // 2 - self.largeur // 2
|
||||
self.vit = 6
|
||||
|
||||
def deplaceGauche(self):
|
||||
"""
|
||||
Deplace la raquette de vit vers la gauche
|
||||
Parametres :
|
||||
self : Raquette
|
||||
Return :
|
||||
None
|
||||
Effet de bord :
|
||||
Modifie l'attribut xpos en lui enlevant,
|
||||
si c'est possible la valeur de vit (et met xpos à 0 sinon)
|
||||
"""
|
||||
Deplace la raquette de vit vers la gauche
|
||||
Parametres :
|
||||
self : Raquette
|
||||
Return :
|
||||
None
|
||||
Effet de bord :
|
||||
Modifie l'attribut xpos en lui enlevant,
|
||||
si c'est possible la valeur de vit (et met xpos à 0 sinon)
|
||||
"""
|
||||
self.xpos -= self.vit
|
||||
if self.xpos < 0:
|
||||
self.xpos = 0
|
||||
|
||||
|
||||
def deplaceDroite(self):
|
||||
"""
|
||||
Deplace la raquette de vit vers la droite
|
||||
Parametres :
|
||||
self : Raquette
|
||||
Return :
|
||||
None
|
||||
Effet de bord :
|
||||
Modifie l'attribut xpos en lui ajoutant,
|
||||
si c'est possible la valeur de vit (et met xpos à
|
||||
600-self.largeur sinon sinon)
|
||||
"""
|
||||
Deplace la raquette de vit vers la droite
|
||||
Parametres :
|
||||
self : Raquette
|
||||
Return :
|
||||
None
|
||||
Effet de bord :
|
||||
Modifie l'attribut xpos en lui ajoutant,
|
||||
si c'est possible la valeur de vit (et met xpos à
|
||||
600-self.largeur sinon sinon)
|
||||
"""
|
||||
self.xpos += self.vit
|
||||
if self.xpos > LARGEUR_ECRAN - self.largeur:
|
||||
self.xpos = LARGEUR_ECRAN - self.largeur
|
||||
|
||||
def affiche(self, ecran):
|
||||
pygame.draw.rect(ecran, (0,0,255), (int(self.xpos), HAUTEUR_ECRAN-20, self.largeur, 10))
|
||||
pygame.draw.rect(
|
||||
ecran, (0, 0, 255), (int(self.xpos), HAUTEUR_ECRAN - 20, self.largeur, 10)
|
||||
)
|
||||
|
||||
if __name__ == '__main__':
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
pass
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
import sys, pygame
|
||||
import balle
|
||||
|
||||
##########Definitions des constantes
|
||||
# Taille de la fenetre
|
||||
LARGEUR_ECRAN = 600
|
||||
LARGEUR_ECRAN = 600
|
||||
HAUTEUR_ECRAN = 800
|
||||
# Couleur
|
||||
BLANC = (255, 255, 255)
|
||||
NOIR = (0, 0, 0)
|
||||
|
||||
pygame.init() #initialisation des modules de pygame
|
||||
pygame.init() # initialisation des modules de pygame
|
||||
|
||||
# Creation de la fenetre
|
||||
ecran = pygame.display.set_mode((LARGEUR_ECRAN, HAUTEUR_ECRAN))
|
||||
ecran.fill(BLANC)
|
||||
ecran.fill(BLANC)
|
||||
|
||||
pygame.display.set_caption('Balle rebondissante')
|
||||
pygame.display.set_caption("Balle rebondissante")
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
@@ -22,21 +23,19 @@ b1 = balle.Balle()
|
||||
|
||||
bouge = False
|
||||
|
||||
while True: #Demarrage de la boucle infinie
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT: #Evt de sortie de boucle
|
||||
sys.exit()
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||
bouge = not bouge
|
||||
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
|
||||
bouge = not bouge
|
||||
|
||||
|
||||
ecran.fill(BLANC)
|
||||
if bouge:
|
||||
b1.deplace()
|
||||
b1.affiche(ecran)
|
||||
|
||||
pygame.display.update() #rafraichissement
|
||||
clock.tick(60)
|
||||
while True: # Demarrage de la boucle infinie
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT: # Evt de sortie de boucle
|
||||
sys.exit()
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||
bouge = not bouge
|
||||
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
|
||||
bouge = not bouge
|
||||
|
||||
ecran.fill(BLANC)
|
||||
if bouge:
|
||||
b1.deplace()
|
||||
b1.affiche(ecran)
|
||||
|
||||
pygame.display.update() # rafraichissement
|
||||
clock.tick(60)
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
import pygame
|
||||
|
||||
class Balle :
|
||||
"""
|
||||
Definie une balle qui se deplace dans la fenetre ecran
|
||||
Attributs : rayon , xpos , ypos , xvit , yvit
|
||||
Methodes : deplace , affiche
|
||||
"""
|
||||
|
||||
def __init__ ( self ) :
|
||||
self.rayon = 10
|
||||
self.xpos = 300.0
|
||||
self.ypos = 400.0
|
||||
self.xvit = 4.5
|
||||
self.yvit = 3.0
|
||||
class Balle:
|
||||
"""
|
||||
Definie une balle qui se deplace dans la fenetre ecran
|
||||
Attributs : rayon , xpos , ypos , xvit , yvit
|
||||
Methodes : deplace , affiche
|
||||
"""
|
||||
|
||||
def deplace ( self ) :
|
||||
self.xpos += self.xvit
|
||||
self.ypos += self.yvit
|
||||
if self.xpos + self.rayon > 600 or self.xpos - self.rayon < 0:
|
||||
self.xvit = - self.xvit
|
||||
elif self.ypos + self.rayon > 800 or self.ypos - self.rayon < 0:
|
||||
self.yvit = - self.yvit
|
||||
def __init__(self):
|
||||
self.rayon = 10
|
||||
self.xpos = 300.0
|
||||
self.ypos = 400.0
|
||||
self.xvit = 4.5
|
||||
self.yvit = 3.0
|
||||
|
||||
def deplace(self):
|
||||
self.xpos += self.xvit
|
||||
self.ypos += self.yvit
|
||||
if self.xpos + self.rayon > 600 or self.xpos - self.rayon < 0:
|
||||
self.xvit = -self.xvit
|
||||
elif self.ypos + self.rayon > 800 or self.ypos - self.rayon < 0:
|
||||
self.yvit = -self.yvit
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
LARGEUR_ECRAN = 600
|
||||
HAUTEUR_ECRAN = 800
|
||||
|
||||
BLANC = (255,255,255)
|
||||
|
||||
BLANC = (255, 255, 255)
|
||||
|
||||
@@ -9,7 +9,7 @@ pygame.init()
|
||||
# Création de la fenêtre
|
||||
ecran = pygame.display.set_mode((LARGEUR_ECRAN, HAUTEUR_ECRAN))
|
||||
ecran.fill(BLANC)
|
||||
pygame.display.set_caption('Balle rebondissante avec raquette')
|
||||
pygame.display.set_caption("Balle rebondissante avec raquette")
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
@@ -37,8 +37,10 @@ while True: # Boucle principale
|
||||
balle.deplace()
|
||||
|
||||
# Collision balle-raquette
|
||||
if (balle.ypos + balle.rayon >= HAUTEUR_ECRAN - 20 and
|
||||
raquette.xpos <= balle.xpos <= raquette.xpos + raquette.largeur):
|
||||
if (
|
||||
balle.ypos + balle.rayon >= HAUTEUR_ECRAN - 20
|
||||
and raquette.xpos <= balle.xpos <= raquette.xpos + raquette.largeur
|
||||
):
|
||||
balle.yvit = -balle.yvit
|
||||
|
||||
balle.affiche(ecran)
|
||||
@@ -46,4 +48,3 @@ while True: # Boucle principale
|
||||
|
||||
pygame.display.update()
|
||||
clock.tick(60)
|
||||
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
import sys, pygame
|
||||
import balle
|
||||
|
||||
##########Definitions des constantes
|
||||
# Taille de la fenetre
|
||||
LARGEUR_ECRAN = 600
|
||||
LARGEUR_ECRAN = 600
|
||||
HAUTEUR_ECRAN = 800
|
||||
# Couleur
|
||||
BLANC = (255, 255, 255)
|
||||
NOIR = (0, 0, 0)
|
||||
|
||||
pygame.init() #initialisation des modules de pygame
|
||||
pygame.init() # initialisation des modules de pygame
|
||||
|
||||
# Creation de la fenetre
|
||||
ecran = pygame.display.set_mode((LARGEUR_ECRAN, HAUTEUR_ECRAN))
|
||||
ecran.fill(BLANC)
|
||||
ecran.fill(BLANC)
|
||||
|
||||
pygame.display.set_caption('Balle rebondissante')
|
||||
pygame.display.set_caption("Balle rebondissante")
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
@@ -22,21 +23,19 @@ b1 = balle.Balle()
|
||||
|
||||
bouge = False
|
||||
|
||||
while True: #Demarrage de la boucle infinie
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT: #Evt de sortie de boucle
|
||||
sys.exit()
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||
bouge = not bouge
|
||||
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
|
||||
bouge = not bouge
|
||||
|
||||
|
||||
ecran.fill(BLANC)
|
||||
if bouge:
|
||||
b1.deplace()
|
||||
b1.affiche(ecran)
|
||||
|
||||
pygame.display.update() #rafraichissement
|
||||
clock.tick(60)
|
||||
while True: # Demarrage de la boucle infinie
|
||||
for event in pygame.event.get():
|
||||
if event.type == pygame.QUIT: # Evt de sortie de boucle
|
||||
sys.exit()
|
||||
elif event.type == pygame.MOUSEBUTTONDOWN:
|
||||
bouge = not bouge
|
||||
elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
|
||||
bouge = not bouge
|
||||
|
||||
ecran.fill(BLANC)
|
||||
if bouge:
|
||||
b1.deplace()
|
||||
b1.affiche(ecran)
|
||||
|
||||
pygame.display.update() # rafraichissement
|
||||
clock.tick(60)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import pygame
|
||||
import pygame
|
||||
|
||||
|
||||
class Balle:
|
||||
"""
|
||||
Definie une balle qui se deplace dans la fenetre ecran
|
||||
@@ -29,4 +30,6 @@ class Balle:
|
||||
Paramètres :
|
||||
ecran : pygame.Surface - L'écran où dessiner la balle
|
||||
"""
|
||||
pygame.draw.circle(ecran, (255, 0, 0), (int(self.xpos), int(self.ypos)), self.rayon)
|
||||
pygame.draw.circle(
|
||||
ecran, (255, 0, 0), (int(self.xpos), int(self.ypos)), self.rayon
|
||||
)
|
||||
|
||||
@@ -9,7 +9,7 @@ pygame.init()
|
||||
# Création de la fenêtre
|
||||
ecran = pygame.display.set_mode((LARGEUR_ECRAN, HAUTEUR_ECRAN))
|
||||
ecran.fill(BLANC)
|
||||
pygame.display.set_caption('Balle rebondissante avec raquette')
|
||||
pygame.display.set_caption("Balle rebondissante avec raquette")
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
|
||||
@@ -37,8 +37,10 @@ while True: # Boucle principale
|
||||
balle.deplace()
|
||||
|
||||
# Collision balle-raquette
|
||||
if (balle.ypos + balle.rayon >= HAUTEUR_ECRAN - 20 and
|
||||
raquette.xpos <= balle.xpos <= raquette.xpos + raquette.largeur):
|
||||
if (
|
||||
balle.ypos + balle.rayon >= HAUTEUR_ECRAN - 20
|
||||
and raquette.xpos <= balle.xpos <= raquette.xpos + raquette.largeur
|
||||
):
|
||||
balle.yvit = -balle.yvit
|
||||
|
||||
balle.affiche(ecran)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
LARGEUR_ECRAN = 600
|
||||
HAUTEUR_ECRAN = 800
|
||||
|
||||
BLANC = (255,255,255)
|
||||
|
||||
BLANC = (255, 255, 255)
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import pygame
|
||||
from constantes import *
|
||||
|
||||
|
||||
class Raquette:
|
||||
"""
|
||||
Définit une raquette qui se déplace horizontalement
|
||||
dans le bas de la fenêtre écran.
|
||||
Attributs : largeur (int, par défaut 100),
|
||||
xpos (int, par défaut LARGEUR_ECRAN//2 - largeur//2),
|
||||
Attributs : largeur (int, par défaut 100),
|
||||
xpos (int, par défaut LARGEUR_ECRAN//2 - largeur//2),
|
||||
vit (int, par défaut 6)
|
||||
L'épaisseur de la raquette est de 10.
|
||||
Méthodes : deplaceGauche, deplaceDroite, affiche
|
||||
@@ -33,7 +34,10 @@ class Raquette:
|
||||
"""
|
||||
Dessine la raquette sur l'écran.
|
||||
"""
|
||||
pygame.draw.rect(ecran, (0, 0, 255), (int(self.xpos), HAUTEUR_ECRAN - 20, self.largeur, 10))
|
||||
pygame.draw.rect(
|
||||
ecran, (0, 0, 255), (int(self.xpos), HAUTEUR_ECRAN - 20, self.largeur, 10)
|
||||
)
|
||||
|
||||
if __name__ == '__main__':
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
pass
|
||||
|
||||
@@ -3,9 +3,9 @@ import random
|
||||
import sys
|
||||
|
||||
# Paramètres de la grille
|
||||
CELL_SIZE = 20 # Taille d'une cellule en pixels
|
||||
COLS = 30 # Nombre de colonnes
|
||||
ROWS = 30 # Nombre de lignes
|
||||
CELL_SIZE = 20 # Taille d'une cellule en pixels
|
||||
COLS = 30 # Nombre de colonnes
|
||||
ROWS = 30 # Nombre de lignes
|
||||
WIDTH = COLS * CELL_SIZE
|
||||
HEIGHT = ROWS * CELL_SIZE
|
||||
|
||||
@@ -15,12 +15,13 @@ WHITE = (255, 255, 255)
|
||||
GRAY = (100, 100, 100)
|
||||
GREEN = (0, 255, 0)
|
||||
|
||||
|
||||
class Cell:
|
||||
def __init__(self, i, j):
|
||||
self.i = i # Numéro de la colonne
|
||||
self.j = j # Numéro de la ligne
|
||||
# Chaque cellule possède 4 murs, tous présents initialement
|
||||
self.walls = {'top': True, 'right': True, 'bottom': True, 'left': True}
|
||||
self.walls = {"top": True, "right": True, "bottom": True, "left": True}
|
||||
self.visited = False
|
||||
|
||||
def draw(self, surface):
|
||||
@@ -31,23 +32,29 @@ class Cell:
|
||||
# Remplir la cellule (si visitée) AVANT de dessiner les murs
|
||||
if self.visited:
|
||||
pygame.draw.rect(surface, GRAY, (x, y, CELL_SIZE, CELL_SIZE))
|
||||
|
||||
|
||||
# Dessiner les murs par-dessus la couleur de fond
|
||||
if self.walls['top']:
|
||||
if self.walls["top"]:
|
||||
pygame.draw.line(surface, WHITE, (x, y), (x + CELL_SIZE, y))
|
||||
if self.walls['right']:
|
||||
pygame.draw.line(surface, WHITE, (x + CELL_SIZE, y), (x + CELL_SIZE, y + CELL_SIZE))
|
||||
if self.walls['bottom']:
|
||||
pygame.draw.line(surface, WHITE, (x + CELL_SIZE, y + CELL_SIZE), (x, y + CELL_SIZE))
|
||||
if self.walls['left']:
|
||||
if self.walls["right"]:
|
||||
pygame.draw.line(
|
||||
surface, WHITE, (x + CELL_SIZE, y), (x + CELL_SIZE, y + CELL_SIZE)
|
||||
)
|
||||
if self.walls["bottom"]:
|
||||
pygame.draw.line(
|
||||
surface, WHITE, (x + CELL_SIZE, y + CELL_SIZE), (x, y + CELL_SIZE)
|
||||
)
|
||||
if self.walls["left"]:
|
||||
pygame.draw.line(surface, WHITE, (x, y + CELL_SIZE), (x, y))
|
||||
|
||||
|
||||
def get_cell(i, j):
|
||||
"""Retourne la cellule aux coordonnées (i, j) si elle existe."""
|
||||
if 0 <= i < COLS and 0 <= j < ROWS:
|
||||
return grid[i][j]
|
||||
return None
|
||||
|
||||
|
||||
def get_unvisited_neighbors(cell):
|
||||
"""Retourne la liste des voisins non visités de la cellule donnée."""
|
||||
neighbors = []
|
||||
@@ -68,9 +75,10 @@ def get_unvisited_neighbors(cell):
|
||||
left = get_cell(i - 1, j)
|
||||
if left and not left.visited:
|
||||
neighbors.append(left)
|
||||
|
||||
|
||||
return neighbors
|
||||
|
||||
|
||||
def remove_walls(current, next_cell):
|
||||
"""
|
||||
Enlève les murs entre la cellule courante et le voisin sélectionné.
|
||||
@@ -78,17 +86,18 @@ def remove_walls(current, next_cell):
|
||||
dx = next_cell.i - current.i
|
||||
dy = next_cell.j - current.j
|
||||
if dx == 1: # Voisin à droite
|
||||
current.walls['right'] = False
|
||||
next_cell.walls['left'] = False
|
||||
current.walls["right"] = False
|
||||
next_cell.walls["left"] = False
|
||||
elif dx == -1: # Voisin à gauche
|
||||
current.walls['left'] = False
|
||||
next_cell.walls['right'] = False
|
||||
current.walls["left"] = False
|
||||
next_cell.walls["right"] = False
|
||||
elif dy == 1: # Voisin en bas
|
||||
current.walls['bottom'] = False
|
||||
next_cell.walls['top'] = False
|
||||
current.walls["bottom"] = False
|
||||
next_cell.walls["top"] = False
|
||||
elif dy == -1: # Voisin en haut
|
||||
current.walls['top'] = False
|
||||
next_cell.walls['bottom'] = False
|
||||
current.walls["top"] = False
|
||||
next_cell.walls["bottom"] = False
|
||||
|
||||
|
||||
def main():
|
||||
global grid
|
||||
@@ -99,7 +108,7 @@ def main():
|
||||
|
||||
# Création de la grille : une matrice de cellules
|
||||
grid = [[Cell(i, j) for j in range(ROWS)] for i in range(COLS)]
|
||||
|
||||
|
||||
# Initialisation de l'algorithme DFS
|
||||
current = grid[0][0] # Départ en haut à gauche
|
||||
current.visited = True
|
||||
@@ -143,12 +152,12 @@ def main():
|
||||
x = current.i * CELL_SIZE
|
||||
y = current.j * CELL_SIZE
|
||||
pygame.draw.rect(screen, GREEN, (x, y, CELL_SIZE, CELL_SIZE))
|
||||
|
||||
|
||||
pygame.display.flip()
|
||||
|
||||
pygame.quit()
|
||||
sys.exit()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user