2024-11-22 08:14:52 +01:00
{
"cells": [
{
"cell_type": "markdown",
"id": "75db6ded",
"metadata": {},
"source": [
"\n",
"# Évaluation sur la Programmation Orientée Objet, les Piles et les Files\n",
"\n",
"### Durée : 1h à 1h30\n",
"\n",
"---\n",
"\n",
"## Consignes :\n",
"1. Cette évaluation est individuelle.\n",
"2. Chaque réponse doit être correctement commentée.\n",
"3. Soignez la lisibilité et la clarté de votre code.\n"
]
},
{
"cell_type": "markdown",
"id": "09af4f46",
"metadata": {},
"source": [
"\n",
"## Partie 1 : Programmation Orientée Objet (10 points)\n",
"\n",
"### Contexte :\n",
"Un développeur de RPG (jeu de rôle) souhaite modéliser les personnages jouables de son jeu ainsi que leurs inventaires.\n",
"\n",
"### Travail à faire :\n",
"Implémente les classes suivantes :\n",
"\n",
"1. **Classe `Personnage`** :\n",
" - Attributs : \n",
" - `nom` (chaîne)\n",
" - `niveau` (entier, par défaut 1)\n",
" - `vie` (entier, par défaut 100)\n",
" - `inventaire` (liste, vide par défaut)\n",
" - Méthodes :\n",
" - `__init__` : initialise un personnage.\n",
" - `ajouter_objet(objet)` : ajoute un objet dans l’ inventaire.\n",
" - `afficher_inventaire()` : affiche les objets dans l’ inventaire.\n",
" - `subir_degats(points)` : réduit les points de vie du personnage (minimum 0).\n",
" - `__str__` : affiche les informations du personnage.\n",
"\n",
"2. **Classe `Objet`** :\n",
" - Attributs :\n",
" - `nom` (chaîne)\n",
" - `rarete` (chaîne : \"commun\", \"rare\", \"légendaire\")\n",
" - Méthodes :\n",
" - `__init__` : initialise un objet.\n",
" - `__str__` : affiche les informations de l’ objet.\n",
"\n",
"### Exemple d'utilisation attendu :\n",
"```python\n",
"# Création des objets\n",
"epee = Objet(\"Épée magique\", \"rare\")\n",
"potion = Objet(\"Potion de soin\", \"commun\")\n",
"\n",
"# Création du personnage\n",
"hero = Personnage(\"Link\")\n",
"hero.ajouter_objet(epee)\n",
"hero.ajouter_objet(potion)\n",
"\n",
"# Afficher l'inventaire et infliger des dégâts\n",
"hero.afficher_inventaire()\n",
"hero.subir_degats(30)\n",
"print(hero)\n",
"```\n"
]
},
{
"cell_type": "markdown",
"id": "6769bdf1",
"metadata": {},
"source": [
"\n",
"## Partie 2 : Les piles (5 points)\n",
"\n",
"### Contexte :\n",
"Un joueur de Tetris souhaite programmer la mécanique d’ empilement et de suppression des lignes complètes.\n",
"\n",
"### Travail à faire :\n",
"Implémente une classe `Pile` pour modéliser les lignes de Tetris.\n",
"\n",
"1. Attributs :\n",
" - `elements` (liste vide au départ)\n",
"2. Méthodes :\n",
" - `ajouter_ligne(valeur)` : ajoute une ligne de blocs à la pile.\n",
" - `supprimer_ligne()` : supprime la ligne en haut de la pile.\n",
" - `est_vide()` : renvoie `True` si la pile est vide, sinon `False`.\n",
"\n",
"### Exemple d'utilisation attendu :\n",
"```python\n",
"pile = Pile()\n",
"pile.ajouter_ligne(\"Ligne 1\")\n",
"pile.ajouter_ligne(\"Ligne 2\")\n",
"pile.supprimer_ligne()\n",
"print(pile.est_vide()) # Affiche : False\n",
"```\n"
]
},
{
"cell_type": "markdown",
"id": "1544315c",
"metadata": {},
"source": [
"\n",
"## Partie 3 : Les files (5 points)\n",
"\n",
"### Contexte :\n",
"Un fast-food inspiré du **Café Pikachu** utilise une file pour gérer les commandes des clients.\n",
"\n",
"### Travail à faire :\n",
"Écris une classe `File` pour gérer les commandes.\n",
"\n",
"1. Attributs :\n",
" - `elements` (liste vide au départ)\n",
"2. Méthodes :\n",
" - `ajouter_commande(valeur)` : ajoute une commande en fin de file.\n",
" - `traiter_commande()` : retire et renvoie la commande en début de file.\n",
" - `est_vide()` : renvoie `True` si la file est vide, sinon `False`.\n",
"\n",
"### Exemple d'utilisation attendu :\n",
"```python\n",
"file = File()\n",
"file.ajouter_commande(\"Commande Pikachu Pancakes\")\n",
"file.ajouter_commande(\"Commande Evoli Latte\")\n",
"print(file.traiter_commande()) # Affiche : \"Commande Pikachu Pancakes\"\n",
"print(file.est_vide()) # Affiche : False\n",
"```\n"
]
},
{
"cell_type": "markdown",
"id": "8e12e449",
"metadata": {},
"source": [
"\n",
"## Partie 4 : POO – Gestion d'une arène de combat (10 points)\n",
"\n",
"### Contexte :\n",
"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é.\n",
"\n",
"---\n",
"\n",
"### Travail à faire :\n",
"Implémente les classes suivantes :\n",
"\n",
"1. **Classe `Creature`** :\n",
" - Attributs :\n",
" - `nom` (chaîne)\n",
" - `vie` (entier, par défaut 50)\n",
" - `force` (entier, par défaut 10)\n",
" - Méthodes :\n",
" - `__init__` : initialise une créature.\n",
" - `attaquer(cible)` : réduit les points de vie de la créature cible en fonction de la force de l'attaquant.\n",
" - `est_vivant()` : renvoie `True` si les points de vie sont supérieurs à 0, sinon `False`.\n",
" - `__str__` : affiche les informations de la créature.\n",
"\n",
"2. **Classe `Combat`** :\n",
" - Attributs :\n",
" - `creature1` (objet de type `Creature`)\n",
" - `creature2` (objet de type `Creature`)\n",
" - Méthodes :\n",
" - `__init__` : initialise un combat entre deux créatures.\n",
" - `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.\n",
"\n",
"---\n",
"\n",
"### Exemple d'utilisation attendu :\n",
"```python\n",
"# Création des créatures\n",
"pikachu = Creature(\"Pikachu\", vie=35, force=12)\n",
"dracaufeu = Creature(\"Dracaufeu\", vie=50, force=15)\n",
"\n",
"# Lancement du combat\n",
"combat = Combat(pikachu, dracaufeu)\n",
"combat.lancer_combat()\n",
"```\n",
"\n",
"---\n",
"\n",
"### Résultat attendu :\n",
"Le programme affiche un résumé des attaques et indique quelle créature a gagné :\n",
"```\n",
"Pikachu attaque Dracaufeu (-12 PV).\n",
"Dracaufeu attaque Pikachu (-15 PV).\n",
"Pikachu attaque Dracaufeu (-12 PV).\n",
"Dracaufeu attaque Pikachu (-15 PV).\n",
"Pikachu est KO ! Dracaufeu remporte le combat.\n",
"```\n",
"\n",
"---\n",
"\n",
"### Barème :\n",
"- **Classe `Creature`** : 6 points\n",
" - Implémentation des attributs et méthodes.\n",
"- **Classe `Combat`** : 4 points\n",
" - Lancer une boucle et afficher le déroulement du combat.\n"
]
}
],
2024-11-22 08:18:20 +01:00
"metadata": {
"language_info": {
"name": "python"
}
},
2024-11-22 08:14:52 +01:00
"nbformat": 4,
"nbformat_minor": 5
}