Files
ENI-Python/Robots/solution/Modele/Aspirateur.py
2025-09-10 14:29:19 +02:00

81 lines
2.5 KiB
Python

from Modele.RobotMobile import RobotMobile
class Aspirateur:
def __init__(self, marque, puissance):
self.marque = marque
self.puissance = puissance
@property
def marque(self):
return self._marque
@marque.setter
def marque(self, value):
self._marque = value
@property
def puissance(self):
return self._puissance
@puissance.setter
def puissance(self, value):
self._puissance = value
def __str__(self):
return "Aspirateur {}, puissance={}W".format(self._marque, self._puissance)
class AspirateurRobot(RobotMobile, Aspirateur):
def __init__(self, marque, puissance, distance_max):
Aspirateur.__init__(self, marque, puissance)
RobotMobile.__init__(self, robot_type="Aspirateur Robot")
self.distance_max = distance_max
@property
def distance_max(self):
return self._distance_max
@distance_max.setter
def distance_max(self, value):
self._distance_max = value
def __str__(self):
return RobotMobile.__str__(self) + "\nPuissance : {}W".format(self._puissance)
def parcours(self, abs_max, ord_max):
grid = [['-' for i in range(abs_max)] for j in range(ord_max)]
grid[0][0] = "*"
# Se diriger vers l'Est
while self.orientation != 'EST':
self.tourner(1)
distance = 0
while distance < self._distance_max and self.abs < abs_max and self.ord < ord_max:
self.avancer(1)
distance += 1
grid[self.ord][self.abs] = '*'
# En bout de ligne on va vers le SUD puis l'OUEST
if self._abs == abs_max - 1:
self.tourner(-1)
if distance < self._distance_max and self.abs < abs_max and self.ord < ord_max:
self.avancer(1)
distance += 1
grid[self.ord][self.abs] = '*'
self.tourner(-1)
# En début de ligne on va vers le SUD puis l'EST
if self._abs == 0:
self.tourner(1)
if distance < self._distance_max and self.abs < abs_max and self.ord < ord_max:
self.avancer(1)
distance += 1
grid[self.ord][self.abs] = '*'
self.tourner(1)
# Affichage du parcours
for i in range(len(grid)):
for j in range(len(grid[i])):
print(grid[i][j], end='')
print()