# 植物大战僵尸
**Repository Path**: goingme/plants-vs.-zombies-games
## Basic Information
- **Project Name**: 植物大战僵尸
- **Description**: 一个由C++实现的、复刻植物大战僵尸中锤僵尸的小游戏。还原使用了植物大战僵尸的音效和僵尸植物动作。继承于项目https://codebus.cn/jihe/,在此基础上添加了文档和改进(学习前需要安装easyx和VS C++)
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 0
- **Created**: 2023-07-31
- **Last Updated**: 2024-08-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 植物大战僵尸, Visual-studio-CPP, 锤僵尸, 还原复刻
## README
# 植物大战僵尸
:smile::本项目的主旨是学习用easyx开发项目,从中学到C++封装继承的使用
:smile::本项目提供了完成的程序和相关资源,以及一些项目文档
:smile::本项目尽最大可能还原植物大战僵尸中的状态关系、界面和键,尽管如此在状态关系中还存在架构和细节的优化空间,欢迎评选指正!
## 功能
跳转功能主要以鼠标点击作为触发事件
在实现中主要构建了植物、阳光、僵尸、锤击效果等类,将墓碑等设置成了地图状态
使用的函数库主要为easyx图形库和windows.h窗口句柄,由此进行窗口显示、图片音乐加载等
僵尸图片为整个僵尸,剩余资源基本可在植物大战僵尸安装资源中找到
僵尸吃植物的动作由于存在部分异常,故暂时进行移除
植物、阳光、僵尸等剩余优化可联系本作者1922929962@qq.com
### 加载
实现了加载存档功能,能够通过菜单直接保存游戏
能够在开始界面选择加载已预存的存档
存档在特定文件夹中,可以备份后进行游戏或测试
点击菜单时会有经典的返回声
### 面板
开始面板能够新建存档、显示已有存档,显示贴图为经典图像框
左上角是阳光显示面板和植物选购;右上角是菜单键可以直接返回存档界面
### 僵尸
有铁桶僵尸、路障僵尸和普通僵尸,僵尸已实现出土、和行走的动作,以及冰冻和减速效果
为铁桶僵尸设置了专属敲击声,僵尸在敲击后可变为普通僵尸
僵尸行走中可能发出随机的哀嚎声等
僵尸的删死亡动作表述为直接删除僵尸本身,也就是直接不显示图片
僵尸生成的概率受墓碑数量影响,后续会增加
### 墓碑
墓碑只在初始化时随机生成不同形状
墓碑吞噬者只能防灾墓碑上,此处状态会变成墓碑吞噬者+墓碑
### 植物
不同植物都有对应的动作,通过逐帧加载图片进行更新
土豆雷在一段时间后会变成出土状态
寒冰菇在释放后有全屏冰花的效果,并对僵尸产生冰冻
墓碑吞噬者确实能动但尚未写成会向下移动的功能
### 阳光
僵尸死亡后一定概率会生成3个阳光
阳光搜集后会更新阳光量(已加入音效),不及时获取会消失
阳光的掉落也会受墓碑数影响
### 输赢
失败的情况是僵尸走进了你的院子,在戴夫的尖叫中你会听到失败的BGM
获胜会有返回的弹窗,你也可以重新开始,并加载了经典的欢快音乐
获胜的判定是你击败了所有的僵尸和墓碑,彩蛋(忘写保存了,你可以一直回到获胜前的存档):dog:
## 加入
欢迎加入这个项目的开发、优化或学习,不过消息回复可能有点慢~