用MFC写了个贪吃蛇

本文分享了使用MFC开发贪吃蛇游戏的过程及心得,重点介绍了如何利用定时器控制游戏进度,采用CList<CPoint>管理蛇身,并通过键盘监听改变蛇的移动方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天看侯SIR的《深入浅出MFC》,看完了觉得如果就这么放下可能效果不好,就做了个贪吃蛇,本来打算做另一个东西呢,结果发现现在知识储备还不够,还得看看书,再说吧!

贪吃蛇实现得比较简单,SDI,单线程,没用位图,因为我没搞明白怎么编辑和使用位图,而且在网上看到一个也没用位图的贪吃蛇范例,很好看,就用简单地矩形填充做了。

做的过程中遇到的问题大概记录一下:

首先是定时器,贪吃蛇肯定要定时器,用以推进游戏进度。MFC中定时器的用法是:

SetTimer()用以设置定时器,指定定时间隔和消息处理函数,改变时间间隔可以改变游戏难度,如果不指定消息处理函数则由framework调用OnTimer(),这也是一般的做法;
OnTimer()用以响应,在此中完成该做的工作;
KillTimer()使用结束杀掉定时器。

需要注意的是,只有CWnd的派生类才能接受定时器消息,所以只能在CMyView和CMainFrm中使用。SetTimer()必须在窗口完全产生之后调用,KillTimer()必须在窗口销毁之前调用,因此要掌握好时机,否则会导致一个ASSERT FAILED。

有了定时器,蛇就可以走了,由于贪吃蛇每次前进时全身所有点都向前挪一位,就相当于尾部节点接到头结点前面而其它节点不动,而这样做移动的效率就很高,为了适应这种操作,选用了CList<CPoint>作为描述Snake的数据结构。

改变蛇的运动方向要靠响应键盘信息,响应ON_COMMAND的WM_KEY_DOWN,如果响应WM_KEY_UP的话灵敏度不太够。

对于设置背景颜色、改变窗口风格也都轻车熟路了,多亏了侯SIR的书。

发现很多东西上网搜就可以,只要你明白它的原理,真的不用非得记住。

唉呀呀,上境界了。

赶紧抓紧看书吧!

游戏中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值