C语言学习记录7

学习完easyx的基础操作之后,我继续开始pvz的代码编写

在跟进视频过程中我的收获最大的不是学习了新的代码,而是打开了新的思路

以下是我学习到的思路:

1.动画模块

所有图像的放置都需要先载入。对于动画来说,可以制作一个对象每一帧的图像,将这些图像加载到一个数组中。背景图的刷新,对象的渲染需要用到时间模块,可以通过计算时间得到时间间隔,设定所需要的刷新间隔,比如以下代码

int timer = 0;
int flag = 1;

while(1){

timer += getDelay();

if (timer > 50) {
	flag = 1;
	timer = 0;
}
if (flag) {
	flag = 0;
	UpdateWindow();//这个函数是自定义的图像渲染模块
}
}

再通过修改对象放置的图片参数,就能设计出动画了

比如定义一个图像数据组

IMAGE img[20];

每次循环顺序放映其中的一张,得到动画效果。

2.输入模块

目前初步掌握了鼠标和键盘的消息函数

ExMessage msg;
int flag = 0;
if(peekmessage(&msg)){
    if(msg.message == WM_LBUTTONDOWN && 
       msg.x > X1 && msg.x < X2 &&        //判断鼠标点击区域
       msg.y > Y1 && msg.y < Y2){
       (statement);
       flag = 1;//flag变量的创建是为了表示鼠标的状态,0表示鼠标未点击该区域,1表示已点击
       }
    if(msg.message == WM_LBUTTONUP && flag == 1){//如果已经点击上述区域的话,鼠标抬起表示进入
       (statement);
      }

3.地图网格化模块

在制作网格游戏的时候,可以定义一个二维数组结构数据地图

map[row][column]来表示地图中的任意一个方格

struct map{
    int type;
    int frameIndex;
};

例如,可以用type来表示该格地图的状态,比如是空白,墙还是什么。在pvz中,每个格子都只能种一个植物,所以我们可以用数字编码植物,以type来表示。用数字来编码植物的动画帧数,以frameIndex表示。在pvz中,毁灭菇爆炸后会留下一个弹坑,这个弹坑也可以设计一个type编码来实现。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞猪0_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值