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.
| 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 |
- 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.
- 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.
- Développer une interface web qui permet de controller le BackEnd a distance (depuis internet).
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
- Téléchargez le repository :
- Installez Java 23 ou supérieur.
git clone https://github.com/ton-repo/pvz-java.git
Pour lancer avec une interface graphique :
java -jar pvz.jar gui
Pour lancer sans interface graphique :
java -jar pvz.jar
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.
