A dynamic Plants vs Zombies–style game developed collaboratively as a personal project using C++ and SFML. The game closely replicates the core mechanics of the original PVZ, featuring a fully dynamic environment, real-time gameplay, and integrated sound effects.
The main focus of this project was on gameplay logic, performance-aware design, and real-time audio handling.
- Lane-based tower defense gameplay inspired by the original PVZ
- Fully dynamic game environment with real-time updates
- Multiple plant types with distinct attack and support behaviors
- Zombie enemies with different movement, health, and damage models
- Wave-based enemy spawning and difficulty progression
- Resource (sun) generation and management system
- Integrated sound effects for shooting, planting, collisions, zombie attacks, and game events
- Sound effects implemented using SFML Audio
- Event-driven sound triggering (e.g., attacks, hits, spawning)
- Non-blocking audio playback integrated into the main game loop
- Support for overlapping sound effects without interrupting gameplay
- Implemented in C++ using object-oriented design principles
- Core real-time game loop handling:
- Input processing
- Game state updates
- Rendering via SFML Graphics
- Audio playback via SFML Audio
- Modular class hierarchy for plants, zombies, projectiles, and tiles
- Clear separation between game logic, rendering, and sound management
- Designed for extensibility (easy addition of new entities)
- Language: C++
- Framework: SFML (Graphics, Window, Audio)
- Build: g++ / CMake
- Version Control: Git, GitHub
- C++17 compatible compiler
- SFML installed
- Make
make./pvz.outThe project includes a Makefile that handles compilation and linking with SFML.
- Alireza Abedizadeh
- Parsa Saeednia
Demo.mp4
- Background music with adaptive intensity
- Additional plant and zombie types
- Improved animations and visual effects
- Advanced difficulty scaling
- Save/load game system
This project was developed for educational and personal use.