Skip to content

Latest commit

History

187 Commits

Folders and files

NameName
Last commit message
Last commit date

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

TechnologieDescription
JavaLangage principal du projet
JavaFXPour l'interface graphique
WebSocketPour le websocket de l'interface web
google.gsonPour 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

1 star

Watchers

1 watching

Forks

Releases

Contributors

Languages