# Plants-Vs-Zombies
**Repository Path**: bigbear_git/Plants-Vs-Zombies
## Basic Information
- **Project Name**: Plants-Vs-Zombies
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-10-18
- **Last Updated**: 2024-10-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Plants-Vs-Zombies (LZ Linux版本)



## 前言
本项目是基于cocos2dx开发的,该项目的原型最初由LZ开发并[发布在Github](https://github.com/ErLinErYi/PlantsVsZombies)。LZ项目是目前我所看到的开源的,效果最好的,功能最全的植物大战僵尸项目。由于有在Ubuntu平台下写C++练手项目的需求,因此基于该项目进行了一些改进和调整,并重新发布。
## 项目简介
我学习了LZ项目之后,发现了以下可以改进的要点:
- LZ项目在Windows下使用Visual Studio 2017上搭建,其中通过.vcxproj管理项目文件。然而,由于Visual Studio并非免费开源的软件,而且手动配置比较繁琐,并不利于该项目的推广。
- 项目的C++代码约有18000行左右,功能非常齐全,但是有些过于庞大了,不利于初学者学习。
- 采用的C++11标准已经开始过时了。
针对以上需要改进的要点,我做了如下变动:
- 由于cocos2dx原生支持CMake配置,因此使用CMake 3.6配置该项目。
- 使用开源的VSCode开发,安装方便,配置迅速。
- 删减了一些次要的游戏效果和功能,将项目规模缩小到8000行C++代码,便于初学者学习。
- 对cocos2dx库和项目代码应用C++17标准。
最后基于我对C++的理解,对本项目的基础类重新进行了设计,包括类与类之间的解耦,语义的明确和C++17语法的应用。
## 运行示例

## 运行要求
* 目前在Ubuntu 22.04上测试通过,其他Ubuntu版本请自行测试。
* CMake >= 3.16。
## 安装依赖
1. 克隆本项目(先安装git-lfs),安装cocos2dx所需的依赖。注意cocos2dx已经包含在本项目中,无需额外安装。
```shell
git clone --recursive https://github.com/Xi-Gong/Plants-Vs-Zombies.git
cd Plants-Vs-Zombies/cocos2d/
sudo apt install python2.7 libxmu-dev libglu1-mesa-dev \
libgl2ps-dev libxi-dev libzip-dev libpng-dev \
libcurl4-gnutls-dev libfontconfig1-dev libsqlite3-dev \
libglew-dev libssl-dev libgtk-3-dev binutils xorg-dev
python2.7 download-deps.py
cd build
./install-deps-linux.sh
```
2. 安装pulse audio用于播放音频。
```shell
sudo apt install pulseaudio
```
3. 修改`Plants-Vs-Zombies/Resources/resources/Text/TextPath.xml`,根据你克隆项目的路径更改其中的绝对路径。
4. 编译并运行项目。注意`Resources`目录下的内容会拷贝一份到`build/bin/pvz`目录下。
```shell
sudo apt install cmake build-essential ninja-build
cd Plants-Vs-Zombies
mkdir build && cd build
cmake ..
make
cd bin/pvz
./pvz
```
## 项目类图
这里由于我对基础类进行了一些修改,并绘制了相应的UML图。完整的UML图请参见LZ的项目。

## 游戏素材
***注意!!!游戏素材文件仅用于学习,切勿用于商业用途。如有侵权请联系我***
## 联系方式
**Email: gongxi@mail.nankai.edu.cn**