用visual c++开发的贪吃蛇游.doc

用visual c++开发的贪吃蛇游.doc

ID:56356619

大小:110.00 KB

页数:17页

时间:2020-06-22

用visual c++开发的贪吃蛇游.doc_第1页
用visual c++开发的贪吃蛇游.doc_第2页
用visual c++开发的贪吃蛇游.doc_第3页
用visual c++开发的贪吃蛇游.doc_第4页
用visual c++开发的贪吃蛇游.doc_第5页
资源描述:

《用visual c++开发的贪吃蛇游.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、贪吃蛇完整设计过程和完整源代码简介一直在学VC编程,但是感觉自己的进步甚微,还是什么都不懂,还是什么都不会编,再加上身心不适,学习总是断断续续的。期中考试过后,放六天假,闲来无事,在网上看到了别人编的贪吃蛇游戏,自己下载两个源代码,一个界面做的太不人性化,感觉那蛇不像蛇,都是断断续续的小点,感觉不是很好;另一个是在TC中编的,好像现在很少有人用TC,我想大家都应该跟我一样,都是用VC,没办法,需要画图,这个程序在VC中没办法运行,一DEBUG错误连篇,看都不想看了。所以自己有了编写这个游戏的念头。首先自己看了看别人编写贪吃蛇

2、的思路(其实这就是这个游戏的精髓,我很惭愧啊)。就是使用链表来实现的。-----到这里,是不是很感慨我们学过的数据结构原来是这么有用途啊?链表?用链表就可以实现吗?------没错!就是用链表(队列)实现的,在这个游戏程序中除了画图,定时,产生随机数之外,那就是链表的创建,扫描,入队和出队了。如果你懂链表的这些基本的操作,那没问题,这个游戏程序编写出来是没有问题的。当然还是得知道点(一点点)WIN32(API,我是用API,没用MFC,相比较API开始比MFC好学些哦)应用程序的基本框架的基本知识。比方说某些消息,WM_CR

3、EATE,WM_PAINT,WM_CHAR,WM_TIMER;HPEN(画笔),HBRUSH(画刷),HDC(设备上下文环境);某些设置画笔、画刷的函数:CreatePen(),SelectObject();获取DC的函数,在WM_PAINT中要使用:BeginPaint().....EndPaint(),在其他地方就要使用GetDC()......ReleaseDC();设置定时器函数SetTimer(),销毁定时器函数KillTimer()。好了,这就是编写出此程序所需要的全部知识,下面的过程要看个人的逻辑思维能力,编程

4、经验。经验丰富,逻辑缜密的走的弯子肯定要少很多,否则,那当然会走完一个又一个弯子之后....还得继续走弯子,不过肯定会做出来的,只要坚持!不过也不排除人品大爆发的,用不了多久就编出来了。不过还是强烈建议多走走弯子,只有经历过,你才知道某段代码为什么要那么编,不那么编会出现什么样的情况。嗯~~~~废话说完了,进入正题吧。首先看看我们这个程序的运行效果吧,很是简陋,但是麻雀虽小,五脏俱全啊。界面设计这个游戏,那第一步要思考的当然是如何将格子画出来了。我们先确定下每一个格子的大小吧。我这里的大小为16*16,总共有20行20列。先

5、定义宏#defineRowOfFrame20#defineColumnOfFrame20#defineWidth16#defineHeight20字面意思已经很清楚了。您可能恍然大悟,画这格子不很简单吗!对!不就是画20条横线,20条竖线吗!查下MSDN,MoveToEx()是用来设定起始点的,LineTo()是用来画起点到终点的线。当然画线是用画笔去画的。那得创建具有这些要求的画笔了。两句话就搞定了:HPENhpen=CreatePen(PS_SOLID,1,RGB(255,0,0));SelectObject(hdc,h

6、pen);接下来画20条横线20条竖线吧。这个就是Design()函数所完成的功能。当然这里需要给每个格子一个定位坐标,程序中已经默认使用了。也很简单,就是我们在脑子里面给它一个坐标系就行了。比方说(0,0)代表的是左上角第一个格子,而(19,19)代表的是右下角的格子。假如一个格子的坐标为(x,y),那么这个格子的左上顶点的实际坐标是多少呢?能想出来吧,不行就在纸上画画,是(x*Width,y*Height)。这个我们在后面产生随机数,记录蛇节点,食物的位置等的时候要用到的。看到这里想必敏感的人可能已经知道怎么画蛇了吧,不

7、也是用画笔画线吗,只不过线粗点而已,是不是?画食物也是一样的道理,简单得来吧~~~具体的操作参考一下函数DrawSnake(),DrawFood()。到这里,游戏所涉及的画图的知识就这么多。相信你可以用画笔画线、画矩形了吧。这在这里就足够了。是不是很简单呢?的确,这游戏一点都不难,要不然我这个阿斗怎么就编出来了呢?Believeyourself!Let'scontinue...数据结构下面得说说所涉及到的链表这个数据结构了。我们这里的蛇是一个个连续的格子组合在一起的,我们只要定义一个结构体记录格子的位置,那么蛇就是这些结构体

8、所组成的链表了。结构体定义如下:StructNode{Intx;Inty;Node*next;};Structsnake{Node*head;Node*tail;Intlength;};功能模块我们在初始的时候,规定蛇的长度是1,所在的位置是(0,0)格子中。这是Init()函数所完成的功

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。