基于C++毕业设计_五子棋游戏

上传人:xmg****18 文档编号:121233067 上传时间:2020-02-19 格式:DOC 页数:21 大小:163.50KB
返回 下载 相关 举报
基于C++毕业设计_五子棋游戏_第1页
第1页 / 共21页
基于C++毕业设计_五子棋游戏_第2页
第2页 / 共21页
基于C++毕业设计_五子棋游戏_第3页
第3页 / 共21页
基于C++毕业设计_五子棋游戏_第4页
第4页 / 共21页
基于C++毕业设计_五子棋游戏_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《基于C++毕业设计_五子棋游戏》由会员分享,可在线阅读,更多相关《基于C++毕业设计_五子棋游戏(21页珍藏版)》请在金锄头文库上搜索。

1、 专业整理 学习帮手 山东凯东凯文科技职业职业学学院 2011 届届毕业论毕业论文 基于 Visual C 的五子棋游戏设计 主要算法的设计与实现 学 院 信息学院 学生姓名 XXX 指导教师 张老师 专 业 软件技术 班 级 08 软件 1 班 完成时间 2011 年 6 月 29 日 专业整理 学习帮手 摘 要 本论文主要阐述以面向对象的程序开发语言 VC 为开发工具 设计一个五子棋游戏 本系统是个 小型游戏 可以单机使用 也可以网络两个人游戏 也可以和电脑进行游戏 论文首先介绍了开发背 景及开发语言的介绍 然后介绍设计该游戏的框架结构 然后介绍了程序的设计过程 以及程序的相 关算法 其中

2、算法是我主要负责的 算法 Algorithm 是一系列解 决问题的清晰指令 算法代表 着用系统的方法描述解 决问题的策略机制 也就是 说 能够对一定规范的输入 在有限 时间内 获得所要求的 输出 如果一 个算法有缺陷 或不适合于某 个问题 执行这个算法将不会解决这 个问题 不同的算法可能用不同的 时间 空间或效率来完成同样的任务 关键词 游戏 系统 图片 算法 Visual C Abstract This paper mainly expounds on object oriented programming language for development tools design of v

3、c a renju game This system is a small game can use single also can network two game can also and computer games It firstly introduces the development background and development of language is introduced And then introduced the design frame structure of the game then introduces the design process of

4、the program and the related algorithm procedures Among them is I mainly responsible for the Algorithm the Algorithm done is a series of the solution to the problem of clear instructions the Algorithm represents a systematic approach describe the solving strategy mechanism That is to some of the stan

5、dard input in limited time get required output If an algorithm with a defect or is not suitable for a problem is carry out the algorithm will not solve the problem Different algorithm may use different time space or efficiency to complete the same task Keywords The game the system pictures algorithm

6、 Visual C 专业整理 学习帮手 目 录录 1 引言 1 1 1 五子棋介绍 1 1 2 开发背景 1 1 3 开发环境及运行环境 1 1 3 1 开发环境 1 1 3 2 运行环境 1 2 C 简介 2 3 软件架构 2 3 1 棋盘类 3 3 2 游戏模式类 3 4 主要算法 4 4 1 判断胜负 4 4 2 人机对弈算法 6 4 2 1 获胜组合 6 4 2 2 落子后处理 7 4 2 3 查找棋盘空位 7 4 2 4 落子打分 8 4 2 5 防守策略 10 4 2 6 选取最佳落子 11 4 2 7 统计数据 11 5 几点补充说明 15 6 心得体会 15 参考文献 16 致

7、谢 16 专业整理 学习帮手 专业整理 学习帮手 1 引言 1 1 五子棋介绍 五子棋是起源于中国古代的传统黑白棋种之一 现代五子棋日文称之为 連珠 英译为 Renju 英文称之为 Gobang 或 FIR Five in a Row 的缩写 亦有 连五子 五子连 串珠 五目 五 目碰 五格 等多种称谓 五子棋不仅能增强思维能力 提高智力 而且富含哲理 有助于修身养性 五子棋既有现代休 闲的明显特征 短 平 快 又有古典哲学的高深学问 阴阳易理 它既有简单易学的特性 为人 民群众所喜闻乐见 又有深奥的技巧和高水平的国际性比赛 它的棋文化源渊流长 具有东方的神 秘和西方的直观 既有 场 的概念

8、亦有 点 的连接 它是中西文化的交流点 是古今哲理的结晶 1 2 开发背景 当前网络上流传的五子棋游戏功能并不尽善尽美 其中最主要的问题就是人机对战和网络对战 不能够一起实现 所以我决定开发 1 一个既能够人机对战 又能够进行网络对战的五子棋系统 1 3 开发环境及运行环境 1 3 1 开发环境 Intel Pentium Y450 2G 内存 320G 硬盘 Microsoft Windows XP Professional Microsoft Visual C 6 0 Microsoft Developer Network for Visual Studio NET 2003 Visual

9、 Assist X 10 1 1301 0 1 3 2 运行环境 Intel Pentium 2 及以上处理器 32M 以上内存 4G 以上硬盘 Microsoft Windows 9X NT 操作系统 800 600 或以上的屏幕分辨率 专业整理 学习帮手 2 C 简介 语言之所以要起名 为 C 是因为它是主要参考那个时候的一门叫 B 的语言 它的设计 者认为 C 语言是 B 语言的进步 所以就起名 为 C 语言 但是 B 语言并不是因为之前还有个 A 语言 而是 B 语言的作者为了纪念他的妻子 他的妻子名字的第一 个字母是 B 当 C 语 言发展到顶峰的时刻 出现了一个版本叫 C with

10、 Class 那就是 C 最早的版本 在 C 语言 中增加 class 关键字和类 那个时候有很多版本的 C 都希望在 C 语言中增加类的概念 后来 C 标准委员会决定为这个版本的 C 起个新的名字 那 个时候征集了很多 种名字 最后采纳了 其中一个人的意见 以 C 语言中的 运算符来体现它是 C 语言的进步 故而叫 C 成立 了 C 标准委员会 C 是一种语言 仅仅是它的语法 特性 标准类库就已经是一门非常高深的 课程 C 设计成静态类型 和 C 同样高效且可移植的多用途程序 设计语言 设计成直接的和广泛 的支援多种程序设计风格 程序化程序 设计 资料抽象化 面向 对象程序设计 泛型程序 设

11、 计 设计成给程序设计者更多的选择 即使可能 导致程序设计者选择错误 设计成尽可能 与 C 兼容 籍此提供一 个从 C 到 C 的平滑过渡 避免平台限定或 没有普遍用途的特性 不使用会带来额外开销的特性 设计成无需复杂的程序设计环境 C 标准演变了许多年 C 模板是近几年来对此语言的一种扩展 模板是根据类型参数来产 生函数和类的机制 有时也称模板为 参数化的类型 使用模板 可以设计一个对许多类型的数据 进行操作的类 而不需要为每个类型的数据建立一个单独的类 标准模板库 Standard Tempalte Library STL 和微软的活动模板库 Active Tempalte Library

12、 ATL 都基于这个 C 语言扩展 C 标准可分为两部分 C 语言本身和 C 标准库 C 标准库对于 Visual C 是相当新 的 实际上微软只是在发布 Visual C 5 0 时去除了一些 bug 标准库提供了标准的输入 输出 字符串 容器 如矢量 列表和映射等 非数值运算 如排序 搜索和合并等 和对数值计算的支持 应该说 C C 包含了相对少的关键字 而且很多最有用的函数都来源于库 C 标准库实现容 器和算法的部分就是 STL STL 是数据结构和算法的一个框架 数据结构包括矢量 列表和映射等 算法包括这些数据 结构的查找 拷贝和排序等 1994 年 7 月 ANSI ISO C 标准

13、委员会投票决定接受 STL 为 C 标准库的一部分 这个建议是根据 Alex Stepanov Meng Lee 和 David Musser 这三人的编程和软 件库研究提出的 STL 的产生是为了满足通用性的设计目标 而不是为了提高性能 3 软件架构 软件的总体架构如图 3 1 专业整理 学习帮手 图 3 1 软件架构 考虑到整个的下棋过程 无论对方是电脑抑或其他网络玩家 可以分为 己方落子 等待对方 落子 对方落子 设置己方棋盘数据这一系列过程 因此一人游戏类 二人游戏类和棋盘类之间的 关系参考了 AbstractFactory 抽象工厂 模式 以实现对两个不同模块进行一般化的控制 2 一

14、人游戏类 二人游戏类 棋盘类 主界面 用户 游戏类指针 专业整理 学习帮手 3 1 棋盘类 整个架构的核心部分 类名为 CTable 封装了棋盘的各种可能用到的功能 3 如保存棋盘数据 初始化 判断胜负等 用户操作主界面 主界面与 CTable 进行交互来完成对游戏的操作 3 2 游戏模式类 用来管理人机对弈 网络对弈两种游戏模式 类名为 CGame CGame 是一个抽象类 经由它 派生出一人游戏类 COneGame 和网络游戏类 CTwoGame 如图 3 2 图 3 2 CGame 类派生关系 这样 CTable 类就可以通过一个 CGame 类的指针 4 在游戏初始化的时候根据具体游戏

15、模 式的要求实例化 COneGame 或 CTwoGame 类的对象 然后利用多态性 5 使用 CGame 类提供 的公有接口就可以完成不同游戏模式下的不同功能了 4 主要算法 五子棋游戏中 有相当的篇幅是算法的部分 无论是人机对弈 还是网络对弈 都需要合理算 法的支持 本节中将详细介绍五子棋中使用的算法 13 4 1 判断断胜负胜负 五子棋的胜负 在于判断棋盘上是否有一个点 从这个点开始的右 下 右下 左下四个方向 是否有连续的五个同色棋子出现 如图4 1 抽象类 CGame COneGameCTwoGame 专业整理 学习帮手 图 4 1 判断胜负方向 这个算法也就是 CTable 的 W

16、in 成员函数 从设计的思想上 需要它接受一个棋子颜色的参数 然后返回一个布尔值 这个值来指示是否胜利 代码如下 BOOL CTable Win int color const int x y 判断横向 for y 0 y 15 y for x 0 x 11 x if color m data x y 判断纵向 for y 0 y 11 y for x 0 x 15 x if color m data x y 判断 方向 for y 0 y 11 y for x 0 x 11 x if color m data x y 判断 方向 for y 0 y 11 y for x 4 x 15 x if color m data x y 专业整理 学习帮手 不满足胜利条件 return FALSE 需要说明的一点是 由于这个算法所遵循的搜索顺序是从左到右 自上而下 因此在每次循环 的时候 都有一些坐标无需纳入考虑范围 例如对于横向判断而言 由于右边界所限 因而所有横 坐标大于等于 11 的点 都构不成达到五子连的条件 所以横坐标的循环上界也就定为 11 这样也 就提高了搜索的速度 4 2 人机

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

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号