Amélioration

This commit is contained in:
2024-12-06 23:57:15 +01:00
parent 147950b9d7
commit b24271a9d7

129
README.md
View File

@@ -1,91 +1,84 @@
# Dorfromantik Inspired Game 🎮🌿
# Dorfromantik 🏔️🌲
![Bannière](ressources/images/MainMenu/background.jpg)
Bienvenue sur notre projet **"Dorfromantik"**, un jeu inspiré par l'univers de [Dorfromantik](https://store.steampowered.com/app/1455840/Dorfromantik/), où vous devrez assembler des tuiles pour créer des paysages harmonieux 🌈. Ce projet a été réalisé dans le cadre de la SAE 3.1 de notre formation à l'IUT de Sénart-Fontainebleau.
Bienvenue dans notre projet inspiré de **Dorfromantik** ! @todo
## Table des Matières
## Table des Matières 📑
- [Description du Jeu](#description-du-jeu-)
- [Installation](#installation-)
- [Utilisation](#utilisation-)
- [Organisation du Code](#organisation-du-code)
- [Crédits](#crédits-)
- [Introduction](#introduction)
- [Lancement du Programme](#lancement-du-programme)
- [Compilation](#compilation)
- [Exécution](#exécution)
- [Nettoyage des Fichiers](#nettoyage-des-fichiers)
- [Architecture du Projet](#architecture-du-projet)
- [Rapport d'Avancement](#rapport-davancement)
- [Crédits](#crédits)
## Introduction 🌱
Dans ce jeu, les joueurs assemblent des tuiles hexagonales représentant différents types de terrains (🌊 mer, 🌾 pré, 🍂 forêt, 🏠 champ, et ⛰ montagne) afin de former un paysage harmonieux. Les tuiles peuvent avoir un ou deux types de terrains, et doivent être placées en suivant certaines contraintes.
L'objectif est de créer des poches de terrains connexes maximisant les points 🌟. Le jeu se termine après avoir placé 50 tuiles 🏙️.
## Description du Jeu 🌳
@todo
## Lancement du Programme 🚀
![Exemple de tuile](ressources/images/Readme/tuiles.png)
Pour démarrer le projet, suivez les instructions ci-dessous :
Les tuiles sont conçues de manière à ce que chaque type de terrain puisse se connecter harmonieusement aux autres, ce qui permet de créer des paysages variés et dynamiques. Vous devrez réfléchir à chaque coup pour décider où placer une tuile et comment maximiser vos points. Des tuiles spéciales pourront également être intégrées pour ajouter plus de complexité et d'options de jeu.
### Compilation 🛠️
## Fonctionnalités ✨
- **Placement des tuiles :** Choisissez la position et l'orientation d'une tuile pour continuer à construire votre paysage. Les tuiles peuvent être tournées dans n'importe quelle direction pour s'adapter parfaitement au paysage existant.
- **Score dynamique :** Obtenez des points basés sur les poches connectées du même type de terrain. Plus les poches sont grandes, plus le score est élevé, ce qui encourage des placements stratégiques et optimisés. Les scores sont comparés avec d'autres joueurs pour évaluer votre performance ! 🏆 Vous pouvez voir comment votre score se positionne par rapport aux autres joueurs dans le tableau des scores.
- **Base de données :** Suivi des scores et des séries de tuiles à l'aide d'un serveur. Chaque série de tuiles est unique, ce qui rend chaque partie différente et ajoute une nouvelle couche de rejouabilité. Les joueurs peuvent aussi comparer leurs scores pour une même série de tuiles, ce qui permet de voir qui est le meilleur stratège.
Pour compiler le projet, utilisez le Makefile présent à la racine du projet avec la commande suivante :
```bash
make
```
Cela générera tous les fichiers `.class` nécessaires dans le répertoire `build/`.
![Leaderboard](ressources/images/MainMenu/Leaderboard/1.png)
### Exécution 🌿
## Installation 🛠
Pour installer et lancer le jeu localement, suivez ces étapes :
Pour lancer le jeu, utilisez la commande suivante :
```bash
make run
```
1. Clonez le dépôt Gitea :
```sh
git clone <votre_url_depot>
```
2. Accédez au répertoire du projet :
```sh
cd SAE31_2024
```
3. Compilez le projet avec le **Makefile** :
```sh
make
```
4. Exécutez le fichier JAR généré :
```sh
java -jar dorfromantik.jar
```
ou
Le jeu nécessite **Java 11** ou une version supérieure pour fonctionner correctement. Assurez-vous que votre environnement est configuré correctement avant de lancer le jeu. Vous pouvez également modifier le Makefile pour personnaliser certaines options de compilation.
```bash
java -jar dorfromantik.jar
```
Cela exécutera le fichier `dorfromantik.jar` contenant tout le projet.
## Utilisation 🎲
- **Lancer le jeu :** Une fois le jeu lancé, le menu principal vous permet de choisir entre plusieurs options telles que commencer une nouvelle partie, voir le tableau des scores, ou consulter le tutoriel. Le tutoriel est un excellent moyen de vous familiariser avec les mécaniques du jeu avant de vous lancer dans une partie complète.
- **Contrôles :** Utilisez la souris pour placer les tuiles et naviguer à travers l'interface. Utilisez les flèches du clavier pour pivoter les tuiles dans la direction souhaitée afin de les faire correspondre au mieux au paysage en cours. 🖱️ Les commandes sont simples et intuitives, vous permettant de vous concentrer sur la stratégie sans être distrait par des contrôles compliqués.
![Exemple d'écran de jeu](ressources/images/Tutorial/Gif1.gif)
### Nettoyage des Fichiers 🛏️
Pendant la partie, une jauge de progression indiquera le nombre de tuiles restantes à placer, vous aidant à planifier chaque étape de la construction de votre paysage. De plus, des conseils contextuels seront disponibles pour guider les nouveaux joueurs dans leurs premières parties.
Pour nettoyer les fichiers `.class` et la documentation, utilisez la commande :
```bash
make clean
```
## Organisation du Code 📜
Voici la structure générale de notre projet :
## Architecture du Projet 🛁
```.
├── src
│ └── fr
│ └── monkhanny
│ └── dorfromantik
│ ├── Main.java # Point d'entrée du jeu
│ ├── game # Logique du jeu (tuile, plateau, score, etc.)
│ ├── controller # Contrôleurs pour les actions de l'utilisateur
│ ├── gui # Interface graphique
│ ├── listeners # Listeners pour les différentes interactions
│ └── utils # Utilitaires (Base de données, sons, etc.)
````
Le projet est organisé de manière modulaire pour assurer une bonne maintenance et faciliter la lecture du code. Voici les principaux composants :
- **game** : Contient les classes liées à la logique du jeu, telles que les tuiles (`Tile.java`), le plateau (`Board.java`), et le calcul des scores (`ScoreManager.java`). Cette partie est au cœur du projet, permettant de gérer le placement des tuiles, l'interaction entre celles-ci et le calcul des points.
- **controller** : Gestion de l'interaction entre les joueurs et les différentes parties du jeu. Les contrôleurs définissent la logique de réponse aux actions de l'utilisateur, telles que le placement des tuiles et les clics dans les menus.
- **gui** : Composants graphiques permettant de créer l'interface utilisateur du jeu. Cela comprend les menus, les boutons et tous les éléments visuels nécessaires à une bonne expérience utilisateur.
- **listeners** : Gestion des événements, comme les clics de souris, mouvements, etc. Chaque interaction de l'utilisateur est surveillée pour que le jeu puisse y répondre de manière fluide et cohérente.
- **utils** : Utilitaires divers tels que les gestionnaires de base de données (`Database.java`), les loaders de sons (`SoundLoader.java`) et d'images (`ImageLoader.java`). Ces classes permettent une gestion efficace des ressources et facilitent le développement de nouvelles fonctionnalités.
- **Main.java** : Point d'entrée du programme.
- **game/** : Contient la logique de gestion du plateau et des tuiles, notamment `Board.java` et `Tile.java`.
- **gui/** : Fournit les interfaces graphiques pour l'utilisateur, comme `MainMenu.java` et `GameControlsMenu.java`.
- **controller/** : Gère les actions et les événements des utilisateurs.
- **utils/** : Fonctions utilitaires pour charger des images, des polices, et se connecter à la base de données.
- **listeners/** : Gère les différents événements de l'application, tels que `GameMouseClickListener.java`.
## Crédits 🎭
- **Luc Hernandez** (hernand) Encadrant du projet et mentor tout au long du développement. Merci pour votre soutien et vos précieux conseils !
- **Equipe** : [Membres du groupe] (Nom 1, Nom 2, Nom 3) 🤝 Chacun a contribué à des aspects spécifiques du projet, de la conception du gameplay à l'implémentation graphique. Nous avons travaillé main dans la main pour créer une expérience de jeu unique et agréable.
## Rapport d'Avancement 📃
Merci d'avoir pris le temps de consulter notre projet ! Pour toute question, n'hésitez pas à nous contacter. Nous sommes toujours ouverts aux retours constructifs. 💌
Un rapport d'avancement complet est disponible dans le dossier `XXXXXXXXXXXXXXXXXXXX/`. Ce fichier **PDF** inclut :
![Merci!](ressources/images/Icone/Pause.png)
- Une description du sujet.
- Les fonctionnalités et captures d'écran de notre application.
- La structure du programme avec des diagrammes de classe.
- Une analyse des algorithmes employés.
- ...
---
## Crédits 🚀
À venir : Nous prévoyons d'ajouter de nouvelles fonctionnalités telles qu'un mode multijoueur, des tuiles spéciales, et même des scénarios où vous pourrez construire des paysages spécifiques à thème, tels que des villages médiévaux ou des forêts enchantées ! Restez connectés, et préparez-vous à construire de merveilleux mondes ! 🚀
Ce projet a été réalisé par :
- **Moncef STITI** (@stiti)
- **Lenny FOULOU** (@foulou)
- **Khalid CHENOUNA** (@chenouna)