https://github.com/nano-a/towerdefense
Jeu Tower Defense en Java ( Swing / AWT )
https://github.com/nano-a/towerdefense
awt awt-gui java swing swing-gui tower-defense tower-defense-game towerdefense
Last synced: 8 months ago
JSON representation
Jeu Tower Defense en Java ( Swing / AWT )
- Host: GitHub
- URL: https://github.com/nano-a/towerdefense
- Owner: Nano-a
- Created: 2025-04-15T16:43:24.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-16T11:03:33.000Z (about 1 year ago)
- Last Synced: 2025-04-19T11:48:01.669Z (about 1 year ago)
- Topics: awt, awt-gui, java, swing, swing-gui, tower-defense, tower-defense-game, towerdefense
- Language: Java
- Homepage: https://nano-a.github.io/portfolio-nano-a/portfolio-details-tower-defense.html
- Size: 11.3 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Tower Defense đ°
Bienvenue dans **Tower Defense**, un projet captivant dĂ©veloppĂ© en Java par **Abderrahman Ajinou** et **Gebrayel Maroun**. Ce jeu allie stratĂ©gie, logique et crĂ©ativitĂ© pour offrir une expĂ©rience immersive oĂč vous devez protĂ©ger votre base contre des vagues dâennemis en construisant des tours tactiques. Conçu avec rigueur et passion, ce projet illustre notre engagement Ă produire un code robuste, une interface utilisateur soignĂ©e, et des compĂ©tences en dĂ©veloppement logiciel prĂȘtes Ă impressionner. đ
## đŻ Ă propos du projet
**Tower Defense** est un jeu classique de type tower defense, implémenté avec **Java Swing** pour une interface graphique fluide et des bibliothÚques comme **Jackson** pour la gestion des niveaux. Voici ce qui rend ce projet unique :
- **Architecture modulaire** : Organisé en packages (`composants`, `gestionnaire`, `mecaniques`, etc.) pour une maintenance aisée.
- **Gameplay dynamique** : Tours évolutives, ennemis variés, et un algorithme A* pour des chemins optimisés.
- **Interface intuitive** : Boutons personnalisés, journal de logs en temps réel, et infobulles interactives.
- **Engagement** : Développé avec soin pour répondre aux exigences académiques tout en visant une qualité professionnelle.
Ce projet est une vitrine de notre capacitĂ© Ă collaborer, rĂ©soudre des problĂšmes complexes, et livrer un produit fonctionnel. Nous sommes motivĂ©s Ă continuer dâapprendre et Ă contribuer Ă des projets innovants ! đĄ
## đ PrĂ©requis
Pour exĂ©cuter **Tower Defense**, assurez-vous dâavoir les outils suivants :
| Prérequis | Description | Lien/Instruction |
|-----------|-------------|------------------|
| **Git** đ ïž | Pour cloner le dĂ©pĂŽt. | TĂ©lĂ©chargez depuis [git-scm.com](https://git-scm.com). |
| **JDK** â | Version 8 ou supĂ©rieure (JDK 11 recommandĂ©). | TĂ©lĂ©chargez depuis [oracle.com](https://www.oracle.com/java/technologies/javase-downloads.html) ou [openjdk.java.net](https://openjdk.java.net). |
| **SystĂšme dâexploitation** đ» | Windows, Linux, ou macOS. | Compatible avec Swing pour lâinterface graphique. |
| **Terminal** đ„ïž | Pour compiler/exĂ©cuter (optionnel si IDE utilisĂ©). | Command Prompt (Windows), Terminal (Linux/macOS). |
| **Linux uniquement** đ§ | BibliothĂšque `libx11-dev` pour JNativeHook. | Installez via `sudo apt-get install libx11-dev`. |
### BibliothĂšques externes
Incluses dans `res/libs` :
- `jackson-annotations-2.9.4.jar`
- `jackson-core-2.9.4.jar`
- `jackson-databind-2.9.4.jar`
- `java-json.jar`
- `jnativehook-2.1.0.jar`
### Ressources
Les dossiers suivants doivent ĂȘtre prĂ©sents :
- `res/Icons` : `Pause.png`, `Pausee.png`
- `res/Levels` : Fichiers JSON (`1.json`, `2.json`, etc.), CSV (`TerrainMapTest1.csv`, etc.)
- `res/TowerIcons` : `Maison.png`, `TestIcon1.png`, `TestIcon2.png`
- `res/TowerSprites` : `BaseSprite.png`, `FarSprite.png`, `FarSpritee.png`, `Mage2Sprite.png`, `MageSprite.png`, `MegaSprite.png`, `RapidSprite.png`, `RapidSpritee.png`
- Fichier de configuration : `Tower-Defense/Excel.json` (créé automatiquement si absent)
*Note* : Aucun outil de build (Maven, Gradle) nâest requis. La compilation peut ĂȘtre manuelle ou via un IDE.
## đ Installation et exĂ©cution
Suivez ces Ă©tapes pour lancer **Tower Defense** et plonger dans lâaction :
1. **Cloner le dépÎt** :
```bash
git clone https://github.com/Nano-a/TowerDefense.git
2. **Accéder au dossier** :
```bash
cd TowerDefense
```
3. **Configurer et exécuter** :
### Option 1 : Via Visual Studio Code
1. Ouvrez le projet dans VS Code :
- Importez le dossier `TowerDefense`.
2. Configurez le classpath :
- Assurez-vous que `res/libs/*` est inclus dans les dépendances Java.
- Marquez le dossier `res` comme dossier de ressources.
3. Exécutez le jeu :
- Ouvrez `src/utilisateurinterface/CadreJeu.java`.
- Cliquez sur **"Run Java"** ou **"Debug Java"** dans VS Code.
### Option 2 : Compilation manuelle
1. Compiler le jeu :
- Sur **Windows** :
```bash
javac -cp ".;res/libs/*" -d bin src/*/*.java
```
- Sur **Linux/macOS** :
```bash
javac -cp ".:res/libs/*" -d bin src/*/*.java
```
2. Exécuter le jeu :
- Sur **Windows** :
```bash
java -cp "bin;res/libs/*" utilisateurinterface.CadreJeu
```
- Sur **Linux/macOS** :
```bash
java -cp "bin:res/libs/*" utilisateurinterface.CadreJeu
```
### Remarques
- Assurez-vous que le dossier `res` est dans le classpath pour charger les images et niveaux.
- Le jeu crĂ©e `Tower-Defense/Excel.json` dans le rĂ©pertoire de travail ; vĂ©rifiez les permissions dâĂ©criture.
- Si vous utilisez un autre IDE (Eclipse, IntelliJ), importez le projet, ajoutez `res/libs/*` au classpath, et marquez `res` comme dossier de ressources.
## đĄïž FonctionnalitĂ©s principales
- **Gameplay stratégique** : Placez des tours pour bloquer les ennemis et protégez votre forteresse.
- **Tours évolutives** : Améliorez vos tours pour augmenter portée, vitesse, et dégùts.
- **Niveaux dynamiques** : Chargez des niveaux via JSON et CSV pour une rejouabilité infinie.
- **Interface intuitive** : Boutons personnalisés, infobulles, et journal de logs pour une expérience fluide.
- **Performance optimisée** : Multithreading pour des mises à jour fluides.
## đ» CompĂ©tences acquis durant le projet :
**Tower Defense** est bien plus quâun jeu ; câest une dĂ©monstration de nos compĂ©tences techniques et de notre esprit dâĂ©quipe :
- **Maßtrise de Java** : Utilisation avancée de Swing, threading, et parsing JSON.
- **Conception logicielle** : Architecture modulaire avec séparation claire des responsabilités.
- **RĂ©solution de problĂšmes** : ImplĂ©mentation dâun algorithme A* pour les chemins ennemis.
- **Attention aux détails** : Interface soignée et logs pour un débogage efficace.
- **Motivation** : Ce projet reflÚte notre passion pour le développement et notre ambition de produire un travail de qualité.
## đ Remarques importantes
- Le point dâentrĂ©e du jeu est `utilisateurinterface.CadreJeu`. Assurez-vous quâil est correctement rĂ©fĂ©rencĂ©.
- Les ressources dans `res/` doivent ĂȘtre intactes pour Ă©viter les erreurs de chargement.
- Sur Linux, vérifiez que `libx11-dev` est installé pour JNativeHook.
## đšâđ» Auteurs
- **[Abderrahman Ajinou](https://github.com/Nano-a)**
- **[Gebrayel Maroun](https://github.com/Maroun2424)**
Nous sommes fiers de ce projet et enthousiastes Ă lâidĂ©e de partager notre travail avec la communautĂ©. Merci de tester **Tower Defense** ! Pour toute question ou suggestion, contactez-nous. đ
---
*DĂ©veloppĂ© avec passion et dĂ©termination pour repousser les limites du code et du fun !* đź