C语言还可以编写植物大战僵尸

电脑杂谈  发布时间:2020-05-01 15:28:17  来源:网络整理

植物大战僵尸gif素材_植物大战僵尸植物僵尸攻略_植物大战僵尸植物僵尸2攻略

许多同学玩过《植物大战僵尸》. 最近,PopCap带来了新版本的新闻. 这次对Xbox用户来说是一个快乐的转折. 最近,PopCap发布了XBLA版本的“植物大战僵尸”屏幕截图,此版本的“植物大战僵尸”引入了合作和对抗模式. 看着图片,您会发现它更加有趣和刺激.

C语言也能写植物大战僵尸

有关详细信息,请参见游戏说明,

游戏视频

因此,由于好奇心和好奇心,我编写了一个简单的两人游戏版本. 开发环境为VC6.0,开发语言为C语言.

最终游戏完成C语言植物大战僵尸

第一章需求分析

设计植物和僵尸之间的两人战斗,两个人在计算机上玩.

植物侧使用鼠标控制,与原始控制方法基本相同. 植物一方的获胜条件是杀死僵尸尽头的五个墓碑中的三个.

僵尸方使用键盘控制,W控制僵尸选择光标向上移动,S控制僵尸选择光标向下移动,ENTER是僵尸选择确认,箭头键控制僵尸的放置以及空格条控制僵尸. 僵尸派对的获胜条件是要像原来一样去戴夫家.

第2章外形设计

首先,根据我的设计,我将游戏分为几个元素: 地图网格元素,卡片元素,僵尸元素,购物车元素,僵尸墓碑目标元素,植物元素和效果播放元素.

第二,游戏分为几个过程: 遇到僵尸,僵尸遇到植物,手推车遇到僵尸,遇到墓碑目标等. 在每个过程之后,立即连接播放效果.

第三章详细设计

3.1加载GIF图片

plant元素和zombie元素都是动态的,因此我考虑加载GIF. 搜索信息后,我发现了在VC6.0中用GDI +加载GIF的方法.

有关更多信息,请参见使用GIF数据的VC6.0

材料和示例程序地址VC6.0加载GIF方法,示例程序

程序的结果如图所示

C语言也能写植物大战僵尸

这是因为,当数据量很大时,绘图可能要花费几秒钟甚至更长的时间,有时会出现闪烁. 要解决这些问题,可以使用双缓冲技术进行绘制.

植物大战僵尸植物僵尸攻略_植物大战僵尸植物僵尸2攻略_植物大战僵尸gif素材

双重缓冲是在内存中创建一个与屏幕绘制区域一致的对象. 首先将图形绘制到内存中的该对象,然后立即将该对象上的图形复制到屏幕,这可以大大加快绘制速度. 双重缓冲的实现过程如下:

1. 在与画布一致的内存中创建一个缓冲区

2. 绘制缓冲区

3. 将缓冲区位图复制到当前画布

4. 可用内存缓冲区

添加双缓冲示例程序地址双缓冲加载GIF

程序结果如图所示

C语言也能写植物大战僵尸

3.2游戏元素

3.2.1地图网格元素

“植物大战僵尸”地图中的草是一格一格的,因此您可以创建一个二维数组结构来表示地图上当前的网格状态.

typedef结构

{

char cName; //网格中植物的名称,如果没有植物,则为0

int iLife; //网格中植物的生命价值

char cSun; //网格中是否有阳光

char cChomper; //是否是食人症

char cSquash; //是否是蜜瓜

char cBomb; //是

char cCherryBomb; //是

POINT ptSite; //网格的坐标位置

植物大战僵尸植物僵尸攻略_植物大战僵尸植物僵尸2攻略_植物大战僵尸gif素材

char cBeat; //网格中的植物是否受到攻击

} __地图;

__ MAPNATURE _MAP [5] [9]; //植物植物

__ MAPNATURE _MAPZOM [5] [3]; //僵尸的网格

3.2.2卡元素

植物和僵尸可以选择卡片,如图所示

C语言也能写植物大战僵尸

植物有植物卡,僵尸有植物卡. 每张卡具有不同的属性并创建结构.

typedef struct {

char cCanFlg; //可以选择

int iCount; //冷静下来的时间

POINT ptSite; //卡的位置

char pTime [8]; //冷却时间

int iColor; //隐藏的颜色

int iMoney; //花在卡上的钱

} __ CARDNATURE;

__ CARDNATURE _CARD [8]; //植物卡

__ CARDNATURE _CARDZOM [7]; //僵尸卡

3.2.3僵尸元素

每个僵尸都是一个独立的单位,包括其生存和位置. 我使用结构数组,实际上可以使用循环队列.

typedef struct {

植物大战僵尸植物僵尸2攻略_植物大战僵尸gif素材_植物大战僵尸植物僵尸攻略

char clive; //是否还活着

char cName; //僵尸的名字

int iLife; //僵尸的生命价值

char cPole; //极僵尸的极是否存在

int iSpeed; //僵尸的行走速度

POINT ptSite; //僵尸的位置

char cBeat; //僵尸是否被击中

字符攻击; //僵尸是否在吃植物

char cPass; //僵尸可以行走,但无法通过植物

char cProtect; //是否有保护僵尸,免受报纸,铁桶僵尸的攻击

char cPoleVaulting; //极地僵尸是否正在跳跃

} __ ZOMBIENATURE;

__ ZOMBIENATURE _ZOMBIE [ZOMMAX]; //僵尸数组

3.2.4其他元素

这里的其他元素是购物车元素,僵尸侧的墓碑目标元素和植物的元素. 同样,它们也有自己的特征.

//购物车

typedef struct {

char cActive; //购物车激活标志. 僵尸遇到激活

char clive; //购物车用完了,到了最右边,还没活着

POINT ptSite; //花盆位置

} __ LAWNMOVERNATURE;

植物大战僵尸植物僵尸攻略_植物大战僵尸gif素材_植物大战僵尸植物僵尸2攻略

//僵尸目标

typedef struct {

int iLife; //僵尸目标的健康状况

POINT ptSite; //目标位置

char cBeat; //目标是否受到攻击

} __目标;

//豌豆

typedef结构

{

char clive; //激活标志,发射频率多高

char cOpen; //可以激活

POINT ptSite; //的旧位置

POINT ptNew; //的新位置

} __公告;

3.3游戏处理

3.3.1用处理僵尸

是结构的阵列,而僵尸也是结构的阵列. 用两个for循环扫描两个阵列. 当的坐标与僵尸的坐标相遇时,激活标记被清除,即消失,而僵尸的生命值降低一. 在清除僵尸之前,僵尸会死去.

3.3.2僵尸遭遇植物治疗

对于循环扫描每个僵尸,并根据其位置判断地图上与僵尸相对应的前一个网格. 从当前网格的状态来看,接下来会发生什么. 例如: 网格中没有植物,僵尸就过去了;僵尸碰到了豌豆射手,坚果墙,向日葵就停止了进食. 同时植物大战僵尸gif素材,网格的健康值持续降低,直到植物被吃掉并向前走为止,因为一根杆子僵尸有一根杆子,遇到它们时必须跳过它们;僵尸在播放效果时遇到,巢和食人鱼时会被吃掉或炸掉.

3.3.3处理推车遇到的僵尸

用于遍历每个僵尸. 当僵尸走到最左边时,购物车符号被激活,购物车向右移动. 当推车在这条路上撞到僵尸时,僵尸将死亡. 当手推车到达最右边时,手推车将死亡.

每天晚上20:00,我都会偶尔进行直播,以分享C / C ++游戏编程的学习知识和方法. 我将不时更新最新的教程和学习方法. 每个人都在学习C / C ++,Trans或大学生以及想要提高工作能力的前端方,如果您是学习C / C ++的小伙伴植物大战僵尸gif素材,则可以参加研究. 最后,我希望所有程序员都能达到人生的顶峰,让代码将梦想变为现实,非常适合新手学习,您可以随时问我有没有问题,希望您在不熟悉的时候可以解决难题忙. 您可以观看我的主页视频以首先学习它.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-195417-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...