贪吃蛇课程设计报告.docx

上传人:h**** 文档编号:26534557 上传时间:2022-07-18 格式:DOCX 页数:15 大小:16.19KB
返回 下载 相关 举报
贪吃蛇课程设计报告.docx_第1页
第1页 / 共15页
贪吃蛇课程设计报告.docx_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《贪吃蛇课程设计报告.docx》由会员分享,可在线阅读,更多相关《贪吃蛇课程设计报告.docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、贪吃蛇课程设计报告 成都信息工程学院课程设计报告 贪吃蛇游戏设计 姓名: 学号: 姓名: 学号: 姓名: 学号: 专业:信息安全 班级: 提交日期: 贪吃蛇游戏设计 摘要 本设计主要围绕贪吃蛇游戏展开。众所周知,贪吃蛇游戏一直以来是比较流行的。传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。例如,最近流行的免费的3D版的贪吃蛇游戏,界面相当的美观,有很强的立体效果,真实感更强,食物也为立体的且颜色绚丽。在3D版贪吃蛇游戏里面,墙壁是真实的墙壁,障碍物比较多,如树、土丘等。此外,其功能更多更强,可以选择难度。不过,总而言

2、之,3D版与传统的贪吃蛇游戏有共性,即娱乐性与益智性。这些也是贪吃蛇游戏的优点。 因我们水平有限,只能设计简单的贪吃蛇游戏。不过,在功能上,比传统贪吃蛇游戏更丰富。操作起来,显得更为灵活。界面的颜色随机变换,不易使眼睛疲劳。 关键词:贪吃蛇小游戏简单灵活颜色多变 目录 论文总页数:12页第一章课题介绍 (1) 1.1课题背景 (1) 1.2关于编译软件 (1) 1.3关于兼容性 (1) 第二章课题分析 (1) 2.1贪吃蛇游戏功能分析 (1) 2.2游戏界面分析 (2) 2.3游戏思路分析 (2) 第三章设计的具体实现 (2) 3.1系统组成模块结构及功能 (2) 3.1.1 程序结构 (3)

3、 3.1.2 程序流程及效果 (3) 3.2类的定义以及变量、函数的声明 (5) 3.2.1 类的定义、函数的声明 (5) 3.2.2 变量声明 (6) 3.3主要功能实现代码 (7) 3.3.1 初始化食物及随机生成食物 (7) 3.3.2 蛇的移动 (7) 3.3.2 判断是否撞墙或身体 (8) 第四章问题解决及运行截图 (9) 结论 (12) 参考文献 (12) 第一章课题介绍 1.1 课题背景 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将我们自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学

4、知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中将从实践和实际的项目中提高自己的编程能力。因此我们选定了这个题目。 1.2 关于编译软件 本程序采用Microsoft Visual C+6.0的英文版本进行编译。VisualC+6.0是Microsoft公司推出的基于Windows操作系统的可视化C+编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C+规范,但仍有相当多的编程人员使用VisualC+6.0进行应用系统的开发。 1.3 关于兼容性 本程序经过调试,可以在XP

5、系统下编译运行,也可以在Win7下运行,界面稍有不同,但不影响运行结果。 第二章课题分析 2.1 贪吃蛇游戏功能分析 该游戏和我们小时候玩儿的贪吃蛇大同小异:一条蛇在密闭的围墙内,围墙内会因难度系数不同而增设一些一些障碍物,在围墙内会随机出现一个食物,通过键盘上的四个光标键控制它相上下左右四个方向移动,当蛇头撞到食物时,则表示失误被吃掉,这时蛇身增长一节,同时获得10分,接着随机生成食物,等待被蛇吃掉。如果在移动过程中撞到墙壁、障碍物或者自己的身体,游戏便结束。 2.2 游戏界面分析 程序运行时,如图所示,边框有菱形的围墙,围墙内有不同等级的障碍物设置,美元符号$代表食物。 2.3游戏思路分析

6、 用代表蛇的身体,每吃掉一个事物,就增加一个,代表头,代表尾,蛇头和蛇尾不能对换。游戏开始时,初始化为蛇自行向下移动,当玩家按了有效键之后,便向指定方向移动,一步移动一节身体。当蛇头位置碰撞到食物与之重复时,就新添加一个节点作为头。 关于蛇的生存:撞墙或者撞到自己的身体就视为生存期满,游戏结束。 关于判断:先判断蛇头移动方向的下一个节点地图坐标是否为1,若为1则撞上表示游戏结束;如果蛇头与自己身体的任一个节点相撞,则游戏结束。 关于过关:每吃一个食物得10分,每一关是200 * 关数为过关。每关地图不一样,速度也不一样,难度递增。 第三章设计的具体实现 3.1 系统组成模块结构及功能 3.1.

7、1 程序结构 根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、以及停止游戏,音乐音效的添加与控制,游戏帮助提示与英雄榜的显示等等。具体的程序结构如下面的图所示。 3.1.2 程序流程及效果 根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括:游戏开始,随机出现食物;按下Space键可以实现暂停功能;设置游戏等级,关卡数;游戏说明;可播放背景音乐和音效等等。 3.2 类的定义以及变量、函数的声明 根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。 3.2.1 类的定义、函数的声明 1.FOOD类: class food public: /* 参数说明

8、: int *nodes_x:当前蛇结点的所有x坐标 int *nodes_y:当前蛇结点的所有y坐标 int nodecount:当前蛇结点个数 const int maphanlie: */ void createfood(int *nodes_x, int *nodes_y,const int maphanlie,int nodecount);/随机生成食物 int get_food_x(); int get_food_y(); void set_food_x(int x); void set_food_y(int y); void set_food_life(int life); pr

9、ivate: static int food_x; static int food_y; static int food_life;/food 生命 ; 2.MAP类: class map public: void get_map( const int in_map40,int out_map40);/获取地图数组 void print_map( int key);/打印出地图 void selectmap(int mapkeyhanlie); private: ; 3.SNACK类: class snake public: /*作用:创建蛇的对象*/ snake(); void Initi(

10、);/初始化蛇 void snake_run();/蛇开始移动 void inter_snake_life();/判断蛇是不是活着 void inter_eat_food(char der); void movesnaketowhere(int count,char towhere);/控制蛇的移动方向 void selectsnake_xy();/将蛇结点的横纵坐标取出来放到数组中。 /snake_node add_node(int node_x,int node_y);/返回结点对象 void set_size();/设置size 大小 private: int size; ; 4.SNA

11、CKNODE类: class snakenode public: /* 函数作用:创建snake_node,并存入结点在屏幕上的的显示坐标*/ /*参数:int x:结点的横坐标*/ /*参数:int y:结点的纵坐标*/ snakenode(); snakenode(int x,int y) node_x=x; node_y=y; snake_node_count+; /* 函数作用:返回数据对象x的值*/ int get_node_x(); void set_node_x( int x); void set_node_y( int y); /* 函数作用:返回数据对象y的值*/ int g

12、et_node_y(); static void set_node_count(int nodecount); /* 函数作用:返回数据对象snake_node_count的值*/ static int get_node_count(); private: int node_x;/存储snake_node结点在屏幕上显示的横坐标 int node_y;/存储snake_node结点在屏幕上显示的纵坐标 static int snake_node_count; /记录结点的个数 ; 3.2.2 变量声明 int *nodes_x:/当前蛇结点的所有x坐标 int *nodes_y:/当前蛇结点的

13、所有y坐标 int nodecount:/当前蛇结点个数 const int maphanlie: int node_x;/存储snake_node结点在屏幕上显示的横坐标 int node_y;/存储snake_node结点在屏幕上显示的纵坐标 static int snake_node_count;/记录结点的个数 int food:food_life=0;/初始值,生存flag int food:food_x=0;/初始化食物横坐标 int food:food_y=0;/初始化食物纵坐标 3.3 主要功能实现代码 3.3.1 初始化食物及随机生成食物 void food:createfo

14、od(int *nodes_x, int *nodes_y,const int maphanlie,int nodecount) int i = 0; int x_food; int y_food; int mapflag = 1; /是否是地图障碍物的标志 if(food_life = 0) do do srand(int)time(0); /随机数初始化 x_food = rand()%25;/产生25以内随机数 y_food = rand()%80;/产生80以内随机数 i+; if(i = nodecount) i = i - nodecount; for(int j = 0; j n

15、odecount; j+) if(x_food != nodes_xj | y_food != nodes_yj) & y_food%2 = 0) food_x = x_food; food_y = y_food; mapflag = mapx_foody_food/2; /mapflag=mapx_foody_food/2; while(mapflag); food_life=1; while(!food_life); gotoxy(y_food,x_food); printf(); 3.3.2 蛇的移动 void snake: movesnaketowhere(int count,char

16、 towhere)/移动蛇的方向 /const int turntoX2=1,0;/蛇在x轴上移动 /const int turntoY2=0,1; snakenode a; a=nodescount-1; int x=a.get_node_x(); int y=a.get_node_y(); gotoxy(nodes0.get_node_y(),nodes0.get_node_x(); /printf( ); for( int j=0;jcount;j+) gotoxy(nodesj.get_node_y(),nodesj.get_node_x(); printf( ); for(int i

17、=0;icount-1;i+) nodesi=nodesi+1; nodesi.set_node_x(nodesi+1.get_node_x(); nodesi.set_node_y(nodesi+1.get_node_y(); switch(towhere) case w: case W:x=x-1; a.set_node_x(x); break; case a: case A:y=y-2; a.set_node_y(y); break; case d: case D:y=y+2; a.set_node_y(y); break; case s: case S:x+; a.set_node_x(x); break; default: ; break; nodescount-1=a; 3.3.2 判断是否撞墙或身体 void snake:inter_snake_life()/判断蛇是不是撞墙或者撞到了自己的身体

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

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

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