收藏 分享(赏)

c语言程序设计课程最终版.doc

上传人:dreamzhangning 文档编号:2703531 上传时间:2018-09-25 格式:DOC 页数:23 大小:187.50KB
下载 相关 举报
c语言程序设计课程最终版.doc_第1页
第1页 / 共23页
c语言程序设计课程最终版.doc_第2页
第2页 / 共23页
c语言程序设计课程最终版.doc_第3页
第3页 / 共23页
c语言程序设计课程最终版.doc_第4页
第4页 / 共23页
c语言程序设计课程最终版.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、沈 阳 理 工 大 学 课 程 设 计 专 用 纸i成 绩 评 定 表学生姓名 何涌 班级学号 1309060316专 业 光电信息科学与工程 课程设计题目 贪吃蛇评语组长签字:成绩日期 20 年 月 日沈 阳 理 工 大 学 课 程 设 计 专 用 纸ii课程设计任务书学 院 理学院 专 业 光电信息科学与工程学生姓名 何涌 班级学号 1309060316课程设计题目 贪吃蛇实践教学要求与任务:进一步培养学生结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解;针对 C 语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。本课程设计的基本

2、步骤与要求是:1、问题分析及解决方案框架确定。2、详细设计和编码。3、上机前编写程序与检查。4、上机调试程序。5、完成课程设计报告功能介绍:贪吃蛇是一款有趣的游戏,用键盘的上下左右控制蛇前进的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会加长,身子越长难度就越大,不能碰墙,也不能咬自己的尾巴,等到了一定的分数,等级就提高一级,蛇的速度加快。工作计划与进度安排:第一天:查阅资料 第二天:程序设计 第三、四天:程序调试 第五天:论文写作、答辩指导教师:201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日沈 阳 理 工 大 学 课 程 设 计 专 用 纸

3、iii摘 要C 语言是在国内外广泛使用的一种计算机语言,它具有高级语言的特点,有具有汇编语言的特点。我们利用电脑或者游戏机玩的游戏都可以利用 C 语言来进行编写,大部分也都是用 C 进行编写的,其中 2D 的贪食蛇游戏是利用编写的经典案例。学习语言的唯一目的是应用,而应用时通过程序设计来实现的。所谓语言是一种技能,而程序设计是一门科学。程序设计最重要的是设计的思路,设计的思路就是一个大纲。有了这个大纲在编写程序时我们就可以按图索骥,一步一步的实现我们所想要达到的功能。这样就可以有效避免在编程时出现毫无头绪,不知所措的局面。把设计思路绘成框图则更加清晰明了。本游戏的设计关键在于表示蛇的图形及蛇的

4、移动。用一个小局限性方块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头业用同样的一节小矩形方块表示移动时必须从蛇可以上向前爬行,档案下有效方向键后,应先确定蛇头的位置,而后蛇的身体虽蛇头移动,图形的实现是从身体新位置开始画出蛇。这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一节蛇身,即看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失意识画矩形块和覆盖矩形块。同时用时钟函数进行速度的调整。在编程过程中需要注意和做到的程序内的高内聚和程序间的低耦合。便于出错时程序的检查和修改。关键词 游戏;贪吃蛇;语言;时钟;沈 阳 理 工 大 学 课 程 设 计 专 用 纸iv目

5、 录1 贪吃蛇 11.1 设计要求 .11.2 软件需求 .12 软件设计 22.1 模块设计 .22.1.1 系统模块图 .22.1.2 main 主函数模块 32.2 流程 图 .32.21 系统流程图 .32.2.2 PlayGame 函数流程图 43 源程序及结果分析 .63.1 主要程序分析 63.1.1 void DrawFame 函数 .63.1.2 void DrawInfo 函数 63.1.3 void GreatSnake 函数 63.1.4 viod MoveSnake 函数 73.1.5 void PlayGame 函数 73.2 源代码展示 .73.3 运行结果显示

6、.16沈 阳 理 工 大 学 课 程 设 计 专 用 纸v3.3.1 开场画面 .163.3.2 程序运行中 .173.3.3 运行结束 .17参考文献 18沈 阳 理 工 大 学 课 程 设 计 专 用 纸11 贪吃蛇1.1 设计要求先在程序中设计好数组元素与蛇,食物的对应关系;产生一个固定大小有边界的游戏区域,蛇从区域中随机一点出发,运动限制在游戏区域内;蛇的运动方向为直线运动,只走横和竖的方向,不走斜线;食物出现按随即分布原则,蛇吃掉一份后随即在游戏区域内出现一份新的食物;蛇的运动速度由得分来控制,得分越高,速度越快;得分按蛇每吃掉一个食物得 10 分计算;蛇的身体长度从 3 开始,每吃

7、掉一个事物增加一个长度;游戏结束条件为:在控制过程中蛇头撞到墙壁或者与蛇身相撞。1.2 软件需求软件介绍Turbo C2.0 不 仅 是 一 个 快 捷 、 高 效 的 编 译 程 序 , 同 时 还 有 一 个 易 学 、 易 用 的 集 成开 发 环 境 。 使 用 Turbo C2.0 无 需 独 立 地 编 辑 、 编 译 和 连 接 程 序 , 就 能 建 立 并 运 行 C语 言 程 序 。 因 为 这 些 功 能 都 组 合 在 Turbo 2.0 的 集 成 开 发 环 境 内 , 并 且 可 以 通 过 一 个简 单 的 主 屏 幕 使 用 这 些 功 能 。功 能 实 现在

8、 window 环 境 下 装 好 TC 之 后 , 打 开 TC, 把 贪 食 蛇 游 戏 的 源 程 序 输 入 进 去 , 然后 运 行 , 并 发 现 错 误 , 修 改 之 后 , 把 文 件 保 存 在 软 件 的 源 文 件 里 面 。 之 后 就 可 以 成 功运 行 贪 食 蛇 游 戏 了 。沈 阳 理 工 大 学 课 程 设 计 专 用 纸22 软件设计2.1 模块设计2.1.1 系统模块图本程序采用结构化程序设计的方法,按照自顶向下,逐步细化的方法对要解决的问题进行逐层分解 1。首先画出顶层模块,即主控模块,之完成对下层模块的调用功能,即调用其他的功能模块;接着,按需求分

9、析中的功能需求设计第一层模块,有图形驱动 2 ,画主界面,游戏过程,结束处理,退出等第 6 个主要功能;接着,画出第二层模块 3。总体模块结构如图主 控 模 块结束处理退 出画主界面图形驱动游戏过程沈 阳 理 工 大 学 课 程 设 计 专 用 纸32.1.2 main 主函数模块主函数是程序的主控模块。首先调用 WelcomeInfo 函数开场画面;初始化图形系统,接着调用 init 函数 4初始化图形系统,之后调用 draw 函数画出游戏开始画面,在调用Playgame 函数 5,即开始了游戏的具体过程,游戏结束后调用 GameOver 函数进行游戏结束处理;最后关闭图形系统,结束程序。主

10、控模块的流程图如下图所示。其中带有两个竖线的矩形框表示对自定义函数的调用。2.2 流程图2.21 系统流程图沈 阳 理 工 大 学 课 程 设 计 专 用 纸4食物消失输出成绩图形消失身体变长速度加快随机出现食物键盘控制方向判 断 是 否 撞 到 自 己 或 者 墙 面判断是否吃 到 食 物2.2.2 PlayGame 函数流程图贪食蛇游戏具体实现过程 PlayGame6函数,该函数是游戏的核心部分。流程图如下:图像驱动开始界面开场界面退出界面开 始结 束NYNY沈 阳 理 工 大 学 课 程 设 计 专 用 纸5开 始初始化未按键蛇的控制随机确定食物画食物有食物只有食物标志吃到食物后处理蛇撞

11、墙,蛇死蛇撞身,蛇死确定蛇头位置输出蛇的位置输出成绩和关数蛇 死循环画蛇结 束YN沈 阳 理 工 大 学 课 程 设 计 专 用 纸63 源程序及结果分析3.1 主要程序分析3.1.1 void DrawFame 函数void DrawFrame() /*画出游戏边框 */int x,y;textcolor(GREEN); /*绿色边框*/ for(x=LEFT;x#include #include #include #include #define MAX 150#define LEFT 2#define TOP 2#define RIGHT 60#define BOTTOM 25#defi

12、ne TIME 0x1c#define VK_UP 0x4800#define VK_DOWN 0x5000#define VK_LEFT 0x4b00#define VK_RIGHT 0x4d00#define ESC 0x11b#define randx() (rand()%(RIGHT-LEFT-1)+LEFT+1#define randy() (rand()%(BOTTOM-TOP-1)+TOP+1int iScore=0;int iTimeCount=0;struct snakenodeint x;int y;沈 阳 理 工 大 学 课 程 设 计 专 用 纸8;typedef st

13、ructstruct snakenode sMAX;int iLength;int iDirection;SNAKE;typedef structint x;int y;FOOD;SNAKE snake;FOOD food;void interrupt (*oldtime)();void interrupt newtime()iTimeCount+;oldtime();void SetTime(void interrupt (*pInterrupt)()oldtime=getvect(TIME);disable();setvect(TIME,pInterrupt);enable();void

14、KillTime()disable();setvect(TIME,oldtime);enable();void WelcomeInfo()gotoxy(12,4);printf(“Welcome you to play game!“);沈 阳 理 工 大 学 课 程 设 计 专 用 纸9gotoxy(12,6);printf(“The fabricator is heyong!n“);void DrawFrame()int x,y;textcolor(GREEN);for(x=LEFT;x0;i-)gotoxy(snake.si.x,snake.si.y);printf(“%c“,1);got

15、oxy(snake.s0.x,snake.s0.y);printf(“%c“, );int IsInSnake()int i;int flag=0;int length=snake.iLength;for(i=0;i0;i-)snake.si=snake.si-1;snake.s0.x-=1;break;case 1:for(i=length-1;i0;i-)snake.si=snake.si-1;snake.s0.y-=1;break;case 2:for(i=length-1;i0;i-)snake.si=snake.si-1;snake.s0.x+=1;break;case 3:for(

16、i=length-1;i0;i-)snake.si=snake.si-1;snake.s0.y+=1;break;default:break;int IsGameOver()int flag=0;int length=snake.iLength;int i;int x=snake.slength-1.x;int y=snake.slength-1.y;if(x=RIGHT | y=BOTTOM)沈 阳 理 工 大 学 课 程 设 计 专 用 纸14flag=1;for(i=0;i18-2*iScore/100)MoveSnake();ShowSnake();iTimeCount=1;if(1=

17、IsInSnake()IncreaseSnake();ShowSnake();iScore+=10;DrawInfo();CreateFood();ShowFood();if(1=IsGameOver()flag=1;KillTime();clrscr();printf(“Game Over !Thank you for the game!n“);printf(“Press any key to quit.n“);getch();沈 阳 理 工 大 学 课 程 设 计 专 用 纸16int main()WelcomeInfo();system(“pause“);system(“clr“);In

18、itGame();PlayGame();return 0;3.3 运行结果显示3.3.1 开场画面沈 阳 理 工 大 学 课 程 设 计 专 用 纸173.3.2 程序运行中3.3.3 运行结束沈 阳 理 工 大 学 课 程 设 计 专 用 纸18参考文献1 谭浩强.程序设计(第四版)M .北京:清华大学出版社, 2005.2 王成瑞,魏先民.语言程序设计实训M .北京 中国水利水电出版社, 2005.3 谭浩强.程序设计题解与上级指导(第三版)M .北京:清华大学出版社 ,2005.4 谭浩强,张基温,唐永炎编著.C 语言程序设计教程M.北京:高等教育出版社,1992.5 戴健鹏译.C 语言大全(第二版)M.北京:电子工业出版社,1994.6 C 编写组编.常用 C 语言用法速查手册M .北京:龙门书局,1995

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报