T2.1 POO: Exercices⚓︎
Exercice 1
- Compléter la classe
Balle
avec la méthodeavance
qui doit actualiser les coordonnées de l'objet en gérant les rebonds sur les bords de la fenêtre. - Créer une liste de 100 instances de cette classe et compléter la boucle des événements.
- Si possible, gérer les collisions...
Exercice 2
- Écrire une classe
Voiture
qui contiendra les attributskilometrage
,consommation
dont les valeurs seront données comme arguments à l'initialisation et un attributcarburant
valant0
par défaut. - Doter la classe d'une méthode
affiche
qui donne le kilométrage et le carburant disponible. - Doter la classe d'une méthode
remplir
qui prend en argument un entier correspondant au volume de carburant à ajouter au réservoir. - Doter la classe d'une méthode
avance
qui prend en argument un entier correspondant au nombre de kilomètres parcourus et qui actualise les valeurs des attributskilometrage
etcarburant
.
Exemple d'utilisation de la classe
>>> christine = Voiture(0, 8)
>>> christine.affiche()
La voiture a parcouru 0 kilomètres et il y a 0 litres d'essence dans le réservoir.
>>> christine.remplir(25)
>>> christine.avance(200)
>>> christine.affiche()
La voiture a parcouru 200 kilomètres et il y a 9.0 litres d'essence dans le réservoir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Exercice 3
- Écrire une classe
Chrono
qui contiendra les attributsheures
,minutes
etsecondes
. - Doter la classe d'une méthode
affiche()
qui affichera le tempst
. - Doter la classe d'une méthode
avance(s)
qui fera avancer le tempst
des
secondes.
Exemple d'utilisation de la classe
>>> t = Chrono(17,25,38)
>>> t.heures
17
>>> t.minutes
25
>>> t.secondes
38
>>> t.affiche()
'Il est 17 heures, 25 minutes et 38 secondes'
>>> t.avance(27)
>>> t.affiche()
'Il est 17 heures, 26 minutes et 5 secondes'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Exercice 4
Écrire une classe Player
qui :
- ne prendra aucun argument lors de son instanciation.
- affectera à chaque objet créé un attribut
energie
valant 3 par défaut. - affectera à chaque objet créé un attribut
alive
valantTrue
par défaut. - fournira à chaque objet une méthode
blessure()
qui diminue l'attributenergie
de 1. - fournira à chaque objet une méthode
soin()
qui augmente l'attributenergie
de 1. - si l'attribut
energie
passe à 0, l'attributalive
doit passer àFalse
et ne doit plus pouvoir évoluer.
Exemple d'utilisation de la classe
>>> mario = Player()
>>> mario.energie
3
>>> mario.soin()
>>> mario.energie
4
>>> mario.blessure()
>>> mario.blessure()
>>> mario.blessure()
>>> mario.alive
True
>>> mario.blessure()
>>> mario.alive
False
>>> mario.soin()
>>> mario.alive
False
>>> mario.energie
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Exercice 5
On souhaite construire une base d'objets servant à créer des jeux utilisant des dés.
-
Un dé doit posséder un nombre de faces, ainsi qu'une valeur (la face supérieure du dé une fois qu'on l'a lancé, et la valeur -1 s'il n'a pas encore été lancé). On doit pouvoir lancer le dé, c'est-à-dire lui attribuer une valeur aléatoire entre 1 et son nombre de faces).
-
Un jeu de dés possède un nombre de dés ainsi qu'un ensemble de ces dés. On doit pouvoir lancer tous les dés (en une fois), faire la somme des valeurs des dés, et on souhaite afficher la valeur des dés ainsi que leur somme.
Questions:
- Créer un diagramme de classe pour deux classes représentant ce problème: une classe
Jeu
et une classeDe
. - Écrire les classes, sachant qu'une instance de classe
Jeu
doit prendre en arguments le nombre de dés et le nombre de faces de chaque dé (identique pour tous les dés), et qu'une instance de classeDe
doit prendre en argument son nombre de faces.
Exemples d'utilisation
>>> j = Jeu(3, 6) #pour créer un jeu de 3 dés à 6 faces
>>> print(j)
Les dés n'ont pas été lancés
>>> j.lancer()
>>> j.somme()
13
>>> print(j)
Les dés valent 2, 5 et 6 et leur somme vaut 13.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
Exercices Type BAC