Skip to content

Tanchouteur/PVZ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

187 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PVZ - Plants vs Zombies en Java

In-game image

📜 Sommaire

  1. Description
  2. Objectifs
  3. Structure
  4. Installation
  5. Exécution
  6. Contributions
  7. Licence

Description

PVZ est une réécriture en Java du célèbre jeu Plants vs Zombies, développé à titre éducatif pour approfondir mes connaissances en programmation orientée objet et dans le développement de jeux en Java.

  • Une architecture bien structurée basée sur un diagramme de classes.
  • L'utilisation d'assets graphiques pour recréer l'expérience visuelle de Plants vs Zombies.
  • Un objectif éducatif d'introduire une intelligence artificielle avec des réseaux de neurones pour entraîner le jeu à jouer automatiquement.
⚠️ Note importante :
Les assets graphiques utilisés ne sont pas libres de droits et appartiennent à PopCap Games.

Technologies utilisées

Technologie Description
Java Langage principal du projet
JavaFX Pour l'interface graphique
WebSocket Pour le websocket de l'interface web
google.gson Pour la traduction du model en GSON pour la sauvegarde

Objectifs du projet

Phase 1 : Développement du jeu

  • Recréer les mécaniques de base de Plants vs Zombies.
  • Intégrer des classes pour les plantes, les zombies, et les projectiles.
  • Ajouter une interface utilisateur simplifiée.

Phase 2 : Intelligence artificielle

  • Développer un modèle de réseau de neurones en Java (ou en Python).
  • Entraîner l'IA pour qu'elle puisse jouer au jeu automatiquement.

Phase 3 : Interface Web

  • Développer une interface web qui permet de controller le BackEnd a distance (depuis internet).

Structure du projet

java
├───fr
│   └───tanchou
│       └───pvz
│           │   LauncherV2.java
│           │
│           ├───abstractEnity
│           │   │   Collider.java
│           │   │   Effect.java
│           │   │   Entity.java
│           │   │
│           │   ├───abstracObjectOfPlant
│           │   │       Bullet.java
│           │   │       ObjectOfPlant.java
│           │   │
│           │   ├───abstractPlant
│           │   │       ObjectGeneratorsPlant.java
│           │   │       PassivePlant.java
│           │   │       Plant.java
│           │   │       WaitingPlant.java
│           │   │
│           │   └───abstractZombie
│           │           Zombie.java
│           │
│           ├───entityRealisation
│           │   ├───effect
│           │   │       FireEffect.java
│           │   │       FreezeEffect.java
│           │   │
│           │   ├───ObjectOfPlant
│           │   │       FreezePeaBullet.java
│           │   │       PeaBullet.java
│           │   │       Sun.java
│           │   │
│           │   ├───plants
│           │   │   │   PotatoMine.java
│           │   │   │
│           │   │   ├───ObjectGeneratorPlant
│           │   │   │       DoublePeaShooter.java
│           │   │   │       FreezePeaShooter.java
│           │   │   │       PeaShooter.java
│           │   │   │       SunFlower.java
│           │   │   │
│           │   │   └───passive
│           │   │           WallNut.java
│           │   │
│           │   └───zombie
│           │           BucketHeadZombie.java
│           │           ConeHeadZombie.java
│           │           NormalZombie.java
│           │           ZombieCard.java
│           │
│           ├───game
│           │   │   Partie.java
│           │   │   PartieController.java
│           │   │   PlantCard.java
│           │   │   Player.java
│           │   │   PVZ.java
│           │   │   SunManager.java
│           │   │
│           │   ├───rowComponent
│           │   │       Mower.java
│           │   │       PlantCase.java
│           │   │       Row.java
│           │   │
│           │   └───spawn
│           │           ZombieSelector.java
│           │           ZombieSpawner.java
│           │
│           ├───guiJavaFx
│           │   │   EndScene.java
│           │   │   GameBoard.java
│           │   │   PartieControllerView.java
│           │   │   PVZGraphic.java
│           │   │
│           │   ├───assetsLoder
│           │   │       AssetsLoader.java
│           │   │
│           │   ├───controller
│           │   │       CellGridController.java
│           │   │       ExitCellController.java
│           │   │       HoverCellController.java
│           │   │       PlayerCardController.java
│           │   │       PlayerCardHoverController.java
│           │   │       ShovelCardController.java
│           │   │
│           │   ├───layers
│           │   │   ├───game
│           │   │   │       BulletLayer.java
│           │   │   │       EntityLayer.java
│           │   │   │       MawerPanel.java
│           │   │   │       PlantLayer.java
│           │   │   │       SunLayer.java
│           │   │   │       ZombieLayer.java
│           │   │   │
│           │   │   └───ihm
│           │   │           GameInfoLayer.java
│           │   │           HudLayer.java
│           │   │           PlayerLayer.java
│           │   │           SoldView.java
│           │   │
│           │   ├───props
│           │   │       BulletView.java
│           │   │       CellView.java
│           │   │       EntityView.java
│           │   │       MowerView.java
│           │   │       PlantCardView.java
│           │   │       PlantView.java
│           │   │       SunView.java
│           │   │       ZombieView.java
│           │   │
│           │   └───sound
│           │           BackgroundMusic.java
│           │           SoundEffect.java
│           │           SoundManager.java
│           │           SoundType.java
│           │
│           ├───ia
│           │   ├───data
│           │   │       ModelManager.java
│           │   │       Statistics.java
│           │   │
│           │   ├───network
│           │   │       GameAI.java
│           │   │       NeuralNetwork.java
│           │   │       Neuron.java
│           │   │
│           │   └───utils
│           │           EvaluationManager.java
│           │           GenerationManager.java
│           │           IAEnvironmentManager.java
│           │           PopulationManager.java
│           │
│           └───web
│                   MultiOutputStream.java
│                   WebApi.java
│                   WebSocketHandler.java
│
└───META-INF
        MANIFEST.MF

Installation

  1. Téléchargez le repository :
  2. git clone https://github.com/ton-repo/pvz-java.git
    
  3. Installez Java 23 ou supérieur.

Exécution

Pour lancer avec une interface graphique :

java -jar pvz.jar gui

Pour lancer sans interface graphique :

java -jar pvz.jar

Licence

Ce projet est publié sous la licence MIT. Les assets graphiques utilisés sont soumis aux droits d'auteur de PopCap Games et ne peuvent pas être utilisés en dehors de ce projet éducatif.

About

Projet personnel Plant versus Zombie IA

Resources

Stars

Watchers

Forks

Contributors

Languages