c语言课程设计报告70876.doc_第1页
c语言课程设计报告70876.doc_第2页
c语言课程设计报告70876.doc_第3页
c语言课程设计报告70876.doc_第4页
c语言课程设计报告70876.doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

院 系 计算机科学技术学院 班 级 组 长 学 号 指导教师 2017 年 3 月 2 日 C 语言基础课程设计语言基础课程设计 贪吃蛇游戏系统贪吃蛇游戏系统贪吃蛇游戏系统贪吃蛇游戏系统 I 程序设计基础课程设计任务书程序设计基础课程设计任务书 一 题目 贪吃蛇游戏系统一 题目 贪吃蛇游戏系统 二 设计要求二 设计要求 1 自己组成课程设计小组 2 查阅相关资料 自学具体课题中涉及到的新知识 3 采用结构化 模块化程序设计方法设计 功能要完善 界面美观 4 所设计的系统应有菜单 动画 5 按要求写出课程设计报告 并于设计结束后 1 周内提交 其主要内容包括 封皮 课程设计任务书 指导教师评语与成绩 目录 概述 软件需求分析 总体设 计 详细设计 程序的调试与测试 总结 结束语 程序清单 带中文注释 参考文 献等 课程设计报告一律用 A4 纸打印 并严格按照课程设计指导书中规定的毕业设计 报告的撰写规范进行排版装订 三 课程设计工作量三 课程设计工作量 由于是设计小组团结协作完成设计任务 一般每人的程序量在 200 行有效程序行 以上 必须有创新 如自己编的简单动画和音乐 不得抄袭 四 课程设计工作计划四 课程设计工作计划 2017 年 2 月 25 前 指导教师讲课 2017 年 2 月 26 日 设计小组进行总体方案设计和任务分工 2017 年 2 月 27 日 每人完成自己承担的程序模块并通过独立编译 2017 年 2 月 28 日 3 月 1 日 分模块集体解决核心问题 2017 年 3 月 2 日 将各模块集成为一个完整的系统 并录入足够的数据进行调试 运行 数据必须存储到磁盘文件中 以备验收 2017 年 3 月 2 日 撰写课程设计报告 2017 年 3 月 3 日 进行课程设计验收 指导教师签章 教研室主任签章 II 程序设计基础课程设计指导教师评语与成绩 指导教师评语 课程设计表现成绩 课程设计验收成绩 课程设计报告成绩 课程设计 总成绩 指导教师签章 2017 年 6 月 日 III 目录目录 一一 概概 述述 1 1 1 研究的背景及意义 1 1 2 课程设计的目的 1 1 3 课程设计的要求 2 1 4 课程设计的任务和涉及的知识点 2 二 需求分析二 需求分析 4 2 1 功能需求 4 2 2 操作方法 键盘操作 4 三三 总体方案设计总体方案设计 5 3 1 模块划分 5 3 2 整体框图 5 四四 程序的调试与运行结果说明程序的调试与运行结果说明 6 4 1 图形初始化失败 6 4 2 其他问题 6 五 详细设计五 详细设计 7 5 1 主要模块界面 7 5 2 源程序代码 8 六六 结论结论 20 七七 结束语结束语 21 八八 参考文献参考文献 22 1 一一 概概 述述 本课程设计以软件工程方法为指导 采用了结构化 模块化得课程设计方法 以 C 技术为基础 使用 vc 为主要工具 总体设计 详细设计 最终完成系统的实现与 测试 1 1 研究的背景及意义 随着社会的发展 人们交友范围越加广泛 越来越多的人迫切的需要一种可以存 储联系人信息的工具 因此设计一款随时查询联系人信息的软件成了很多人以及商家 们的需要 此次课程设计完成的通讯录管理系统 正是为了满足上诉需求设计出来的 希望 能给人们带来便利 C 是国际上广泛流行的 很有发展前途的计算机高级语言 他适合作为系统秒速 语言 既可用来编写系统软件 也可以用来编写应用软件 对于计算机专业和相关学科的学生来说 课程设计基础 是一门非常重要的专业 基础课程 对其学习好坏 直接关系到后续课程的学习效果 C 是一种面向过程的高级语言 要学好 C 不但要掌握 C 的语法 更重要 的是要掌握使用 C 进行结构化 模块化程序设计的方法 有了较好的 C 基础 就 可以进一步学好面向对象的程序设计语言和可视的编程语言如 VC 6 0 C 等 对于 面向对象的程序设计 当设计到具体实现部分的时候 也就是编写一个对象中具体的 方法 即外部服务函数 时 必然要使用结构化得程序来实现 可见 结构化 模块 化程序设计的方法是必然要学习的 而 C 是结构化程序设计思想中比较经典的语言 不可不学好 学习结构化 模块化程序设计的思想和方法 可以掌握设计解决一个问 题的过程 即如何对问题进行分解 划分成各个功能模块 每个模块如何分步骤实施 通过什么样的一个流程图控制可以实现该模块的功能 这也是学习这门课程的中心内 容 1 2 课程设计的目的 1 使学生更深入地理解和掌握该课程中的有关基本概念 程序设计的思想 技术 和方法 2 培养学生综合运用所学知识独立完成课题的能力 3 培养学生勇于探索 严谨推理 实事求是 有过必改 用实践来检验理论 全 方位考虑问题等科学人员应具有的须素质 4 提高学生对工作认真负责 一丝不苟 对同学友爱团结 协作攻关的基本素质 5 培养学生从资料文献 科学实验中获得新知识的能力 提高学生从别人经验中 2 找到解决问题的新途径的悟性 初步培养工程意识和创新能力 6 对学生掌握知识的深度 运用理论去处理问题的能力 实验能力 课程设计能 力 书面及口头表达能力进行考核 1 3 课程设计的要求 为实现上述目的 提出以下具体要求 1 以学生自由组织成课程设计游戏开发小组 可由指导教师确定每组的人数 建议每组为 3 个人左右 并选 1 人担任组长 指导教师可跟据各个开发小组的试验情 况进行必要的调整 2 每组选择课程设计中的一个题目 即开发一个所选课题的 软件系统 每组 独立完成 3 该系统要有主菜单 动画与音乐 且游戏功能上尽可能模拟操作系统中的贪 吃蛇游戏 系统界面尽量美观 4 进一步掌握 C 集成开发环境 5 熟练掌握 C 的数据类型 三种基本结构 模块化设计 指针 结构体 文件 链表等知识点 6 丛书或互联网上查阅相关资料 自学具体课题中涉及到的知识 7 采用结构化 模块化程序设计方法进行设计 功能要完善 界面要美观 应具有一定创新 8 软件开发小组组长带领本小组成员团结协作 共同完成课题的设计任务 要 求开发小组中每个组员都有自己独立的设计的若干模块 每个人设计的有效源代码应 在 200 行以上 同时要读懂其他组员完成的内容 1 4 课程设计的任务和涉及的知识点 1 课程设计的主要完成任务 1 通过编写 贪吃蛇游戏 程序 掌握结构化 模块化程序设计的思想 培养解决 实际问题的能力 2 设计数组元素与蛇 食物的对应关系 3 随机产生食物 4 有分数统计 排行榜 分数存储等功能 5 有同步播放的动画 声音效果 2 课程设计中涉及的知识点 1 数组的应用 2 全局变量的应用 3 3 按键处理 4 结构体的应用 5 图形 音乐和动画的有关知识 6 随机函数的使用 7 文件的基本操作 8 结构化 模块化的设计方法 4 二 需求分析二 需求分析 贪吃蛇是大众化的游戏 游戏简单容易上手 但确能给玩家放松心情 身心得到 娱乐 从而能更好地投入到学习或工作中 现代人 无乱是工作的 或是学生都面临 的巨大压力 而这一款简单的游戏能让每个人随时随地上手 令不少玩家对它爱不释 手 对于繁忙的现代人 玩大型游戏是浪费时间 然而这样的小游戏 不仅可以随时随 地娱乐 对硬件要求很低 可以不夸张地说 只要你有数码产品 都可以玩 而且在 为人们节省不少宝贵的时间的同时 达到了身心娱乐的目的 2 1 功能需求 进入游戏前 可以观看选择观看小组成员的动画 按任意键进入游戏 蛇在一个 封闭的墙内移动 遇到食物后 蛇身加长 分数上升 要是碰到墙壁或者是蛇自己 即游戏结束 当分数上升到一定 蛇速度加快 2 2 操作方法 键盘操作 1 进入游戏 回车键 2 游戏操作 在游戏中 通过键盘上下左右控制蛇的方向 5 三三 总体方案设计总体方案设计 特点 为方便操作 加入了口令登录 动画音乐 数据维护和系统帮助 算法的整体思路 随机产生食物 按相应的键执行相应的功能 3 1 模块划分 一 游戏动画 二 游戏菜单 三 游戏过程 四 退出 3 2 整体框图 贪吃蛇游戏系统贪吃蛇游戏系统 游戏选项游戏选项 开开 始始 游游 戏戏 看看 动动 画画 退退 出出 游游 戏戏 图 1 软件总体模块结构图 6 四四 程序的调试与运行结果说明程序的调试与运行结果说明 4 1 图形初始化失败 预期效果 进入动画能观看所画图形 实际运行效果 编译成功 但无法进入动画 图图 4 图形初始化失败图形初始化失败 错误分析 未指定显卡驱动位置 修改 将显卡驱动文件 Egavga bgi 复制到动画源程序目录下 修改后程序运行效果与预期效果一致 如图 5 所示 图图 5 动画动画 4 2 其他问题 比如全局变量重命名 函数重复声明或未声明和主函数重定义等问题 如 图图 1010 重定义主函数重定义主函数 mainmain 7 五 详细设计五 详细设计 5 1 主要模块界面 5 1 1 游戏动画 5 1 2 菜单界面 5 1 3游戏界面 8 5 1 4辅助界面 5 1 5游戏结束界面 5 2 源程序代码 include include include include include void gotoxy int x int y 移动 void Loc int int 定位函数 void Beginning 游戏开始 void CreatMap 创建地图 void GameInit 初始化 void GameStart 游戏开始 void DeadOrNo 判断是否和自身相撞 char DeadOrNoByPos int int 蛇的生命 void JudgeFood 判断食物是否和自身 9 void MakeFood 制造食物 void ThroWall 是否穿墙 void SnakeMove 蛇的移动 void MoveNo struct Body p body struct Body nofood 没有食物时蛇的移动 void MoveYes struct Body yesfood 有食物时蛇的移动 void DrawShank char 画蛇 void Ending 游戏结束 void HiSleep int void snack printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf 按回车进入游戏 n printf n printf n printf n printf n printf n printf n printf n printf n printf n printf n 10 printf n printf n printf n printf n printf n printf n system color b struct Body short x y struct Body next 指向下一个蛇身的指针 int length sizeof struct Body Body 结构体所占字节数 int Delay 500 short X 0 Y 0 short food x food y food 0 short life 1 short score1 0 char movdir R short lockdelay 20 struct node int x y struct node next struct node p struct Body head int i j void Loc int x int y COORD pos x y 调用 windows 库里的函数 坐标转换 HANDLE hOut GetStdHandle STD OUTPUT HANDLE 获得输出设备的句柄 SetConsoleCursorPosition hOut pos 11 void gotoxy int x int y COORD loc x y HANDLE hOut GetStdHandle STD OUTPUT HANDLE 获得输出设备的句柄 SetConsoleCursorPosition hOut loc 光标定位 void init 游戏开始时蛇的位置 gotoxy 9 2 p struct node malloc sizeof struct node 将 P 指向一个新分配的 struct node 型指针地址 是链表 p x 9 p y 2 void Beginning 初始 void gotoxy int x int y int initz 30 initx 14 inity 8 init 2 下面 printf 字开始右移的初始位置 init 代表左右方向 char ch1 0 gotoxy 38 18 puts 王慧 while ch1 13 gotoxy initz inity 1 printf 经典小游戏 gotoxy initx inity printf 超级宇宙无敌无边框贪吃蛇 按 ENTER 键 开始游戏 Sleep Delay gotoxy initx inity printf if init 0 initx init initz init 12 if kbhit 有键盘输入时接受若是 13 ENTER 键结束循环 ch1 getch system cls void CreatMap 创建外围 int i for i 0 i 100 i 2 Loc i 0 printf Loc i 28 printf for i 0 ix 12 head y 2 p cur head p cur next NULL for xh 0 xhnext p new 13 p new x p cur x 2 p new y p cur y p cur p new p cur next NULL Delay 500 food 0 life 1 score1 0 movdir R lockdelay 20 DrawShank 0 Loc 80 3 puts 每吃一个 Loc 80 4 puts 蛇会加速 Loc 78 13 puts 控制键 void GameStart 游戏开始 while 1 DeadOrNo if life 0 break MakeFood if GetAsyncKeyState VK UP else if GetAsyncKeyState VK DOWN else if GetAsyncKeyState VK LEFT else if GetAsyncKeyState VK RIGHT SnakeMove Loc 80 7 14 printf 1 得分 3d score1 Loc 80 10 printf 速度 5 1f 1000 0 float Delay HiSleep Delay void DeadOrNo 判断是否死亡 struct Body p body head while p body next NULL 定位到最后一个蛇身 p body p body next if p body x head x char DeadOrNoByPos int x int y 判断生命 struct Body p body head while p body next NULL 定位到最后一个蛇身 if p body x x p body p body next return 0 void JudgeFood 判断食物是否与蛇身重叠 struct Body p body head while p body NULL if food x p body x Loc 62 8 MakeFood 15 p body p body next void MakeFood 制造食物 if food 0 food x rand 53 2 food y rand 23 1 if food x 2 1 food x food 1 JudgeFood void ThroWall struct Body p 是否穿墙 if p x 69 life 0 if p x 1 life 0 if p y 1 life 0 if p y 27 life 0 void SnakeMove 蛇的移动 struct Body p body struct Body nofood struct Body yesfood struct Body tmppos switch movdir case U X 0 Y 1 break case D X 0 Y 1 break case L X 2 Y 0 break 16 case R X 2 Y 0 break tmppos head tmppos x X tmppos y Y ThroWall if DeadOrNoByPos tmppos x tmppos y if lockdelayx head x X nofood y head y Y ThroWall nofood nofood next head head nofood p body head while p body next next NULL p body p body next 17 Loc p body next x p body next y printf free p body next p body next NULL void MoveYes struct Body yesfood 吃到食物 yesfood struct Body malloc length yesfood x food x yesfood y food y yesfood next head head yesfood food 0 score1 1 MakeFood if Delay 200 else if score1 100 Delay Delay else if score1 150 Delay 30 else if score1x p body y if p body head printf else printf drawcount 18 p body p body next if simple void Ending 结束游戏 int num 0 char str Thank you for playing the snaKe game system cls Loc 32 9 printf Game Over while str num 0 Loc 20 num 11 putchar str num num Loc 28 13 puts 按 ESC 键退出 Loc 30 15 puts 按任意键重来 void HiSleep int ms int x x clock while clock x ms Sleep 0 int main system color 0c srand unsigned int time NULL again while kbhit snack 19 system cls Sleep 300 getch Beginning GameInit GameStart Ending while 1 if kbhit getch else break if getch 27 goto again Loc 25 24 return 0 20 六六 结论结论 本程序基本达到了任务书上的要求 并且在游戏中增加生命值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论