- sam. 12 sept. 2020 15:45
#204374
Bonjour, je viens de commencer à apprendre la programmation orientée objet et je cherche à créer 2 classes simulant une voiture et un conducteur. Je code en Python 3.
Le but de l'exercice est de pouvoir accélérer ou décélérer du coté conducteur et que du coté voiture, si la vitesse dépasse la vitesse maximale autorisée (rentrée par l'utilisateur) , la voiture ne dépasse pas la vitesse max. Pareil si une vitesse est négative elle est ramenée à 0 (la voiture ne recule pas).
J'ai réussi à faire accélérer et décélérer la voiture à ma guise mais je n'arrive pas à limiter la vitesse de la voiture (grâce à la classe car). Je pense que mon erreur est toute bête mais je reste bloqué la dessus j'ai donc besoin de votre aide SVP.
Je joins ci-dessous ce que j'ai codé (les classes car et driver sont des fichiers différents du main).
car:
driver:
Le but de l'exercice est de pouvoir accélérer ou décélérer du coté conducteur et que du coté voiture, si la vitesse dépasse la vitesse maximale autorisée (rentrée par l'utilisateur) , la voiture ne dépasse pas la vitesse max. Pareil si une vitesse est négative elle est ramenée à 0 (la voiture ne recule pas).
J'ai réussi à faire accélérer et décélérer la voiture à ma guise mais je n'arrive pas à limiter la vitesse de la voiture (grâce à la classe car). Je pense que mon erreur est toute bête mais je reste bloqué la dessus j'ai donc besoin de votre aide SVP.
Je joins ci-dessous ce que j'ai codé (les classes car et driver sont des fichiers différents du main).
car:
Code : Tout sélectionner
class car(object):
def __init__(self,maxspeed,cspeed): #initialisation de la class car
self.maxspeed=maxspeed #affectation de la valeur de la vitesse max
self.cspeed=cspeed
def accelerate(self): #fonction accelerate qui empêche la vitesse de la voiture de dépasser la vitesse maximale
if self.cspeed>self.maxspeed : #si la vitesse de la voiture insérée dans la focntion accelerate est > à la vitesse max on affecte la vitesse max à la voiture
self.cspeed=self.maxspeed
def decelerate(self): #fonction decelerate qui empêche la vitesse de la voiture d'être négative
if self.cspeed<0 : #si la vitesse de la voiture insérée dans la focntion accelerate est négative on affecte la vitesse 0 à la voiture
self.cspeed=0
def retnspeed (self): #retour de la valeur de la vitesse (avec restrictions)
return self.cspeed
driver:
Code : Tout sélectionner
main:
class Driver(object):
def __init__(self,Name,age,car,wspeed): #initialisation de la class driver
self.Name=Name #affectation de la valeur nom du driver
self.age=age #affectation de la valeur de l'age du driver
self.car=car #affectation de la valeur de la voiture du driver
self.wspeed=wspeed #affectation de la valeur de la vitesse actuelle de la voiture
def toHundred(self): #fonction pour augmenter la vitesse de 100
self.wspeed+=100
def dispSpeed(self): #fonction pour afficher la vitesse
print(f"La vitesse actuelle est de {self.wspeed}")
def userAcc(self): #fonction pour augmenter la vitesse de 20
self.wspeed+=20
def userDec(self): #fonction pour baisser la vitesse de 30
self.wspeed+=-30
def retspeed(self): #fonction pour retourner la valeur de la vitesse
return self.wspeed
Code : Tout sélectionner
from car import car #on importe les classe nécessaire au programme
from driver import Driver
def main():
cspeed=0 #initialisation de la vitesse de la voiture à 0
print("Vitesse max :") #demande vitesse max voulue
vitessemax=int(input())
print("Nom :") #demande nom
nom=input()
print("Age:") #demande age
age=input()
print("Voiture:") #demande voiture
voiture=input()
exit=2 #variable while
Fdriver=Driver(nom,age,voiture,cspeed)#utilisation de la classe driver avec les infos récupérées (nom,age,voiture)
Fcar=car(vitessemax,cspeed) #utilisation de la classe car avec les infos récupérées (vitessemax)
while(exit!=1):
print("Pour accelerer de 100 taper 1")
print("Pour montrer la vitesse taper 2")
print("Pour accelerer de 20 taper 3") #affichage menu choix
print("Pour decelerer de 30 taper 4")
print("Pour quitter taper 5")
print("")
choix=int(input())
if(choix==1): #acceleration de 100
Fdriver.toHundred()
cspeed=Fdriver.retspeed()
cspeed=Fcar.accelerate()
cspeed=Fcar.retnspeed()
if(choix==2): #montrer la vitesse
Fdriver.dispSpeed()
if(choix==3): #accelerer de 20
Fdriver.userAcc()
cspeed=Fdriver.retspeed()
Fcar.accelerate()
cspeed=Fcar.retnspeed()
if(choix==4): #decelerer de 30
Fdriver.userDec()
cspeed=Fdriver.retspeed()
Fcar.decelerate()
cspeed=Fcar.retnspeed()
if(choix==5): #quitter
exit=1
if __name__ == '__main__': #lancement programme
main()