网站大量收购独家精品文档,联系QQ:2885784924

c贪吃蛇课程设计.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c贪吃蛇课程设计

C++课程设计报告 (贪吃蛇游戏的实现) 院  系:计算机工程系 专  业: 软件工程 学  号: 姓  名: 2011-06-24 目录 一、应用程序的最终界面 1.1选题背景 1.2关于编译软件 1.3关于兼容性 二、概要设计 2.1程序流程与思路 三、软件实现 3.1变量函数的声明 3.2主要功能的实现 3.2.1初始化食物 3.2.2游戏控制 四、结果与讨论 4.1错误调试与分析 4.2程序的缺陷 五、总结展望 一、应用程序的最终界面 本游戏是通过键盘的方向键来控制贪吃蛇的运动的,最终运行所产生的界面效果如下 1.1.选题背景 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言都是很神秘的。我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力。因此我选定了这个题目。 1.2关于编译软件 本程序采用Microsoft Visual C++6.0的中文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。 3.1函数声明 void Fence::InitFence()//画框框; void Fence::OutputF()//显示框框; void SnakeNode::add_head(int x,int y) //插入头结点; void SnakeNode::delete_tail()//删除尾结点; void move::moving() void change_point(char); //改变方向; void get_food();//做种子(程序运行时间); 3.2.1初始化食物 确定用点数组存储贪吃蛇以后,贪吃蛇的食物如何达到随机出现,并且能够按照网格式与蛇头无偏差相接就是一个亟待解决的问题。 随机出现应采用rand()函数来实现,而食物与蛇头无偏差相接则利用坐标来解决。设置两个整型变量food x,food y作为食物出现的点的坐标,令food_x= rand()%18+1; food_y= rand()%18+1即可。使随机出现的点能够整除最小网格,也就是使食物与蛇头无偏差相接。 再由食物坐标food x,food y与蛇头坐标是否相同判断蛇是否“吃”到了食物 void move::get_food() { srand((unsigned int) time(NULL)); //做种子(程序运行时间); food_x= rand()%18+1; food_y= rand()%18+1; f.game[food_x][food_y]= * } 3.2.2游戏控制 开始游戏后的重点是如何用键盘来控制蛇的移动.首先说明键盘与蛇的响应,设置一个方向控制变量dir point;,再添加 m.change_point(keydown)函数来实现键盘消息的传递,按下不同的键盘按键,dir point会相应的改变,再利用switch语句在change_point(char keydown)函数中对坐标进行相应改变即可。如图3-3所示。 运行游戏 按w a s d控制方向 头部是否与food重合 将food添加到蛇身中并产生新food 出界 与自身相交交 移动一格 更新运动方向 Y N N Y N Y Return false Return ture (1)下 (2)左 (3)上 (4)右 图3-3 键盘的上下左右键的效果 4.1错误调试与分析 此程序的在调试过程中曾先后出现蛇不吃仔等问题,最严重的是当它追尾时它依然运行着。是因为没有定义其撞到自身时的情况。其次次程序在游戏过程中频闪的非常严重。查阅了资料,双缓冲技术可以解决这个问题,但是如果采用双缓冲技术,暂时还不能克服背景的问题,因为在双缓冲技术的应用中,背景是被强制默认为颜色,而不是图片。在背景问题上本来我打算在system(cls);后加上system(“color 3F”)来改变颜色,但发现加上运行后第一界面不是次颜色,我尝试改变了一下,但是没有成功,所以这个问题还没有解决。希望多多给予意见。 4.2程序的缺陷 由于此程序对我来说是比较大的程序,因此考虑到的因素比较少。看到其他人的贪

文档评论(0)

yxutcangfp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档