Skip to content
Snippets Groups Projects
Commit 2151a1eb authored by Koffi Gantchou's avatar Koffi Gantchou
Browse files

suite de rush hour

parent a69b8be8
No related branches found
No related tags found
No related merge requests found
j'ai commencé a reflechir sur le projet et depuis le week-end compte tenu de mon emploi du temps chargé je n'ai s pu faire de rendu mais j'ai ecris quelques lignes de code notamment en deffinissant 2 classes; la classe cell() qui va s'occuper de mes cellues tout au long du jeu et la classe vehicules qui prendra tous les parametres des vehicules
a present j'ai fais l'interface graphique avec canvas en modelisant les voitures et le plateu de jeu SEMAINE1
pour commencer
j'ai ecris quelques lignes de code notamment en deffinissant 2 classes; la classe Cell() qui va
s'occuper de mes cellules tout au long du jeu et la classe Vehicule qui s'occupe un vehicule
SEMAINE2 ET SEMAINE3
j'ai defini la classe Cell dans le module cellule qui a pour attribut des coordonnées x et y et d'une couleur qui est *
les cellules vides sont d'abord représentées par les * et occupées ils ont la couleur ou le nom des vehicules a la place
j'ai defini la classe Plateau dans le module plateau et mis les voitures tout en considerant
que les voitures sont des listes de cellules deja defini dans la classe Cell
Dans le module jeu je vois l'etat du jeu en affichant le plateau contenant des vehicules et des places libres
SEMAINE5
j'ai continué dans la classe Plateau qui a pour but de montrer l'evolution du plateau de jeu
tout en definissant une fonction qui verifie si une position est valide
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
#mi13 #mi13
class Cell(): class Cell():
""" construction d'une cellule de la grille de jeu et le met a jour """ construction d'une cellule de la grille de jeu
une cellule est caracterisé par ses coordonnes sur le plateau et sa couleur une cellule est caracterisé par ses coordonnes sur le plateau et sa couleur
et caracterisé par le fait d'etre vide ou non et caracterisé par le fait d'etre vide ou non
Exemple(s) : Exemple(s) :
$$$ $$$
""" """
def __init__(self,x,y,color): def __init__(self,x,y,couleur):
""" à_remplacer_par_ce_que_fait_la_fonction """ à_remplacer_par_ce_que_fait_la_fonction
Précondition : Précondition :
...@@ -17,17 +17,10 @@ class Cell(): ...@@ -17,17 +17,10 @@ class Cell():
""" """
self.x = x self.x = x
self.y = y self.y = y
self.color = color self.couleur = couleur # permettra de savoir si une cellule est vide ou pas
self.vehicule = None self.vehicule = None
def est_vide(self)->bool:
""" verifie si une cellule est vide ou pas
Précondition :
Exemple(s) :
$$$
"""
return self.color == 'v'
......
import tkinter as tk
rows = 6
cols = 6
case_size = 80
root = tk.Tk()
root.title("Plateau de 6x6")
canvas = tk.Canvas(root , width = 480 , height = 480 , bg = "green")
canvas.pack()
for i in range(rows):
for j in range(cols):
a1 = j * case_size
b1 = i * case_size
a2 = a1 + case_size
b2 = b1 + case_size
canvas.create_rectangle(a1,b1,a2,b2, outline = 'blue' , fill = "black")
root.mainloop
\ No newline at end of file
from cellules import Cell from cellule import Cell
class Grille(): class Grille():
""" à_remplacer_par_ce_que_fait_la_classe """ à_remplacer_par_ce_que_fait_la_classe
......
from cellules import Cell from cellule import Cell
from vehicules import Vehicule from vehicule import Vehicule
from plateau import Plateau from plateau import Plateau
def main(): def main():
vehicules = [] vehicules = []
A = Vehicule(0,0,2,'verti','A') A = Vehicule(0,0,2,'horizontal','A')
Z = Vehicule(2,1,2,'verti','Z') Z = Vehicule(2,1,2,'horizontal','Z')
C = Vehicule(4,4,2,'verti','C') C = Vehicule(4,3,2,'horizontal','C')
R = Vehicule(5,2,3,'verti','R') R = Vehicule(5,2,3,'horizontal','R')
B = Vehicule(4,0,2,'horizo','B') B = Vehicule(2,3,2,'vertical','B')
vehicules = [A,Z,C,R,B] vehicules = [A,Z,C,R,B]
plateau = Plateau(vehicules) plateau = Plateau(vehicules)
plateau.affiche_grille() plateau.affiche_grille()
while not(plateau.est_fini()):
couleur = input('choisie vehicule a deplacer : ')
mouvement = input ('choisie le mouvement : gauche, droite, haut , bas : ')
de_combien = int(input('vous voulez deplacer de combat : '))
vehicule = plateau.recherhe_voiture(couleur)
if plateau.est_valide(vehicule, mouvement,de_combien):
plateau.deplacer(vehicule,mouvement,de_combien)
else:
print('deplacement invalide')
plateau.affiche_grille()
if __name__ == "__main__": if __name__ == "__main__":
main() main()
from cellules import Cell from cellule import Cell
from vehicules import Vehicule from vehicule import Vehicule
class Plateau(): class Plateau():
""" à_remplacer_par_ce_que_fait_la_classe """ à_remplacer_par_ce_que_fait_la_classe
...@@ -16,7 +16,7 @@ class Plateau(): ...@@ -16,7 +16,7 @@ class Plateau():
self.vehicules = vehicules self.vehicules = vehicules
self.grille = [[Cell(x,y,'*') for x in range(6)] for y in range(6)] self.grille = [[Cell(x,y,'*') for x in range(6)] for y in range(6)]
for vehicule in vehicules: for vehicule in vehicules:
for cell in vehicule.get_voiture(): for cell in vehicule.get_vehicule_cells():
self.grille[cell.x][cell.y] = cell self.grille[cell.x][cell.y] = cell
def affiche_grille(self): def affiche_grille(self):
...@@ -29,18 +29,129 @@ class Plateau(): ...@@ -29,18 +29,129 @@ class Plateau():
for i in range(6): for i in range(6):
for j in range(6): for j in range(6):
cell = self.grille[i][j] cell = self.grille[i][j]
print(cell.color,end = ' ' ) print(cell.couleur,end = ' ' )
print('\n') print('\n')
def est_valide(self,vehicule:Vehicule): def est_valide(self,vehicule:Vehicule,mouvement,de_combien)->bool:
""" à_remplacer_par_ce_que_fait_la_fonction """ verifier si une position est valide
Précondition :
Exemple(s) :
$$$ A = Vehicule(0,0,2,'horizontal','A')
$$$ Z = Vehicule(2,1,2,'horizontal','Z')
$$$ C = Vehicule(4,3,2,'horizontal','C')
$$$ R = Vehicule(5,2,3,'horizontal','R')
$$$ B = Vehicule(2,3,2,'vertical','B')
$$$ p = Plateau([A,Z,C,R,B])
$$$ p.est_valide(B,'haut',2)
True
$$$ p.est_valide(B,'gauche',2)
False
"""
# la variable de_combien est saisie par l'utilisateur dans le module jeu et elle est utilisée dans ce cas pour voir si le pas vers lequel l'utilisateur veut aller est possible
cellules_vehicule = vehicule.get_vehicule_cells()
if vehicule.orientation == 'horizontal':
if mouvement == 'gauche':
y = cellules_vehicule[0].y - de_combien
x = cellules_vehicule[0].x
if y >= 0 and self.grille[x][y].couleur == '*' :
return True
return False
elif mouvement == 'droite':
y = cellules_vehicule[-1].y + de_combien
x = cellules_vehicule[-1].x
if y<=5 and self.grille[x][y].couleur == '*':
return True
return False
elif vehicule.orientation == 'vertical':
if mouvement == 'haut':
x = cellules_vehicule[0].x - de_combien
y = cellules_vehicule[0].y
if x>=0 and self.grille[x][y].couleur == '*' :
return True
return False
elif mouvement == 'bas':
x = cellules_vehicule[-1].x + de_combien
y = cellules_vehicule[-1].y
if x>=0 and self.grille[x][y].couleur == '*' :
return True
return False
return False
def recherhe_voiture(self,couleur)->Vehicule:
""" recherche la voiture dans la liste de voitures sur le plateau
Précondition :
Exemple(s) :
$$$ A = Vehicule(0,0,2,'horizontal','A')
$$$ Z = Vehicule(2,1,2,'horizontal','Z')
$$$ C = Vehicule(4,3,2,'horizontal','C')
$$$ R = Vehicule(5,2,3,'horizontal','R')
$$$ B = Vehicule(2,3,2,'vertical','B')
$$$ p = Plateau([A,Z,C,R,B])
$$$ p.recherhe_voiture('A').couleur
'A'
$$$ p
"""
for vehicule in self.vehicules:
if couleur == vehicule.couleur:
return vehicule
return None
def deplacer(self,vehicule:Vehicule,mouvement,de_combien):
""" deplacement de l'objet voiture
Précondition : Précondition :
Exemple(s) : Exemple(s) :
$$$ $$$
""" """
# la variable de_combien permet de deplacer le vehicule dans la mesure du possible d'un nombre de pas
for cell in vehicule.get_vehicule_cells():
self.grille[cell.x][cell.y].couleur = '*'
if vehicule.orientation == 'horizontal':
if mouvement == 'gauche':
vehicule.y_deb -= de_combien
elif mouvement == 'droite':
vehicule.y_deb += de_combien
elif vehicule.orientation == 'vertical':
if mouvement == 'bas':
vehicule.x_deb +=de_combien
elif mouvement == 'haut':
vehicule.x_deb -= de_combien
for cell in vehicule.get_vehicule_cells():
self.grille[cell.x][cell.y] = cell
def est_fini(self)->bool:
""" montre quand le jeu se termine
Précondition :
Exemple(s) :
$$$ A = Vehicule(0,0,2,'horizontal','A')
$$$ Z = Vehicule(2,1,2,'horizontal','Z')
$$$ C = Vehicule(4,3,2,'horizontal','C')
$$$ R = Vehicule(5,2,3,'horizontal','R')
$$$ B = Vehicule(2,3,2,'vertical','B')
$$$ p = Plateau([A,Z,C,R,B])
$$$ p.est_fini()
False
$$$ s = Plateau([A,Z,C,R])
$$$ s.est_fini()
True
"""
vehicule_Z = self.recherhe_voiture('Z')
for i in range(vehicule_Z.y_deb + vehicule_Z.taille,6):
if self.grille[2][i].couleur != '*':
return False
return True
......
from cellules import Cell from cellule import Cell
import tkinter as tk
class Vehicule(): class Vehicule():
""" construit un vehicule qui est une liste de cellule """ construit un vehicule qui est une liste de cellule
Exemple(s) : Exemple(s) :
$$$ v1 = Vehicule(2,0,2,'horizo','Z') $$$ v1 = Vehicule(2,0,2,'horizontal','Z')
$$$ v1.x_deb $$$ v1.x_deb
2 2
$$$ v1.y_deb $$$ v1.y_deb
...@@ -13,7 +15,7 @@ class Vehicule(): ...@@ -13,7 +15,7 @@ class Vehicule():
$$$ v1.taille $$$ v1.taille
2 2
$$$ v1.orientation $$$ v1.orientation
'horizo' 'horizontal'
$$$ v1.couleur $$$ v1.couleur
'Z' 'Z'
""" """
...@@ -24,66 +26,38 @@ class Vehicule(): ...@@ -24,66 +26,38 @@ class Vehicule():
Exemple(s) : Exemple(s) :
$$$ $$$
""" """
self.x_deb = x_deb self.x_deb = x_deb # coordonnée x de depart du vehicule
self.y_deb = y_deb self.y_deb = y_deb # coordonnée y de depart du vehicule
self.taille = taille self.taille = taille # taille de vehicule
self.orientation = orientation self.orientation = orientation # savoir si c'est horizontal ou vertical
self.couleur = couleur self.couleur = couleur # distinguer les voitures
def get_vehicule_cells(self)->list[Cell]:
def get_voiture(self)->list[Cell]: """ modelise un vehicule
""" modelise les voitures
Précondition : Précondition :
Exemple(s) : Exemple(s) :
$$$ $$$
""" """
cells = [] cells = []
if self.orientation == 'verti': if self.orientation == 'horizontal':
for i in range(self.taille): for i in range(self.taille):
cell = Cell(self.x_deb,self.y_deb + i,self.couleur) cell = Cell(self.x_deb,self.y_deb + i,self.couleur)# quand le vehicule est horizontal sur le plateau le coordonne x est fixe et le c'est le y qui bouge
cells.append(cell) cells.append(cell)
elif self.orientation == 'horizo': elif self.orientation == 'vertical':
for i in range(self.taille): for i in range(self.taille):
cell = Cell(self.x_deb+i,self.y_deb,self.couleur) cell = Cell(self.x_deb+i,self.y_deb,self.couleur)# le contraire quand c'est vertical
cells.append(cell) cells.append(cell)
return cells
import tkinter as tk
def dessiner_voiture(canvas):
# Corps de la voiture
canvas.create_rectangle(150, 200, 450, 250, fill="blue", outline="black")
# Fenêtres de la voiture
canvas.create_rectangle(180, 210, 240, 240, fill="white", outline="black")
canvas.create_rectangle(260, 210, 320, 240, fill="white", outline="black")
# Toit de la voiture
canvas.create_rectangle(180, 180, 320, 200, fill="blue", outline="black")
return cells
def deplacer_voiture(self,deplacement): def __eq__(self,other)->bool:
""" à_remplacer_par_ce_que_fait_la_fonction """ à_remplacer_par_ce_que_fait_la_fonction
Précondition : Précondition :
Exemple(s) : Exemple(s) :
$$$ $$$
""" """
for vehicule in self.vehicules: return True
if self.orientation == 'horizo':
self.x += deplacement
elif self.orientation == 'verti':
self.y += deplacement
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment