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

61 lines
1.9 KiB
Python

import random
import string
class Robot:
nb_robot = 0
ORIENTATIONS = ["NORD", "EST", "SUD", "OUEST"]
STATUTS = {1: "En service", 2: "Hors Service", 3: " En réparation"}
DEFAULT_TYPE = "Générique"
def __init__(self, robot_type=DEFAULT_TYPE):
self.robot_type = robot_type
self._numero_serie = ''.join([random.choice(string.ascii_uppercase) for i in range(2)]) \
+ ("%4d" % random.randint(0, 1000000000))
self._orientation = Robot.ORIENTATIONS[0]
self._statut = 1
Robot.nb_robot += 1
@property
def robot_type(self):
return self._robot_type
@robot_type.setter
def robot_type(self, value):
if len(value) >= 2:
self._robot_type = value
else:
self._robot_type = Robot.DEFAULT_TYPE
print("Le type du robot doit comporter au minimum 2 caractères.")
@property
def numero_serie(self):
return self._numero_serie
@property
def orientation(self):
return self._orientation
@property
def statut(self):
return self.statut
@statut.setter
def statut(self, value):
if value in Robot.STATUTS.keys():
self._statut = value
else:
self._robot_type = Robot.DEFAULT_TYPE
print("Statut invalide ! Valeurs acceptées : ", Robot.STATUTS)
def __str__(self):
return "Robot {} - {}\nStatut : {}\nOrientation : {}".format(self._numero_serie, self._robot_type, Robot.STATUTS[self._statut],
self._orientation)
def tourner(self, value):
if value in [1, -1]:
self._orientation = Robot.ORIENTATIONS[(Robot.ORIENTATIONS.index(self._orientation) + value)%len(Robot.ORIENTATIONS)]
else:
print("Un robot peut tourner de 1 ou de -1.")