欢迎来到天天文库
浏览记录
ID:6333034
大小:530.61 KB
页数:28页
时间:2018-01-10
《c++《程序设计综合课程设计》报告-贪吃蛇小游戏》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、华科学院计算机科学与技术专业《程序设计综合课程设计》报告(2011/2012学年第一学期)学生姓名:学生班级:学生学号:指导教师:年月日贪吃蛇小游戏目录1.课程设计目的和要求11.1课程设计目的11.2课程设计要求12.课程设计任务内容13.详细设计13.1设计要求13.2设计思想23.2.1界面设计:23.2.2数据结构23.3函数设计43.3.1文件及函数组成43.3.2函数的详细设计53.4限制条件73.5.流程图73.5.1系统流程图73.5.2函数流程图94.测试134.1运行结果及程序
2、测试144.2错误调试与分析165.课程设计设计心得与体会17参考文献19附录:程序清单201.课程设计目的和要求本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计基础(C++)》课程后进行的一次全面的综合设计。本课程设计的目的和任务:1.1课程设计目的1.巩固和加深学生对C++语言课程的基本知识的理解和掌握。2.掌握C++语言编程和程序调试的基本技能。3.利用C++语言进行基本的软件设计。4.掌握书写程序设计说明文档的能力。5.提高运用C++语言解决实际问题的能力。基
3、本要求:1.2课程设计要求1.分析课程设计题目的要求。2.对系统功能模块进行分析,写出详细设计说明文档。3.编写程序代码,代码量要求不少于300行。调试程序使其能正确运行。4.设计完成的软件要便于操作和使用。5.设计完成后提交课程设计报告。2.课程设计任务内容程序要求游戏时,一条蛇在密闭的围墙内,围墙内会随机出现一个食物通过键盘上的4个光标键控制蛇向上下左右4个方向移动,蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时计10分。接着又出现食物等待被蛇吃掉。如果蛇在移动过程中,撞到墙壁或
4、身体交叉(蛇头撞到自己的身体),则游戏结束。3.详细设计3.1设计要求贪吃蛇算法程序要求:游戏时,一条蛇在密闭的围墙内,围墙内会随机出现一个食物通过键盘上的4个光标键控制蛇向上下左右4个方向移动,蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时计10分。接着又出现食物等待被蛇吃掉。如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体),则游戏结束。-24-3.2设计思想3.2.1界面设计:这个程序的关键是表示蛇的图形以及蛇的移动。用一个小@表示蛇的一节身体,身体每长一节,增加一个
5、@。移动时必须从蛇头开始,如果不按任何键,蛇自行在当前方向右前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,在界面中央有个静止不动的食物,用户通过键盘来控制蛇的走向,当蛇吃到食物时,分数增加十分,界面开始更新,蛇的身体增加一节,食物的位置变化一次,当蛇碰到界面时,游戏自动结束,显示用户最后的分数。3.2.2数据结构snack.h文件及类的设计如表3-1所示。表3-1
6、1Cmp类的设计。classCmp{friendclassCsnake;intrSign;//横坐标intlSign;//竖坐标public:-24-//friendboolisDead(constCmp&cmp);Cmp(intr,intl){setPoint(r,l);}Cmp(){}voidsetPoint(intr,intl){rSign=r;lSign=l;}Cmpoperator-(constCmp&m)const{returnCmp(rSign-m.rSign,lSign-m.lSi
7、gn);}Cmpoperator+(constCmp&m)const{returnCmp(rSign+m.rSign,lSign+m.lSign);}};constintmaxSize=5;//初始蛇身长度2Csnake类的设计。classCsnake{CmpfirstSign;//蛇头坐标CmpsecondSign;//蛇颈坐标CmplastSign;//蛇尾坐标CmpnextSign;//预备蛇头introw;//列数intline;//行数intcount;//蛇身长度vector8、or>snakeMap;//整个游戏界面queuesnakeBody;//蛇身public:intGetDirections()const;chargetSymbol(constCmp&c)const-24-//获取指定坐标点上的字符{returnsnakeMap[c.lSign][c.rSign];}Csnake(intn)//初始化游戏界面大小{if(n<20)line=20+2;elseif(n>30)line=30+2;elseline=n+2;row
8、or>snakeMap;//整个游戏界面queuesnakeBody;//蛇身public:intGetDirections()const;chargetSymbol(constCmp&c)const-24-//获取指定坐标点上的字符{returnsnakeMap[c.lSign][c.rSign];}Csnake(intn)//初始化游戏界面大小{if(n<20)line=20+2;elseif(n>30)line=30+2;elseline=n+2;row
此文档下载收益归作者所有