尊宝国际娱乐APP下载

设为首页收藏本站

编程十万个为什么,属于程序员的编程论坛

 找回密码
 5秒快速注册
QQ登录 只需一步,快速开始
搜索
查看: 1806|回复: 0
打印 上一主题 下一主题

[原创] MFC实现贪吃蛇游戏之食物的产生

[复制链接]
跳转到指定楼层
传说中的楼主
发表于 2016-11-14 09:08:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近有点事,耽误了文章的更新,需要说下的是,之前我用的VS2015写的代码,现在改成VS2010了~
根据早几天的文章,我们已经能创建出一条蛇,并能让他移动,今天的任务非常非常简单,我们只要在窗口上创建出食物即可~
思路是,我们随机一个X,Y出来,然后将数组 m_arrGameRange[x][y]改成3 然后在DrawGameRange函数加个判断 else if(m_arrGameRange[j] == 2)

大家可以先尝试下自己写个创建食物的代码,然后再看教程,这样有助于大家能力的提升!



好了,话不多说,我们在上次的代码的基础上加个函数,叫做CreateFood();没有返回值,我们再头文件加上void CreateFood();
然后在void CSnakeDlg::InitGameData()中调用下这个函数

CreateFood函数的实现代码如下
[C++] syntaxhighlighter_viewsource syntaxhighlighter_copycode
void CSnakeDlg::CreateFood() { srand(time(0));//创建一个时间种子 int x = rand()%GAME_COL-1;//产生一个0--GAME_COL-1的随机数 while (x == 0)//如果是0的话 会画在绿色的框框上,必须重新随机 { x = rand()%GAME_COL-1; } int y = rand()%GAME_ROW-1; while (y == 0) { y = rand()%GAME_ROW-1; } m_arrGameRange[x][y] = 2;//将这个随机的行、列设置为2 表示食物 Invalidate(); }
然后将DrawGameRange代码改成下面这样
[C++] syntaxhighlighter_viewsource syntaxhighlighter_copycode
void CSnakeDlg::DrawGameRange(CDC& dc) { CBrush brushGame(RGB(0, 0, 0));//创建黑色画刷 用来画游戏区域 CBrush brushBorder(RGB(34, 176, 76));//创建绿色画刷 用来画边框 CBrush brushFood(RGB(255,201,14));//创建橙色画刷 用来画食物 //遍历行、列来画不同的颜色 for (int i = 0; i < GAME_COL; i++) { for (int j = 0; j < GAME_ROW; j++) { //根据行列来计算一个矩形大小,每个矩形占20个像素 CRect rt; rt.left = i * 20; rt.top = j * 20; rt.right = rt.left + 20; rt.bottom = rt.top + 20; if (m_arrGameRange[i][j] == 1)//需要画边框 { //填充矩形的函数, //第一个参数是要填充的矩形 //第二个参数是什么什么画刷填充矩形 dc.FillRect(rt, &brushBorder); } else if(m_arrGameRange[i][j] == 0)//画游戏区域 { dc.FillRect(rt, &brushGame); } else if(m_arrGameRange[i][j] == 2)//画食物 { dc.FillRect(rt, &brushFood); } } } }

大功告成,运行看看是不是有食物了

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 !wechat_share!!wechat_share!
收藏收藏 转播转播 分享分享 分享淘帖 顶一个顶一个 踩一下踩一下

BcWhy版权声明1、本帖可以任何形式转载到任何媒体,但必须带上本贴的URL连接,否则即视为同意支付 1000 元报酬
2、本主题所有言论和图片纯属夜影个人意见,与本论坛立场无关
3、本主题由该帖子作者夜影发表,该帖子作者夜影与本站享有帖子相关版权
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、本站管理员和版主有权不事先通知发贴者而删除本文

您需要登录后才可以回帖 登录 | 5秒快速注册
本版积分规则
关闭

BcWhy推荐上一条 /1 下一条

QQ|关于我们|最新帖子|小黑屋|手机版|编程十万个为什么 ( 粤ICP备16108587号-2   GMT+8, 2017-12-13 20:54 , Processed in 0.149747 second(s), 34 queries , File On.
Powered by Discuz! X3.3 © 2001-2017 Comsenz Inc.
快速回复 返回顶部 返回列表
尊宝国际娱乐APP下载亚虎娱乐手机官方网站亚虎国际娱乐齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载
优乐娱乐亚虎娱乐手机官方网站亚虎国际娱乐梦之城娱乐
尊宝国际娱乐APP下载尊宝国际手机首页尊宝国际娱乐城齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载