基于VC的五子棋游戏软件的设计与开发.doc_第1页
基于VC的五子棋游戏软件的设计与开发.doc_第2页
基于VC的五子棋游戏软件的设计与开发.doc_第3页
基于VC的五子棋游戏软件的设计与开发.doc_第4页
基于VC的五子棋游戏软件的设计与开发.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

基于基于 VC 的五子棋游戏软件的设计与开发的五子棋游戏软件的设计与开发 摘摘 要要 人工智能是近年来很活跃的研究领域之一 计算机博弈是人工智能研究的 一个重要分支 它的研究为人工智能带来了很多重要的方法和理论 产生了广 泛的社会影响和学术影响 五子棋本身就是一款益智休闲游戏 规则简单 五 子棋不仅能增强思维能力 提高智力 而且富含哲理 有助于修身养性 本系统就以五子棋游戏作为研究课题 对五子棋的算法与规则做了研究 阐述了如何在 Microsoft Visual C 下用 API 函数来开发 Windows 下的游戏 并给出了具体的实现 本系统以五子棋为例实现的主要功能有棋盘 棋子的输 出 人机对下等 本系统还有和棋 再来一盘 帮助等辅助功能 关键字 关键字 五子棋 Microsoft Visual C API 函数 The Design and Exploitation of Gobang Game with VC Abstract Artificial intelligence is one of the brisk research areas The chess game on computer is an important branch of the research on artificial intelligence The researches on chess game bring plenty of important methods and theories for researching on artificial intelligence and cause broad influences on society and academe Gobang chess game means five pieces on one line is a sort of game which is full of wisdom leisure and benefits and the rules of it are very simple This paper focuses on the study of this chess game and uses the Microsoft Visual C to explore the Window s game This system mainly uses the function of Visual C API to realize the export of chessboard and checker and people can play with computer Moreover this system has the assistant functions such as Deuce Play Again Help and so on Key words Gobang Microsoft Visual C API Function 目目 录录 论文总页数 21 页 1引言 1 2开发工具和应用平台 1 2 1MICROSOFT VISUAL C 的介绍 1 2 2WINDOWS 编程的特点 2 3系统需求分析 4 3 1系统需求 4 3 2功能需求 4 3 3系统运行环境 4 4五子棋算法分析 5 4 1五子棋的发展 5 4 2五子棋的规则 6 4 3具体算法分析 7 4 3 1 棋盘局势状态表示 7 4 3 2 棋盘中下棋的顺序表示 7 4 3 3 具体算法 7 5系统流程 9 6系统功能实现 10 6 1窗口设计 10 6 2棋盘设计 11 6 3按钮功能的实现 12 6 4胜负判断 13 7系统测试与分析 14 7 1运行结果 14 7 2问题的发现与解决 17 结 论 17 参考文献 17 致 谢 19 声 明 20 附 录 21 第 1 页 共 21 页 1 引言引言 目前网络上有很多五子棋子游戏 玩法简单 娱乐性也很高 五子棋不仅 能增强思维能力 提高智力 而且富含哲理 有助于修身养性 通过对五子棋 的设计与开发 了解和掌握游戏开发的原理与方法 让电脑像人脑一样思考 一直是人工智能发展的最终目标 作为一门边缘学科 它有诸多的研究领域 博弈即为其中之一 博弈的参加者可以是个人 集体 某种生物或机器 他们 都力图用自己的 智力 去击败对手 博弈为人工智能提供了一个极好的试验 场所 人工智能中的许多概念和方法都是从博弈程序中提炼出来的 人工智能 中大多以下棋为例来研究博弈规律 本文以五子棋为入口 设计了一个五子棋 人机对弈系统 以实现人和计算机的博弈 最终的目的是为了建立一个有具体 规则的五子棋平台 人机对弈程序的要点 至少应具备以下 4 个部分 1 状态表示 某种在 机器中表示棋局的方法 能够让程序知道博弈的状态 2 走法产生 产生合 法走法的规则 以使博弈公正地进行 并可判断对手是否乱走 3 搜索技术 从所有合法的走法中选择最佳的走法技术 4 对弈界面 本系统主要研究使用 Microsoft Visual C 以 Windows 窗体程序对五子 棋游戏进行开发与设计 让大家了解用 Microsoft Visual C 开发 WINDOWS 小游戏的过程 2 开发工具和应用平台开发工具和应用平台 2 12 1MicrosoftMicrosoft VisualVisual C C 的介绍的介绍 C 语言是一种高效率的计算机程序设计语言 而 Visual C 则是在它的基 础上开发出的一套功能强大的程序设计工具 对于游戏程序 Visual C 可以 说是最佳的开发工具 第一 Visual C 具有优异的运行速度 第二 Visual C 可以直接访问内存 Visual C 自诞生以来 一直是 Windows 环境下最主要的应用开发系统之 一 Visual C 不仅是 C 语言的集成开发环境 而且与 Win32 紧密相连 所以 利用 Visual C 开发系统可以完成各种各样的应用程序的开发 从底 层软件直到上层直接面向用户的软件 而且 Visual C 强大的调试功能也为 大型复杂软件的开发提供了有效的排错手段 Visual C 是一个很好的可视化编程工具 使用 Visual C 环境来开发 基于 Windows 的应用程序大大缩短了开发时间 而且它的界面更友好 便于程 序员操作 开发环境是程序员同 Visual C 的交互界面 通过它程序员可以 访问 C 源代码编辑器 资源编辑器 使用内部调试器 还可以创建项目文件 第 2 页 共 21 页 所谓 API 就是应用程序编程接口 Application Programming Interface Windows API 是 Windows 系统和 Windows 应用程序间的标准程 序接口 API 为应用程序提供系统的各种特殊函数及数据结构定义 Windows 应用程序可以利用上千个标准 API 函数调用系统功能 在 Visual C 中使用 Windows API 是相当容易的 只要在项目中设定所要使用的函数库并引用正确 的头文件 就可以使用 Windows API 中的函数与数据类型 根据 Windows API 函数完成的功能 可将其分为三类 1 窗口管理函数 实现窗口函数的创建 移动和修改功能 2 图形设备函数 GDI 实现与设备无关的图形操作功能 3 系统服务函数 实现与操作系统有关的多种功能 用 Windows API 函数来编写应用程序的顺序结构为 调用 WinMain 函数 开始执行 定义窗口类 初始化窗口类 窗口的实例化 通过消息循环获取消 息并将消息发送给消息处理函数做出相应的操作 2 22 2WindowsWindows 编程的特点编程的特点 所有的 Windows 程序都具有类似的结构和相同的 外观 所以用户不用 花很多的时间来学习新程序的用法 具有这种一致的用户界面是使用 Windows 内部子模序来创建的 所有的菜单 对话框 滚动条等都具有同样的键盘的鼠 标接口 Windows 自己处理这项工作 而不是交给应用程序完成 Windows 编程有以下几个特点 1 事件驱动的程序设计 2 消息循环与输入 3 图形输出 4 用户界面对象 5 资源共享 编写一个典型的 Windows 应用程序 一般需要 1 C CPP 源程序文件 2 H HPP 头文件 3 资源文件 包含了应用程序所使用的全部资源定义 通常以 RC 为后缀名 资源是应 用程序所能够使用的一类预定义工具中的一个对象 包括 字符串资源 加速 键表 对话框 菜单 位图 光标 工具条 图标 版本信息和用户自定义资 源等 Windows 消息机制 Windows 是一个消息驱动的操作系统 一个消息由一 第 3 页 共 21 页 个消息名称 UINT 类型 和两个参数 WPARAM LPARAM 构成 当用户进行了 输入或者是窗口的状态发生改变时 系统会发送消息到某一个窗口 例如 当 鼠标左键单击之后会有 WM LBUTTONDOWN 消息发送 用户也可以定义自己的消 息名称 也可以利用自定义消息来发送通知和传送数据 一个消息必须由一个 窗口接收 在窗口的消息处理函数中可以对消息进行分析 对自己感兴趣的消 息进行处理 如果希望在窗口中进行图形输出就必须对 WM PAINT 进行处理 为了应付那些没有被响应的消息 Windows 为窗口编写了默认的窗口消息处理 函数 窗口过程将负责处理那些程序中没有处理的消息 正因为有了这个默认 窗口过程 程序员才可以利用 Windows 的窗口进行开发而不必过多关注窗口各 种消息的处理 提到消息就必须说到窗口句柄 系统通过窗口句柄在整个操作 系统中唯一标识一个窗口 发送消息时必须指定一个窗口句柄表明该消息由那 个窗口接收 而每个窗口都会有自己的窗口消息处理函数 用户的输入会被正 确的处理 在 Windows 操作系统中维护着一个或者多个消息队列 所有产生的 消息都会被放入到队列中 系统在队列中每次取出一条消息 根据消息的接收 句柄而将 该消息发送给拥有该窗口的消息循环 每一个运行的程序都有自己的 消息循环 在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗 口过程 窗口函数定义了应用程序对接收到的不同消息的响应 其中包括了应用程 序对各种可能接收到的消息的处理过程 是消息处理分支控制语句的集合 通 常窗口函数由一个或多个 switch 语句组成 每条 case 语句对应一种消息 当应用程序接收到一个消息时 相应的 case 语句被激活并执行相应的响应程 序模块 窗口函数是应用程序处理接收到的消息的函数 其中包含了应用程序对各 种可能接收到的消息的处理过程 在本系统中一共用到了 WM PAINT WM LBUTTONDOWN WM LBUTTONUP WM DESTROY 四种消息 LRESULT CALLBACK WndProc HWND hWnd UINT iMessage UINT wParam LONG lParam switch iMessage case WM PAINT break case WM LBUTTONDOWN 第 4 页 共 21 页 case WM LBUTTONUP case WM DESTROY default return DefWindowProc hWnd iMessage wParam lParam WM LBUTTONDOWN 是在玩家在鼠标单击左键后产生的 这时通过 GetCursorPos m 10 m for n 4 n 14 n if p m n 1 g 0 else if p m n 2 g 0 一方获胜后 会弹出消息框 提示一方获胜游戏结束 并将 g 置为 0 这 时游戏就不能再继续 对下棋 和棋 等起了屏蔽作用 在 if 语句里面有 g 0 这个条件 是限制游戏结束后重复判断胜负 只要一方获胜 就不能对棋 盘做任何操作 只有对按钮采取操作有效 第 15 页 共 21 页 7 系统测试与分析系统测试与分析 7 17 1运行结果运行结果 本系统在 Visual C 6 0 下调试通过 调试成功后 打开 debug 目录下 five exe 开始运行五子棋游戏 我就从界面 按钮功能 胜负的判断几个方 面来测试系统 1 界面 该窗口具有最大化 最小化关闭按钮 系统菜单 标题栏 边框 背景色为银白色 棋盘大小为 15 15 背景为灰色 图 3 游戏界面 2 画棋子 本系统能够在棋盘方格的交叉处画棋子 棋子半径为 10 第 16 页 共 21 页 图 4 画棋子 3 判断胜负 当棋盘上 一 四个方向有同一种颜色 的五颗棋连成同一条直线时 系统会弹出提示消息框表示已经分出胜负 图 5 胜负判断 4 和棋 按钮 在游戏过程中 可以单击 和棋 按钮 来中断棋局 第 17 页 共 21 页 图 6 和棋 7 27 2问题的发现与解决问题的发现与解决 在游戏开始阶段 程序有不少小 BUG 每次开始游戏后 玩家落棋后 会 在窗口 0 0 位置多显示了一颗红棋 经过后来指导老师指导和参考相关书 籍后 解决了问题 原因在于 Windows 在消息上的顺序造成的 一旦有 WM LBUTTONDOWN 消息产生后 还未来得及将棋子半径等参数传递给 WM PAINT 消息时 于是绘图函数就在 0 0 点绘制了两个棋子 由于电脑所执的红子 后画 所以就把黑子覆盖了 我们就只看得到一颗红棋了 其实是画了两颗 所以需要在画图函数处 加限制条件 限制它在棋盘外画棋 有前发现的另外一个小 BUG 就是 系统可能在下棋过程中覆盖存在的棋子 棋盘上数据不为零的点均为已落棋的点 这种点只被搜索 不会被重新赋值 所以在赋值的时候选择最佳落棋点之前 应该对这些点进行限制 就可以解决 这个问题 结结 论论 随着计算机的普及 人们对游戏的要求也越来越高 像五子棋这种休闲游 戏丰富了人们的业余生活 至此 对用 Microsoft Visual C API 函数来开 发 Windows 小游戏有了一个较全面的了解 通过本课题的研究及几个月的设计与开发 基于 VC 的五子棋游戏软件开发 第 18 页 共 21 页 完毕 实现了五子棋的人机对战 本课题按软件工程的要求设计与实现了整个 系统 即需求分析 系统总体设计 详细设计与编码实现等步骤 最后进行了 系统测试 并通过了系统测试 不足与改进 本系统是从 P 0 0 开始搜索 但落棋一般都是从中心开始 以后都是围绕中心的棋展开的 在棋盘的边缘 基本上都是空点 这样就浪费 了很多系统资源 增加了搜索时间 如能从棋盘最有可能下的点开始搜索就可 以了 比如查找 P 里面最小的点 在棋盘界面上也需要有所改进 本系统 还不能保存棋局 如能增加保存棋局功能 游戏结束后就能分析棋局 对玩家 提高自身的水平有所帮助 参考文献参考文献 1 黄维通 Visual C 面向对象与可视化程

温馨提示

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

评论

0/150

提交评论