{"id":28576368,"url":"https://github.com/anaeltech/tp-rpg","last_synced_at":"2025-09-13T01:45:06.527Z","repository":{"id":297590703,"uuid":"997258586","full_name":"AnaelTech/tp-rpg","owner":"AnaelTech","description":"Ceci est un projet d'examen en java pour créer un rpg en console","archived":false,"fork":false,"pushed_at":"2025-06-14T18:43:59.000Z","size":66,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-14T19:59:13.498Z","etag":null,"topics":["java","maven"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AnaelTech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-06T08:13:25.000Z","updated_at":"2025-06-12T11:24:26.000Z","dependencies_parsed_at":"2025-06-06T09:44:36.159Z","dependency_job_id":null,"html_url":"https://github.com/AnaelTech/tp-rpg","commit_stats":null,"previous_names":["anaeltech/tp-rpg"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AnaelTech/tp-rpg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnaelTech%2Ftp-rpg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnaelTech%2Ftp-rpg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnaelTech%2Ftp-rpg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnaelTech%2Ftp-rpg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnaelTech","download_url":"https://codeload.github.com/AnaelTech/tp-rpg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnaelTech%2Ftp-rpg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266807138,"owners_count":23987426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","maven"],"created_at":"2025-06-10T23:40:16.045Z","updated_at":"2025-07-24T07:07:40.342Z","avatar_url":"https://github.com/AnaelTech.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tp-rpg\n\nCeci est un projet d'examen en Java pour créer un jeu de rôle (RPG) en console.\n\n## 📚 Description\n\nLe but du projet est de développer un jeu de rôle (RPG) jouable en console, où le joueur incarne un héros affrontant une infinité d'ennemis générés aléatoirement dans des combats au tour par tour. L’objectif est de vaincre le plus d’ennemis possible avant de mourir. À la fin de la partie, le score (nombre d’ennemis vaincus) est affiché et sauvegardé dans un fichier associé au nom du joueur.\n\n## ❌ Difficultés\n\n- Rendre mon code modulaire et réutilisable\n- Identifier les différentes classes et interfaces\n- Réflexion sur l'utilisation des Design Patterns\n\n## 📚 Fonctionnalités attendues\n\n### 1. **Création des entités**\n\n- [x] Classe abstraite `Personnage` avec :\n  - [x] `nom`, `pv`, `attaque`, `défense`\n  - [x] méthode `attaquer(Personnage cible)`\n  - [x] méthode `prendreDegats(int degats)`\n  - [x] méthode `estVivant()`\n- [x] Classe `Hero` héritant de `Personnage` avec :\n  - [x] `mana`\n  - [x] méthode `utiliserPouvoir(Personnage cible)` (ex : sort de feu)\n  - [x] gestion de potions de soin (1 par combat)\n- [x] Classe `Ennemi` héritant de `Personnage`, avec plusieurs variantes :\n  - [x] `Gobelin`, `Dragon`, `Troll`, etc.\n\n---\n\n### 2. **Interface de Pouvoir**\n\n- [x] Interface `PouvoirSpecial` :\n  ```java\n  void utiliserPouvoir(Personnage cible);\n  ```\n- [x] Implémentée par `Hero` pour les sorts magiques (infligeant plus de dégâts, consommant du mana)\n- [x] Peut être réutilisée plus tard pour des ennemis spéciaux\n\n---\n\n### 3. **Combat tour par tour**\n\n- [x] Le joueur choisit entre : attaquer, utiliser un pouvoir, ou une potion\n- [x] L’ennemi attaque automatiquement s’il est vivant\n- [x] Affichage console dynamique :\n  ```\n  \u003e Arthus attaque Troll ! Il inflige 12 dégâts.\n  \u003e Troll attaque Arthus ! Il inflige 6 dégâts.\n  ```\n- [x] Le joueur voit :\n  - [x] Le numéro de l’ennemi rencontré\n  - [x] Ses propres PV, mana, et potions restantes\n  - [x] Les PV de l’adversaire\n\n---\n\n### 4. **Ennemis générés aléatoirement**\n\n- [x] À chaque victoire, un nouvel ennemi est généré aléatoirement\n- [x] Le jeu continue jusqu’à ce que le joueur meure\n\n---\n\n### 5. **Compteur et score**\n\n- [x] Un compteur d’ennemis vaincus est affiché à la fin\n- [x] Le score est sauvegardé dans un fichier `scores.txt` au format :\n  ```\n  Arthus a vaincu 6 ennemis\n  ```\n\n---\n\n### 6. **Gestion des exceptions**\n\n- [x] Entrée invalide → message d'erreur et nouvelle demande\n- [x] Pas assez de mana → message d’erreur sans action\n- [x] Plus de potion → message d’erreur\n\n---\n\n## ✨ Fonctionnalités bonus à implémenter (futur)\n\n### 🧙‍♂️ 1. Système d’expérience (XP) et montée de niveau\n\n- [x] Le héros gagne de l’XP après chaque combat\n- [x] À chaque niveau : augmentation de stats (PV, attaque, mana...)\n\n### ⚔️ 2. Choix de la classe du héros\n\n- [x] Avant de commencer, le joueur choisit une classe (Guerrier, Mage, Voleur)\n\n### 🎒 3. Inventaire complet\n\n- [ ] Ramassage de loot (potions, armes, objets spéciaux)\n- [ ] Gestion dynamique de l’inventaire (affichage, utilisation)\n\n### 🛡️ 4. Système d’équipement\n\n- [ ] Le héros peut s’équiper d’armes et armures (épée, armure…)\n\n### 🧠 5. Ennemis plus intelligents\n\n- [ ] Compétences spéciales, IA conditionnelle\n\n### 🪙 6. Système de monnaie et boutique\n\n- [ ] Pièces d’or, boutique entre les combats\n\n### 📜 7. Fichier de sauvegarde de partie\n\n- [ ] Sauvegarde/reprise de partie\n\n### 🏆 8. Classement des meilleurs scores\n\n- [ ] Affichage du top 5 des scores\n\n### 💀 9. Boss aléatoires avec nom généré\n\n- [ ] Boss toutes les 5 victoires\n\n### 🌋 10. Niveaux ou zones progressives\n\n- [ ] Difficulté croissante, zones\n\n### 📖 11. Journal de combat\n\n- [ ] `journal.txt` avec tout l’historique\n\n### 🎲 12. Attaques critiques ou esquives aléatoires\n\n- [ ] Chances de critique/esquive\n\n### ⌛ 13. Pouvoirs à rechargement\n\n- [ ] Certains sorts limités dans le temps\n\n### 🎭 14. Alliés temporaires\n\n- [ ] Recrutement d’alliés pour un combat\n\n### 🧩 15. Événements aléatoires entre combats\n\n- [ ] Pièges, trésors, embuscades\n\n### 🧪 16. Système de statut : poison, gel, brûlure\n\n- [ ] Effets persistants\n\n### 🧬 17. Ennemis générés dynamiquement\n\n- [ ] Procédural, stats et noms aléatoires\n\n### 🧾 18. Interface `Affichable` pour tous les personnages\n\n- [ ] Méthode `afficherFiche()`\n\n### 🎨 19. Affichage en ASCII Art\n\n- [ ] Illustrations monstres/héros\n\n### 🎚️ 20. Système de difficulté\n\n- [ ] Facile / Normal / Difficile\n\n---\n\n## 🛠️ Installation\n\n1. Clone le projet :\n   ```bash\n   git clone https://github.com/AnaelTech/tp-rpg.git\n   cd tp-rpg\n   ```\n2. Compile le projet :\n   ```bash\n   javac -d bin src/main/java/fr/hb/rpg/*.java\n   ```\n3. Lance le jeu :\n\n   ```bash\n   java -cp bin fr.hb.rpg.App\n   ```\n\n   Ou utilisation avec Maven :\n\n4. Compile le projet :\n\n   ```bash\n   mvn clean install\n   ```\n\n5. Lance le jeu :\n   ```bash\n   mvn exec:java\n   ```\n\n## ▶️ Utilisation\n\nAu lancement, le jeu demande le nom du héros. Ensuite, le joueur affronte des ennemis aléatoires dans des combats au tour par tour en choisissant chaque action via la console.\n\nÀ la fin, le nombre d’ennemis vaincus est affiché et sauvegardé dans le fichier `scores.txt`.\n\n## Contribution\n\nLes contributions sont les bienvenues ! N'hésitez pas à :\n\n1. Fork le projet\n2. Créer une branche pour votre fonctionnalité\n3. Commit vos changements\n4. Push vers la branche\n5. Ouvrir une Pull Request\n\n## Licence\n\nCe projet est sous licence [MIT](LICENSE).\n\n---\n\n_Généré avec le script GitHub Repository Creator_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanaeltech%2Ftp-rpg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanaeltech%2Ftp-rpg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanaeltech%2Ftp-rpg/lists"}