7.2 KiB
Évaluation sur la Programmation Orientée Objet, les Piles et les Files
Durée : 1h à 1h30
Consignes :
- Cette évaluation est individuelle.
- Chaque réponse doit être correctement commentée.
- Soignez la lisibilité et la clarté de votre code.
Partie 1 : Programmation Orientée Objet (10 points)
Contexte :
Un développeur de RPG (jeu de rôle) souhaite modéliser les personnages jouables de son jeu ainsi que leurs inventaires.
Travail à faire :
Implémente les classes suivantes :
-
Classe
Personnage:- Attributs :
nom(chaîne)niveau(entier, par défaut 1)vie(entier, par défaut 100)inventaire(liste, vide par défaut)
- Méthodes :
__init__: initialise un personnage.ajouter_objet(objet): ajoute un objet dans l’inventaire.afficher_inventaire(): affiche les objets dans l’inventaire.subir_degats(points): réduit les points de vie du personnage (minimum 0).__str__: affiche les informations du personnage.
- Attributs :
-
Classe
Objet:- Attributs :
nom(chaîne)rarete(chaîne : "commun", "rare", "légendaire")
- Méthodes :
__init__: initialise un objet.__str__: affiche les informations de l’objet.
- Attributs :
Exemple d'utilisation attendu :
# Création des objets
epee = Objet("Épée magique", "rare")
potion = Objet("Potion de soin", "commun")
# Création du personnage
hero = Personnage("Link")
hero.ajouter_objet(epee)
hero.ajouter_objet(potion)
# Afficher l'inventaire et infliger des dégâts
hero.afficher_inventaire()
hero.subir_degats(30)
print(hero)
Partie 2 : Les piles (5 points)
Contexte :
Un joueur de Tetris souhaite programmer la mécanique d’empilement et de suppression des lignes complètes.
Travail à faire :
Implémente une classe Pile pour modéliser les lignes de Tetris.
- Attributs :
elements(liste vide au départ)
- Méthodes :
ajouter_ligne(valeur): ajoute une ligne de blocs à la pile.supprimer_ligne(): supprime la ligne en haut de la pile.est_vide(): renvoieTruesi la pile est vide, sinonFalse.
Exemple d'utilisation attendu :
pile = Pile()
pile.ajouter_ligne("Ligne 1")
pile.ajouter_ligne("Ligne 2")
pile.supprimer_ligne()
print(pile.est_vide()) # Affiche : False
Partie 3 : Les files (5 points)
Contexte :
Un fast-food inspiré du Café Pikachu utilise une file pour gérer les commandes des clients.
Travail à faire :
Écris une classe File pour gérer les commandes.
- Attributs :
elements(liste vide au départ)
- Méthodes :
ajouter_commande(valeur): ajoute une commande en fin de file.traiter_commande(): retire et renvoie la commande en début de file.est_vide(): renvoieTruesi la file est vide, sinonFalse.
Exemple d'utilisation attendu :
file = File()
file.ajouter_commande("Commande Pikachu Pancakes")
file.ajouter_commande("Commande Evoli Latte")
print(file.traiter_commande()) # Affiche : "Commande Pikachu Pancakes"
print(file.est_vide()) # Affiche : False
Partie 4 : POO – Gestion d'une arène de combat (10 points)
Contexte :
Tu es chargé(e) de coder un simulateur d’arène de combat. Deux créatures s’affrontent jusqu’à ce que l’une d’elles n’ait plus de points de vie. Chaque créature possède des attaques spécifiques et un nombre de points de vie limité.
Travail à faire :
Implémente les classes suivantes :
-
Classe
Creature:- Attributs :
nom(chaîne)vie(entier, par défaut 50)force(entier, par défaut 10)
- Méthodes :
__init__: initialise une créature.attaquer(cible): réduit les points de vie de la créature cible en fonction de la force de l'attaquant.est_vivant(): renvoieTruesi les points de vie sont supérieurs à 0, sinonFalse.__str__: affiche les informations de la créature.
- Attributs :
-
Classe
Combat:- Attributs :
creature1(objet de typeCreature)creature2(objet de typeCreature)
- Méthodes :
__init__: initialise un combat entre deux créatures.lancer_combat(): lance une boucle où chaque créature attaque l'autre jusqu'à ce qu'une des deux ne soit plus vivante. Affiche le déroulement du combat.
- Attributs :
Exemple d'utilisation attendu :
# Création des créatures
pikachu = Creature("Pikachu", vie=35, force=12)
dracaufeu = Creature("Dracaufeu", vie=50, force=15)
# Lancement du combat
combat = Combat(pikachu, dracaufeu)
combat.lancer_combat()
Résultat attendu :
Le programme affiche un résumé des attaques et indique quelle créature a gagné :
Pikachu attaque Dracaufeu (-12 PV).
Dracaufeu attaque Pikachu (-15 PV).
Pikachu attaque Dracaufeu (-12 PV).
Dracaufeu attaque Pikachu (-15 PV).
Pikachu est KO ! Dracaufeu remporte le combat.
Barème :
- Classe
Creature: 6 points- Implémentation des attributs et méthodes.
- Classe
Combat: 4 points- Lancer une boucle et afficher le déroulement du combat.