C语言学习记录9

今天把pvz的收尾工作完成了,增加了开头巡场,阳光限制种植等功能,今后考虑加入更多的僵尸和植物。

下一步的目标是默写一遍代码,缕清思路。

回顾这么多天的学习过程,我将总结制作一款小型游戏的基本框架和使用技巧。

第一部分:基础框架

step1:

确定游戏玩法。

创建窗口。初始化游戏参数,包括创建对象结构体,初始化结构体,导入图片,配置随机种子等

step2:

处理游戏事件,包括碰撞检测,随机事件的发生,设置胜利与失败条件及其判断等

step3:

模块化所有函数,将生成、更新、渲染分开

step4:

找bug。

技巧:

遇到动画帧数播放过快的情况,可以采用静态变量计时器来降低频率,具体操作为

static int count=0;
if(++count>5){
count=0;
(statement);
}

这样可以实现每经过六次执行一次的效果。

针对对象处理的池的创建,具体操作为

int k;
for(k = 0; k < Max && figure[k].used; k++);
if(k < Max){
(statement);
}

其中figure是池里包含的对象,Max是池的大小,used是对象的属性,代表该对象是否在池里。

图片组的导入。利用sprintf函数多次对name赋值,再以name为地址导入图片,用于一系列动画。具体操作为

for(int i=0 ;i < Max;i++){
sprintf(name,"./%d.png");
loadimage(&img[i], name);
}

按钮的高亮设计。比较简单的一个方法如下

loadimage(x ,y ,flag?img1:img2);

flag是由用户交互模块所控制的,通过鼠标消息的不同点击状态来控制flag是否为真。

遇到需要控制变量从0到某个值循环变化的时候,可以采取如下写法:

index = (index + 1) % Max;

可以用于字母的后移加密,如将字母后移4位可以写成:

letter = (letter + 4 - 'a' + 1) % 26 -'a' + 1; 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

飞猪0_0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值