欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C++课程设计报告(贪吃蛇游戏).docx

    • 资源ID:26153530       资源大小:16.09KB        全文页数:12页
    • 资源格式: DOCX        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++课程设计报告(贪吃蛇游戏).docx

    C+课程设计报告(贪吃蛇游戏) C+程序课程设计贪吃蛇游戏 姓名:XXXX 学号:XXXXXX 指导教师:XXXX 提交日期:2XXXXX 目录 C+程序课程设计 (1) 第一章课题介绍 (2) 1.1选题背景 (3) 1.2关于编译软件 (3) 1.3关于兼容性 (4) 第二章设计概要 (4) 2.1程序功能简介 (4) 2.2程序流程 (4) 第三章游戏实现 (5) 3.1创建工程 (5) 3.2游戏界面控制 (7) 3.2.1墙、框体的绘制 (7) 3.2.2蛇身的绘制 (8) 3.2.3食物的绘制 (9) 3.3游戏控制 (11) 3.3.1蛇的移动 (11) 3.3.2蛇死亡的判断 (13) 3.3.3消息窗口的弹出 (13) 3.3.3.1开始消息框 (13) 3.3.3.2关卡消息框 (14) 3.3.3.3结束消息框 (15) 3.3.4游戏音效 (16) 第四章结果与讨论 (17) 4.1程序运行 (17) 4.2对源程序的改进 (18) 4.3错误调试与分析 (18) 4.3.1关于窗口的重画问题 (18) 4.3.2关于双音轨的问题 (18) 4.3.3程序的稳定性 (19) 4.4课程设计心得与体会 (19) 附录 (21) 第一章课题介绍 1.1选题背景 蛇-传说中的圣灵之物,仰头为神、俯首为魔。蛇是月亮国膜拜的神,月亮国的子民们都认为蛇是万能的主宰派来保护他们的守护者。蛇在这个岛屿就像空气一样自然的出现在各个角落,有些还成为居民的宠物,陪伴孩子长大,和年轻人一起去探险,守护着散步的老人。在善良的女娟神保佑下,人们的生活安宁平静。为了答谢女娟的庇佑,每年月亮国的国民都会举办一个守护蛇大赛,大家都会拿出自己最强、最炫、最快、最稀有的蛇来参加比赛,获得第一名的人将得到国王的特别嘉奖。所以国民一生都在不断的培养更有威力、更长、更壮的蛇。"贪吃蛇"是一个产生于1970 年代中后期的计算机游戏,也叫蛇吃豆。 该游戏在1990 年代由于一些手机将其引入而一时间再度流行起来。在游戏中,玩家操控一条细长的蛇爬行于一个带边界的平面之上,一路拾起触碰到之事物或其它类似的物件,并要避免触碰到自身或者包围着游戏区的"墙"。每次贪吃蛇吃掉一件食物,它的身体便增长一些,这让游戏的难度渐渐变大。操控贪吃蛇时,玩家操控贪吃蛇的头部的朝向(向上、向下、向左或向右)控制贪吃蛇的进行方向,贪吃蛇的身体将跟随着其头部行进。另外,玩家不可在游戏中途停止贪吃蛇的进行。随着贪吃蛇的成功移植到手机系统,贪吃蛇的操作按键要求与手机按键的完美匹配,使贪吃蛇游戏风靡起来。 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言都是很神秘的。我希望通过自己的所学知识把它剖析开来,真正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力。因此我选定了这个题目。 1.2关于编译软件 本程序采用Microsoft Visual C+6.0的中文版本进行编译。VisualC+6.0是Microsoft公司推出的基于Windows操作系统的可视化C+编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作 性,加上支持标准C/C+规范,但仍有相当多的编程人员使用VisualC+6.0进行应用系统的开发。 1.3关于兼容性 本程序经过调试,可以在XP系统下编译运行,也可以在Vista/Win 7下运行,界面稍有不同,但不影响运行结果。 第二章设计概要 2.1程序功能简介 据分析,贪吃蛇游戏一共要实现如下几个功能: 开始运行 蛇在上下左右键的操作下运动 闯关设置 游戏音效 游戏说明 2.2程序流程 根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程(图1)。 贪吃蛇的内容主要包括: 开始游戏,随机出现食物,控制蛇的运动,吃食物,关卡处的消息询问,游戏音效的播放,分数的输出,游戏帮助的输出等等。 图1.流程图 第三章游戏实现 3.1创建工程 本程序使用Win32 Application工程,编辑在Windows窗口中打开的应用程序。由于之前没有接触过这类工程,所以我在短短几天内笼统的学习了一些相关的基本知识。在程序的编写过程中,遇到了很多问题,通过查阅资料和请教别人,解决了很多问题,但是仍然有遗留的未解决的问题,所以本程序虽然实现了大部分功能,但不是很完善,需要在将来的学习过程中逐渐改进。 图2.创建Win32 Application 工程 Win32 Application 工程与Win32 Console Application 工程有很大的不同(图2)。其主函数是WinMain()函数。创建一个经典的”Hello,World!”工程,就会有已经写好的WinMain()函数。WinMain()函数是整个程序的入口,虽然区区几行。不需要改动什么,但确实最主要的函数。函数定义如下: 在创建好的工程中,还有注册窗口函数和窗口过程函数。 实现贪吃蛇游戏的算法就写在窗口过程函数中。 int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) ATOM MyRegisterClass(HINSTANCE hInstance) LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 窗口过程函数 注册窗口函数 3.2游戏界面控制 贪吃蛇游戏的游戏界面包括墙的绘制、蛇身体的绘制、蛇移动范围的绘制、食物的绘制、分数框和注释的绘制等等。其中贪吃蛇的身体的绘制,是本程序中的核心算法。 3.2.1墙、框体的绘制 在win32 application工程中,有很多绘制图形的函数。这里最多使用到的是Rectangle()函数绘制矩形。通过坐标控制矩形的两对角点来确定矩形的长、宽、高,通过在窗口中添加画笔和画刷,使用不同的线条颜色和样式,画出所需的图框。如下是墙的绘制: hpen=CreatePen(PS_SOLID,1,RGB(255,255,255); /创建无色的画笔 hbru=CreateSolidBrush(RGB(255,255,255); /创建无色的画刷 hpenold=(HPEN)SelectObject(hdc,hpen); hbruold=(HBRUSH)SelectObject(hdc,hbru); Rectangle(hdc,rt.left,rt.top,rt.right,rt.bottom); /绘制背景 SelectObject(hdc,hpenold); /恢复笔 SelectObject(hdc,hbruold); /恢复画刷 hpen=CreatePen(PS_SOLID,1,RGB(255,100,0); /创建一支砖红色的笔 hpenold=(HPEN)SelectObject(hdc,hpen); /把砖红色的笔选进画板 Rectangle(hdc,45,35,615,465); hbru=CreateSolidBrush(RGB(255,100,0); /创建一支砖红色的画刷 hbruold=(HBRUSH)SelectObject(hdc,hbru); /把砖红色的画刷选进画板 hbruold=(HBRUSH)SelectObject(hdc,hbru); /把砖红色的画刷选进画板 for(i=50;i0;i-) /蛇的每个环节往前移动 snake.xi=snake.xi-1; snake.yi=snake.yi-1; 当蛇头的坐标和食物的坐标重合,就表明蛇吃到食物了,此时蛇要增长,将原来的食物用无色的笔“擦除”,node+1。如下: if(snake.x0=food.x&&snake.y0=food.y) /吃到食物后 hpen=CreatePen(PS_SOLID,1,RGB(255,255,255);/创建一支无色的笔 hpenold=(HPEN)SelectObject(hdc,hpen); /把无色的笔选进画板 Rectangle(hdc,food.x,food.y,food.x+10,food.y-10);/用无色的笔绘制食物以取消 /被吃掉的食物 SelectObject(hdc,hpenold); /恢复有色笔 在程序完成之后,我又添加了闯关模式的功能,其中每过一关,蛇的颜色就会改变,这是使用switch-case语句,每一关都改变绘制蛇的画笔和画刷来实现的。 3.2.3食物的绘制 确定用坐标绘制贪吃蛇蛇身以后,贪吃蛇的食物如何达到随机出现,蛇吃完食物后再次出现的食物不与蛇身相重合,并且能够按照网格式与蛇头无偏差相接就是一个亟待解决的问题。 随机出现应采用rand()函数来实现,使食物随机出现在蛇可以运动的范围内;使用语句“food.x=rand()%400+60;food.y=rand()%350+60;”,让食物的坐标产生在墙内来;而食物与蛇头无偏差相接则用if语句判断生成的坐标是否可用最小网格的间距整除处理。使随机出现的点能够整除最小网格,也就是使食物与蛇头无偏 差相接。 在游戏运行的过程中,经常会出现新出现的食物与蛇身重叠的情况,让玩家看不清食物到底在哪。经过认真的考虑,解决这个问题的办法就是,每次随机出现食物坐标时,用循环语句判断要出现的食物坐标是否与蛇身某一节的坐标重合,若是重合,重新生成一组随机数,再次判断,直到不重合时在画面上显示新食物。代码如下: for(i=2;i<snake.node;i+) food.x=rand()%400+60; food.y=rand()%350+60; if(food.x!=snake.xi) break; 再由食物坐标(food.x,food.y)与蛇头坐标是否相同判断蛇是否“吃”到了食物,设置判断标签food.yes,如果吃到了,food.yes为0,则再出现下一个食物,反之,如果没吃到,则不出现食物直到标签为0为止。 代码如下: srand(unsigned)time(NULL); /随机数发生器 food.yes=1; /食物标记:1表示需要出现新食物,0表示已存在食物 if(food.yes=1) /需要出现新食物 food.x=rand()%400+60; food.y=rand()%350+60; while(food.x%10!=0)/食物随机出现后必须让食物能在整格内,这样才能让蛇吃到food.x+; while(food.y%10!=0) food.y+; food.yes=0; /画面上有食物了 hpen=CreatePen(PS_SOLID,1,RGB(255,255,255); /创建一只无色的笔 hbru=CreateSolidBrush(RGB(0,0,0); /创建一支黑色的画刷 hpenold=(HPEN)SelectObject(hdc,hpen); /把无色的笔选进画板 hbruold=(HBRUSH)SelectObject(hdc,hbru); /把黑色的画刷选进画板 if(food.yes=0) /画面上有食物就显示 Rectangle(hdc,food.x,food.y,food.x+10,food.y-10);

    注意事项

    本文(C++课程设计报告(贪吃蛇游戏).docx)为本站会员(h****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开