Présentation du Projet

🎮 Jeu de Plateforme - Aventure Java

SAE Exercice n°5 - Projet Universitaire

Jeu de Plateforme est un projet de développement d'un jeu d'aventure 2D en Java utilisant des sprites 52x52 pixels. Cette application implémente une architecture MVC robuste avec un moteur de jeu personnalisé pour gérer les déplacements, collisions et mécaniques de gameplay.

Le joueur contrôle un personnage qui peut se déplacer, grimper aux échelles, chuter avec un parapluie, ramasser des clés et ouvrir des portes pour progresser à travers différents niveaux avec des thèmes visuels personnalisables.

Java Swing (donnée) Architecture MVC Moteur de Jeu 2D Sprites & Animation

🎯 Objectifs

  • Développer un jeu de plateforme complet en Java
  • Implémenter une architecture MVC claire
  • Créer un moteur physique basique
  • Gérer les événements et animations temps réel

📊 Informations

Type Jeu de plateforme 2D
Durée 5 jours de développement
Langage Java
Contexte SAE - Exercice apprentissage universitaire

Fonctionnalités du Jeu

🚶 Déplacements Avancés

  • Mouvements directionnels avec orientation du personnage
  • Gestion des états intermédiaires d'animation
  • Logique de retournement avant déplacement
  • Détection de collision avec le terrain

🪜 Système d'Échelles

  • Montée et descente sur les échelles
  • Arrêt automatique sur les barreaux d'échelle
  • Interaction exclusive sol/échelle par case
  • Animation de grimpe fluide

🪂 Gestion de la Chute

  • Chute manuelle avec déploiement de parapluie
  • Chute automatique instantanée (Étape 2)
  • Chute progressive avec animations (Étape 3)
  • Atterrissage sur sol ou échelle

🗝️ Système Clés/Portes

  • Ramassage de clés colorées (a, b, c...)
  • Ouverture de portes correspondantes (A, B, C...)
  • Disparition automatique des portes ouvertes
  • Interaction de proximité

🌟 Fonctionnalités Avancées

  • Mode pénombre avec vision limitée
  • Interrupteur d'éclairage (^)
  • Système de sauts avec Ctrl
  • Progression par niveaux avec sortie (@)

Technologies et Architecture

🛠️ Stack Technologique

Java SE 11+

Langage principal avec programmation orientée objet

🖼️

Swing & AWT

Interface graphique native avec rendu sprites 52x52

🏗️

Architecture MVC

Séparation claire des responsabilités

🎮 Couche Contrôleur

Moteur de Jeu
  • Moteur de jeu - Logique centrale du gameplay
  • Gestion des mouvements - Déplacements et orientations
  • Détection collisions - Physique de base
  • États du personnage - Machine à états

🗺️ Couche Métier

Données du Jeu
  • Modèle de terrain - Grille de jeu 2D
  • Éléments interactifs - Clés, portes, échelles
  • État du joueur - Position, inventaire, progression
  • Chargement dynamique - Fichiers de niveaux

🗺️ Format des Niveaux

Structure des fichiers .data

Structure ASCII des fichiers de niveau avec symboles spéciaux :

===============
=   a    #    =
= ====== # A  =
=        #    =
=   +    ##### 
=  ===      B =
=   b        @=
===============
= Sol/Plateforme
# Échelle
+ Position initiale
@ Sortie du niveau
a,b,c Clés colorées
A,B,C Portes correspondantes
? Caisse poussable
^ Interrupteur lumière

Réalisations Techniques

🖼️ Méthode setImage()

Gestion des Images de Plateau

Implémentation pour charger et définir l'image de fond du plateau de jeu :

🏗️ Méthode initPlateforme()

Initialisation du Jeu

Configuration et mise en place des éléments de base du plateau :

👟 Méthode delacer()

Système de Déplacement

Logique avancée pour les mouvements du personnage avec orientation :

🎮 Démonstration du Jeu

🖼️ Captures d'Écran du Jeu

🎮 Contrôles

Déplacement horizontal
Montée/Descente échelles
Ctrl Saut et parapluie

🌙 Mode Pénombre

Vision limitée à 3 cases autour du personnage jusqu'à trouver l'interrupteur (^).


🧑

🦘 Système de Sauts

Combinaison Ctrl + flèches directionnelles pour effectuer des sauts.

Ctrl + → : Saut diagonal
Ctrl seul : Saut vertical

📚 Apprentissages et Défis

🔧 Défis Techniques Relevés

  • Gestion des états d'animation : Machine à états pour transitions fluides
  • Moteur de physique simple : Logique de gravité et collision
  • Architecture MVC complexe : Séparation logique métier/affichage
  • Optimisation du rendu : Gestion efficace des repaints

🎯 Compétences Acquises

  • Développement de jeux 2D : Concepts fondamentaux du game design
  • Algorithmique appliquée : Détection de collision
  • Extensibilité : Code modulaire pour nouvelles fonctionnalités