An open API service indexing awesome lists of open source software.

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 )

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 !* 🎼