教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

MFC写的贪吃蛇代码(8)

来源:网络收集 时间:2026-08-28
导读: 身体,所以将蛇的最后一节用背景色覆盖SelectStockObject(WHITE_PEN) 让它起到“消失”最后一个节点的功能 让我们以为蛇是向前走了。 如 假设现在贪吃蛇有4个单位0123 Snake[Snake[0].len-1].x*20 Snake[Snake[0].4

身体,所以将蛇的最后一节用背景色覆盖SelectStockObject(WHITE_PEN) 让它起到“消失”最后一个节点的功能

让我们以为蛇是向前走了。

如 假设现在贪吃蛇有4个单位0123

Snake[Snake[0].len-1].x*20 <=>Snake[Snake[0].4-1].x*20 =Snake[3].x*20 数组3 恰好是最后一个节点的下标,别忘了数组是从0开始算的

请仔细领悟

2

for(int i=Snake[0].len-1;i>0;i--) {

Snake[i].x=Snake[i-1].x; Snake[i].y=Snake[i-1].y; }

进行次数为\长度-1\次的循环

为什么要进行长度-1次呢?我这里要说明一下,这里是不包括蛇头的进行的平移,用数组赋值的方法,把前一节点保存在后一个结点,然后头结点向前移动。

//方向判断

if(Snake[0].direct==1)Snake[0].y--; if(Snake[0].direct==2)Snake[0].y++; if(Snake[0].direct==3)Snake[0].x--; if(Snake[0].direct==4)Snake[0].x++; pDC->SelectStockObject(BLACK_PEN);

CBrush DrawBrush=(RGB(100,100,100));

CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);

pDC->Rectangle(Snake[0].x*20,Snake[0].y*20,(Snake[0].x+1)*20,(Snake[0].y+1)*20); pDC->SelectObject(DrawBrush);

“1234”本别代表“上下左右” x++,y++进行移动,然后用选定画刷画出一个新节点的矩形作为头结点

//食物判断 if(Food.isfood==0) {

srand((unsigned)time(NULL)); do {

for(int isfo=Snake[0].len-1;isfo>=0;isfo--)

if(Snake[0].x*20==Snake[isfo].x*20&&Snake[0].y*20==Snake[isfo].y*20) {

Food.x=rand()%; Food.y=rand()%; } }

while(Food.x*20<70||Food.y*20<70||Food.x*20>430||Food.y*20>430);

pDC->Rectangle(Food.x*20,Food.y*20,(Food.x+1)*20,(Food.y+1)*20); Food.isfood=1; } 这里关于

srand((unsigned)time(NULL));

rand()

的用法 在本博客有研究帖 这里不再赘述。

当食物被吃了指定食物的地方出现的地方在小于70 和大于430的矩形区域内

并且把食物属性更改为 “存在”

//////////////////////////////////////////////////////////////////

以上就是MFC版步骤已经详细之至了,通过此次贪吃蛇我发现MFC不难,不过花了我整整一个国庆的时间,茶饭不思夜不能寐

,CView类的强大我是第一次看到,以后我

要多加关注CView类的知识点,写出这个文档的意义我觉得能让我的思路更加清晰,毕竟能和他人解释代码并且让别人能理解那是一件很愉快的事情。OnExit()中exit 0; 改为 exit (0); oninit()中 snake 中s小写变大写

oninit()中这行代码(int i=0;i<=snake[0].l-1;i++) l-1改为 len-1 onTimer中

Food.x=rand()%;

Food.y=rand()%; 百分号后面加25

MFC写的贪吃蛇代码(8).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/518913.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)