




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 计算机学院网络工程专业计算机学院网络工程专业 程序设计综合课程设计程序设计综合课程设计 报告报告 2011 2012 学年 第一学期 学生姓名 学生姓名 学生班级 学生班级 网络工程 学学生生学学号号 指导教师指导教师 2011 年 12 月 30 日 精品文档 2欢迎下载 双双 人人 五五 子子 棋棋 精品文档 3欢迎下载 目录 第一章第一章 课程设计目的和要求课程设计目的和要求 1 1 1 课程设计的目的 1 1 2 课程设计的要求 1 第二章第二章 课程设计任务内容课程设计任务内容 2 2 1 课程设计的主要内容 2 2 2 系统设计原则 2 第三章第三章 设计说明设计说明 3 3 1 游戏分析和介绍 3 3 1 1 游戏分析 3 3 1 2 游戏介绍 3 3 2 重点模块说明 3 3 2 1 棋盘界面 Showboard 3 3 2 2 下棋 Play 4 3 2 3 覆盖棋盘 Recoverboard 7 3 2 4 游戏结束后初始化棋盘 Unitboard 7 3 2 5 保存棋盘 CopyB 8 3 3 函数清单 8 3 4 接口 9 第四章第四章 软件使用说明软件使用说明 10 4 1 测试 10 4 2 限制条件 13 第五章第五章 课程设计心得体会课程设计心得体会 14 附录一附录一 程序流程图程序流程图 15 精品文档 4欢迎下载 附录二附录二 程序代码程序代码 16 附录三附录三 参考文献参考文献 26 第一章第一章 课程设计目的和要求课程设计目的和要求 1 11 1 课程设计的目课程设计的目 1 学习综合运用 C 语言课程和其他相关课程的知识 提高分析解决实际问题 的能力 进一步巩固 加深和拓宽所学的知识 进一步加强结构化程序设计的 思想 加深对高级语言基本语言要素和控制结构的理解 2 全面系统的学习面向对象程序设计的基本概念 基本语法和编程方法 与 同学合作设计整套程序 并且独立完成一定工作量的程序设计 3 掌握程序设计中的常用算法和 C 语言的程序技巧 培养良好的程序设计风 格 4 运用所学的知识了解五子棋游戏的制作结构 将所学的知识运用于实践中 1 21 2 课程设计的要求课程设计的要求 1 与同学合作设计 编制 调试出一款双人五子棋游戏 并单独完成其中一 定量的函数模块 2 要求该游戏具有趣味性和可操作性 能够正常运行 其中用到 C 语言中 的各种语句 结构 如其中需要注意全局变量和局部变量的申明 数组的使用 等 3 双人五子棋要求能够进入欢迎界面 二人对弈 当有五颗同色棋子相连时 判断出输赢等一系列游戏流程 精品文档 5欢迎下载 第二章第二章 课程设计任务内容课程设计任务内容 2 12 1 课程设计的主要内容课程设计的主要内容 任务内容就是设计一款老少皆宜 能够锻炼个人策略谋划能力 较为传统的 五子棋 棋盘为 16 16 棋子放在交叉点儿上 两人各执一色 轮流下棋 先 将横 竖 斜线上的五个同色棋子练成不间断的一排则胜出 2 22 2 系统设计原则系统设计原则 1 系统性 系统作为统一整体而存在 因此 在设计中 要从系统的角度考 虑 系统的代码要统一 传递语言要尽可能一致 2 可靠性 可靠性是指系统抵御外界干扰的能力及外界干扰时的恢复能力 3 规范性 游戏的运用以吸引玩家的乐趣为前提 一方面 系统设计应尽量 避免不必要的复杂化 另一方面模块应尽量简洁 以缩短处理流程 精品文档 6欢迎下载 第三章第三章 设计说明设计说明 3 13 1 游戏分析和介绍游戏分析和介绍 3 1 13 1 1 游戏分析游戏分析 该五子棋程序基本上实现了五子棋游戏的功能 有双方下棋之前的欢迎界面 及下棋过程中的棋盘界面 还有最终会判断出输赢 同时 该游戏采用了二维 坐标实现的 明了易懂 方便玩家在游戏过程中的基本操作 使游戏更加简便 细节方面 该程序有实时储存功能 随时记录 另外考虑到游戏挺简单的 就 没有设置悔棋的相关模块 3 1 23 1 2 游戏介绍游戏介绍 该游戏是简单的双人五子棋 所实现的功能是能够显示欢迎界面 选择是否 进行游戏 进入游戏界面以后 玩家开始下棋 玩家输入坐标则会在棋盘上显 示棋子 若是输入的坐标超出棋盘或者该位子已经有子则会提示玩家重新输入 坐标位子 若输入则退出游戏 3 23 2 重点模块说明重点模块说明 3 2 13 2 1 棋盘界面棋盘界面 Showboard Showboard 精品文档 7欢迎下载 出现棋盘的界面 对棋盘上每一个点进行定位 并在棋盘上显示相关的信息 相关代码如下 int Showboard 棋盘界面 system CLS cout for int s 1 s 10 cout s 10 else cout s cout endl for i 0 i 16 i printf 2d i 1 for j 0 j 16 j cout map i j if i 6 cout 退出 输入 0 0 if i 8 cout 步数 Step Step if i 12 cout 制作人 吴忆芸 余迎香 if i 14 cout 请输入棋子的纵坐标 横坐标下子 cout endl return 1 3 2 23 2 2 下棋下棋 Play Play 精品文档 8欢迎下载 在这个小游戏中 黑方先下棋 然后可以轮流进行 而在 Play 这个函数中 会调用各个函数 如最初的欢迎界面 Interface 每颗棋子的保存 CopyB 判断棋子的位子是否合法 bool legal bool Overflow 判断同色五颗棋子 是否连成一条线 judgewin 相关代码如下 int Play char a0 3 char a1 3 Showboard cout 黑方下 endl while cout x cout y if x 0 Interface break if Overflow continue if legal x y if flag 1 输入的是白棋 map x y 0 a0 0 map x y 1 a0 1 Step Showboard 精品文档 9欢迎下载 if judgewin cout n 绿方胜利了 n cout Switch if Switch n unitboard Play else return 1 cout 黑方下 endl flag 0 else map x y 0 a1 0 map x y 1 a1 1 Step Showboard if judgewin cout n 黑方胜利了 endl cout Switch if Switch n 精品文档 10欢迎下载 unitboard Play else return 1 cout 绿方下 endl flag 1 else cout It already have a chessman Please Reenter n 此位 置已有子 请重新输入 3 2 33 2 3 覆盖棋盘覆盖棋盘 Recoverboard Recoverboard 当一盘棋下完选择重来的时候 会出现一个最初的棋盘界面覆盖掉目前存在 的棋盘 从而使棋盘达到清屏的效果 但是却能够保存所下的棋的步数 相关代码如下 void Recoverboard 覆盖棋盘 使棋盘恢复到原始状态 Step 0 for i 0 i 16 i for j 0 j 16 j map i j 0 copymap i j 0 精品文档 11欢迎下载 map i j 1 copymap i j 1 3 2 43 2 4 游戏结束后初始化棋盘游戏结束后初始化棋盘 Unitboard Unitboard 相关代码如下 int unitboard 游戏结束后界面初始化 for int i 0 i 16 i for int j 0 j 16 j map i j 0 copymap i j 0 map i j 1 copymap i j 1 return 1 3 2 53 2 5 保存棋盘保存棋盘 CopyB CopyB 这个函数看起来貌似可以没有 但是 却是不可缺少的 它所实现的是对棋 盘的保存 若是没有这个函数 最终将判断不出胜负 相关代码如下 void CopyB 调用字符数组保存原始棋盘 for i 0 i 16 i for j 0 j 16 j copymap i j 0 map i j 0 精品文档 12欢迎下载 copymap i j 1 map i j 1 3 33 3 函数清单函数清单 char map 16 16 8 绘制 16 16 的棋盘 copymap 16 16 8 在重新玩一局游戏的时候显示最初的空棋盘 Showboard 棋盘界面 棋盘界面 最初的欢迎界面 unitboard 游戏结束后棋盘初始化 judgewin 判断输赢 Play 下棋 Recoverboard 覆盖棋盘 legal 判断棋子是否合法 Overflow 判断棋子是否在棋盘内部 3 43 4 函数接口函数接口 Int main 精品文档 13欢迎下载 System title System color System mode CopyB Interface Overflow 欢 迎 界 面 Recoverboard Play Judgewin Snowboard Legal 图 3 1 第四章第四章 软件使用说明软件使用说明 4 14 1 测试测试 如下所示 是运行过程中的各种界面显示 1 如图所示是五子棋的欢迎界面 精品文档 14欢迎下载 图 4 1 2 选择 1 时则出现如下棋盘界面 图 4 2 3 选择 2 时 出现如下界面 精品文档 15欢迎下载 图 4 3 4 进入棋盘界面下棋 当该位子已经有子的时候 界面显示如下 图 4 4 5 进入棋盘界面下棋 当输入的坐标超出棋盘时 界面显示如下 精品文档 16欢迎下载 图 4 5 6 当五颗同色的棋子相连的时候 界面显示如下 图 4 6 7 选择 y 时 回到空棋盘 显示如下 精品文档 17欢迎下载 图 4 7 8 当选择 n 时 会出现如下界面 图 4 8 4 24 2 限制条件限制条件 这个游戏由于比较小 而且是双人对战 所以没有设计悔棋这一步骤 这是 一个相当大的限制 另外 只能是人人对战 而实现不了人机对战 第五章第五章 课程设计心得体会课程设计心得体会 精品文档 18欢迎下载 在本次课程设计中 不仅让我认识到自己学习上的不足 也通过请教其他同 学何老师学会了修改并运行程序 还让自己复习了编程的知识 对遇见的众多 问题 通过思考 耐心动手解决问题 在课程设计期间我也学到了课本中学不 到的知识 明白了只有通过自己不断地动手实践才能找出不足 找出问题和提 高自己的能力 发现课程设计是我学习和掌握专业知识的好方法 让自己变得 活跃 也会看明白程序问题 本次受益匪浅 最后 感谢王艳老师的悉心指导 交给我的程序设计的思想和知识 这次课 程设计要感谢老师和同学为我提出了很多的宝贵意见 给我讲解了我很多不懂 得知识及应用方法 为我更好的完成报告付出了辛勤的劳动 附录一附录一 程序流程图程序流程图 精品文档 19欢迎下载 开始 i 1 i 2 输入i 打印棋盘街面 黑方下 输入坐标 值 x y 画 判断棋子位置是 否合法 绿方下 输入坐标 值 x y 判断棋子位置是 否合法 画 判断是否五子连 珠 判断是否五子连 珠 黑方获 胜 是否继续 绿方获 胜 结束 程序结 束 附录二附录二 程序代码程序代码 精品文档 20欢迎下载 include include include include include include using namespace std int x y Step 0 bool flag 0 int i j char Switch char map 16 16 8 精品文档 21欢迎下载 char copymap 16 16 8 保存棋盘初始状态 恢复初始状态 int Showboard Interface unitboard judgewin Play 棋盘界面 最初的欢 迎界面 游戏结束后初始化棋盘 判断输赢 下棋 void Recoverboard 覆盖棋盘 bool legal Overflow 判断位子是否合法 判断位子是否在棋盘内部 int Interface char a cout n n 五子棋游戏 n t t n t t n cout endl cout endl cout 1 Two Person Games endl 精品文档 22欢迎下载 cout 人人对战 endl cout endl cout 2 Exit endl cout 退出 endl cout endl cout endl cout a if a 1 Play else cout n n 谢谢使用 n cout 按任意键退出 getch return 0 return 1 void Recoverboard 恢复到棋盘原始状态 Step 0 for i 0 i 16 i for j 0 j 16 j 精品文档 23欢迎下载 map i j 0 copymap i j 0 map i j 1 copymap i j 1 void CopyB 调用字符数组保存原始棋盘 for i 0 i 16 i for j 0 j 16 j copymap i j 0 map i j 0 copymap i j 1 map i j 1 int unitboard 游戏结束后界面初始化 for int i 0 i 16 i for int j 0 j 16 j map i j 0 copymap i j 0 map i j 1 copymap i j 1 return 1 int judgewin 判断输赢 每次向两个方向检查 两个方向间距大于 5 就返回 1 否则返 回 0 int cx cy dx dy char a a0 3 a1 3 if flag 1 精品文档 24欢迎下载 a a0 1 else a a1 1 cx x cy y dx x dy y while map cx cy 1 a cx cy 向左上检测 if cx 0 cy15 dy 15 break if dx cx 6 dy cy 6 return 1 cx x cy y dx x dy y while map cx cy 1 a cx 向上竖直检测 if cx15 精品文档 25欢迎下载 break if dx cx 6 return 1 cx x cy y dx x dy y while map cx cy 1 a cy 水平向左检测 if cy15 break if dy cy 6 return 1 cx x cy y dx x dy y while map cx cy 1 a cx cy 向左下方检测 if cx 15 cy 0 break while map dx dy 1 a dx dy 向右上方检测 if dx15 break 精品文档 26欢迎下载 if cx dx 6 dy cy 6 return 1 return 0 int Showboard 棋盘界面 system CLS cout for int s 1 s 10 cout s 10 else cout s cout endl for i 0 i 16 i printf 2d i 1 for j 0 j 16 j cout map i j if i 6 cout 退出 输入 0 0 if i 8 cout 步数 Step Step if i 12 cout 制作人 吴忆芸 余迎香 if i 14 cout 请输入棋子的纵坐标 横坐标下子 cout 16 x16 y 1 cout 此位置不合法 请重新输入 endl return 1 else return 0 int Play char a0 3 char a1 3 Showboard cout 黑方下 endl while cout x cout y if x 0 Interface break 精品文档 28欢迎下载 if Overflow continue if legal x y if flag 1 输入的是白棋 map x y 0 a0 0 map x y 1 a0 1 Step Showboard if judgewin co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家庭农场有机种植合作协议
- 2024-2025学年内蒙古乌海市人教PEP版(2012)五年级下册期末考试英语试卷(无答案)
- 城市地产开发项目合作协议
- 教师招聘之《小学教师招聘》强化训练题型汇编附参考答案详解【黄金题型】
- 教师招聘之《小学教师招聘》全真模拟模拟题【培优】附答案详解
- 我哭了写事作文400字写事作文9篇
- 押题宝典教师招聘之《幼儿教师招聘》通关考试题库及参考答案详解(突破训练)
- 爸爸妈妈你们疼爱的是我吗爱的作文10篇
- 服务贸易与新质生产力
- 安全环保:新质生产力管理视角
- 2025-2026冀人版三年级科学上册教学设计(附目录)
- 2025设备担保抵押借款合同
- 早教托育合伙人合同协议
- 抵押合同变更协议书范本
- 2025年舞蹈培训学校工作计划及方案范文
- 田径百米教学课件
- GB/T 45953-2025供应链安全管理体系规范
- 污水处理设施运行维护手册与规范
- AIGC艺术设计 课件 第8章 AIGC艺术设计的思考与展望
- 物业财务基础知识培训课件
- 上饶市“振兴杯”职业技能竞赛技术规程-汽车技术
评论
0/150
提交评论