




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计计算机学院算机学院计计算机科学与技算机科学与技术专业术专业 程序设计综合课程设计程序设计综合课程设计 报告报告 2011 2012 学年 第一学期 学生姓名 学生姓名 学生班级 学生班级 学学生生学学号号 指导教师指导教师 2012 年 01 月 04 日 三三 子子 棋棋 小小 游游 戏戏 目目 录录 第一章第一章 程序设计的目的和要求程序设计的目的和要求 1 1 1 课程设计的目的 1 1 2 课程设计的要求 1 第二章第二章 课程设计任务内容课程设计任务内容 3 2 1 课程设计题目 3 2 2 课程设计介绍 3 第三章第三章 详细设计说明详细设计说明 4 3 1 流程逻辑 4 3 2 限制条件 5 3 3 运行结果 5 3 4 实验过程 8 第四章第四章 实验总结及特色实验总结及特色 11 4 1 调试结果及截图 11 第五章第五章 课程设计心得及体会课程设计心得及体会 13 附录附录 参考文献参考文献 15 附录附录 程序代码程序代码 16 1 第一章第一章 课程设计目的和要求课程设计目的和要求 第一节目的 通过此次课程设计 进一步加深对 C 语言和运用的 了解 将理论知识运用于开发的实践 并在实践中逐步 掌握软件工具的使用 巩固已经学习过的 C 理论知识 进一步学习程序设 计 程序调试的能力 进一步学习面向对象编程的知识和程序调试的能力 增强 Visual C 编程环境的应用能力 掌握并且熟练应用 C 程序设计 中所学知识 并 学会运用 掌握函数功能的划分方法 并运用此方法解决问题 学会程序测试方案的制定 并且实现程序的测试 通过此次实践 积累经验 提高分析和解决问题的能 力 2 第二节第二节 要求要求 课程设计需要从整体来考虑 在大的方向下来考虑小 的模块 在继续分工 作到最小化 可执行化 1 对于课程设计需要自己筹划一下自己如何去下手 让自己的方案能够用 C 来执行 2 对于运行结果的处理 再运行程序时可能会遇到一 些其他问题 对于运行结果的处理主要是在达不到 自己的期望是 就要对其进行分析 3 错误的改正 在对于编程中错误的改正也是一重要 的步骤 学会错误的改正才能更好的提高自己 4 通过 c 课程设计 对 c 语言的应用及实现有更 加深入的认识和理解 3 第二章第二章 课程设计任务内容课程设计任务内容 2 1 课程设计题目 井字棋小游井字棋小游戏戏 2 2 课程设计介绍课程设计介绍 井字棋 的棋盘很简单 是一个 3 3 的格子 类似于 五子棋 五子棋 的规则是一方首先五子 连成一线就胜利 井字棋 是一方首先三子连成一线 就胜利 在 3 3 棋盘上玩游戏 实现人机对弈 x 表示 计算机 0 表示人 一方取胜条件 一方的 3 个棋子连成一线 即或成 一横线 或成竖线 或对角线 和棋条件 棋盘填满了 但无人能赢 4 第三章第三章 详细设计说明详细设计说明 第一节第一节 流程逻辑流程逻辑 输入 y n 开始 电脑先手 进行游戏 玩家先手 进行游戏 游戏 结束 Y n 5 第二节第二节 限制条件限制条件 该程序必须在 Visual C 6 0 环境中运行 模式 选择时 不管输入何种值 只要不是要求的输入都是无 效的 程序可能有时运行较慢 玩家需要等待 但是时 间是非常短的 第三节 运行结果 1 开始的界面由 游戏规则 和 是否先手 两部 分构成 如下图 就是实现后的界面 6 2 2 当选择是否先手后 就进入了游戏开始的初始界 面 也是由输入输出函完成的 每次走棋前都会显 示棋盘对应的编号 有利于方便玩家下棋 下方会 显示每次的走棋步骤 具体实现的效果图为 3 3 棋盘走棋是按玩家输入的数字进行的 用 X 或 O 显示在棋盘上 输入部分之后的效果图为 7 4 当一局完成时 会有 再来一盘 的提示 若是 则会跳回到模式界面 重新选择是否先手 并开始 程序 效果图如下 5 5 玩家走棋时 玩家根据提示输入要走棋的位置 输 入数字进行走棋 若输入错误则会提示输入错误 效果 图如下 8 第四步第四步 实验过程实验过程 1 玩家根据游戏规则和相关提示 选择是否先手 回车键表示完成 2 根据提示输入相应的数字 然后在相应的位置显 示出棋子 X 同时显示出来电脑走的棋子 O 的位置 9 3 根据电脑的走棋 玩家选择自己的走棋位置 选 错位置会输出提醒 并允许重新选择 4 重复 2 3 步 直到有一方获得胜利 或者棋盘布 满所有棋子 但仍未分出胜负的 显示平局 10 5 至此 一局已经结束 后面会问 再来一盘 根 据玩家要求进行 选 y 或者 Y 则会重新进 行一局 重复上述步骤 选 n 或者 N 则会按任意键退出 11 第四章第四章 实验总结及特色实验总结及特色 1 程序具有较好的性能 主要表现在以下几个方面 a 是否先手选择时 不管输入何种值 只要不是要求 的输入都是无效的 效果图为 b 玩家走棋时 任何非要求值 均报错 要求重 新输入 位置重复时也会报错 效果图为 12 C 一局结束时 提醒是否进行下一局时 任何非要求 输入也会报错 并要求重新输入 效果图为 13 第五章第五章 课程设计心得与体会课程设计心得与体会 对于课程设计一开始有一种一头雾水的感觉 它是 干什么的 我要怎么做 拿下来题目之后 觉得以我的 能力根本就不可能实现这个题目的要求 可是慢慢我发 现它并非不可实现 只要耐心的分析它要的功能需要什 么函数实现 就可以做到 于是我就着手做这个程序 可是它也并不像我想得那么简单 在设计中刚开始出现 了一百多个错误 令我一头雾水 但是在经过几天的检 查与修改后 能够编译出来 这令我非常的高兴 但是 运行结果有点出乎我的意料 所运行的结果 不能达到 所期望的 但是经过一番修改后 能够输出 并且能进 行游戏 这让我喜出望外 说实话这是我第一次 编写一个 200 多行的程序 虽然写的程序比较繁琐 没有任何技巧 但我觉得这是 个美好的开始 说明我也可以自己做东西了 在我自己 写出之后都有点不敢相信自己 因为对于我来说是个编 程的新手 刚学了一学期 在课程设计中 刚开始真有 点对自己失去信心 但是在我真正的开始编写时 就发 现事情并不是我想的那么糟 只要肯下决心就会让你自 己发现原来自己的事 只有在自己真正的做了之后 才 14 能感觉到那种成功的喜悦 那种失败的酸辛 这次课程设计也让我感觉得到了我的不足 我也从 网上找到过相同的程序源代码 并且比我的实现的功能 还要多 可是我的程序却要比他们的多好几倍 这也使 我很苦恼 我知道原因就是我的程序并没有分模块编译 这也是问题所在 因为模块化设计部并不太明白 我想 既然这些问题暴露出来了 我也没必要回避了 这次设 计先搞一段落 放假后才是我追上别人的最好的时间 我将利用这段时间 好好的把这个弱项补回来 通过这次实验设计使我对 c 有了更加深刻的理解 并对他的实现有了进一步了解 15 附录附录 1 参考文献 参考文献 谭浩强著 C 程序设计 北京 清华大学出版社 2004 谭浩强著 C 程序设计题解与上机指导 北京 清华大学 出版社 2005 16 附录附录 2 程序清单 程序清单 include include using namespace std typedef char chess 10 字符数组 typedef int temparr 10 整型数组 chess arr 定义字符数组变量 temparr brr 定义整型数组变量 int number suc n3 c3 n2 c2 n1 c1 void inarrdata chess a 初始化棋盘编号 a 1 1 a 2 2 a 3 3 a 4 4 a 5 5 a 6 6 a 7 7 a 8 8 a 9 9 void display chess a 输出棋盘状态 cout endl cout endl cout a 1 a 2 17 a 3 endl cout endl cout a 4 a 5 a 6 endl cout endl cout a 7 a 8 a 9 endl cout endl cout endl int arrfull 判断还有没有下棋的位置 int i int arrf 0 for i 1 i 9 i if i arr i 48 如果字符arr i 48等于i arrf 1 那么arrf 1 也就是可以走棋 return arrf void cn int line 判断状态 switch line 18 case 0 c3 c3 1 break case 1 n2 n2 1 break case 2 c2 c2 1 break case 3 n1 n1 1 break case 4 c1 c1 1 break case 5 n3 n3 1 break int linenum char a char b char c 判断状态 int ln 6 if a X if a O if a X 19 if a O if a X if a O return ln int maxbrr int br 判断最大权值 int temp i mb temp 888 for i 1 i 9 i if temp br i temp br i mb i 20 return mb void manstep 人走棋处理模块 int j display arr if arrfull 如果棋盘上还有下棋的位置 人走一 步棋 cout j while j9 j arr j 48 cout j arr j O n3 0 c3 0 n2 0 c2 0 n1 0 c1 0 number linenum arr 1 arr 2 arr 3 cn number 21 number linenum arr 4 arr 5 arr 6 cn number number linenum arr 7 arr 8 arr 9 cn number number linenum arr 1 arr 4 arr 7 cn number number linenum arr 2 arr 5 arr 8 cn number number linenum arr 3 arr 6 arr 9 cn number number linenum arr 1 arr 5 arr 9 cn number number linenum arr 3 arr 5 arr 7 cn number if n3 0 您赢了 display arr cout endl cout 恭喜您赢了 endl suc 0 22 void computerstep 计算机走棋处理模块 int i if arrfull 如果棋盘上还有可下棋的位置 则计 算机走棋 for i 1 i 9 i 对每一步可走的棋进行 计算 if i arr i 48 c3 0 n2 0 c2 0 n1 0 c1 0 arr i X number linenum arr 1 arr 2 arr 3 cn number number linenum arr 4 arr 5 arr 6 cn number number linenum arr 7 arr 8 arr 9 cn number number linenum arr 1 arr 4 arr 7 cn number 23 number linenum arr 2 arr 5 arr 8 cn number number linenum arr 3 arr 6 arr 9 cn number number linenum arr 1 arr 5 arr 9 cn number number linenum arr 3 arr 5 arr 7 cn number brr i 128 c3 63 n2 31 c2 15 n1 7 c1 计算此步权值 arr i i 48 else brr i 999 arr maxbrr brr X 确定计算机走哪 一步 权值最大的一步 c3 0 n2 0 c2 0 n1 0 c1 0 number linenum arr 1 arr 2 arr 3 cn number number linenum arr 4 arr 5 arr 6 cn number 24 number linenum arr 7 arr 8 arr 9 cn number number linenum arr 1 arr 4 arr 7 cn number number linenum arr 2 arr 5 arr 8 cn number number linenum arr 3 arr 6 arr 9 cn number number linenum arr 1 arr 5 arr 9 cn number number linenum arr 3 arr 5 arr 7 cn number if c3 0 计算机已赢 display arr cout endl cout 计算机赢了 endl suc 0 else suc 0 25 int main cout 游戏规则 endl 棋盘格式如图 人和计算 机在棋盘上交替走棋 endl cout 约定计算机使用符号X 人使用符号O endl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论