1、 目目 录录 1 引言引言 3 1.1 五子棋介绍 3 1.2 选题背景和动机 . 3 1.3 系统所要解决的问题 3 2 系统框架系统框架 5 2.1 棋盘类 6 2.1.1 主要成员变量说明: 6 2.1.2 清空棋盘Clear. 6 2.1.3 绘制棋子Draw 6 2.1.4 左键消息OnLButtonUp . 7 2.1.5 载入棋盘 . 7 2.1.6 对方落子完毕Over. 7 2.1.7 设置游戏模式SetGameMode 7 2.1.8 胜负的判断Win 7 2.2 游戏模式类 . 8 3 关键技术关键技术. 9 3.1 棋盘对话框的制作 9 3.1.1 对话框机制 . 9
2、3.1.3 棋子 10 3.2 人机对弈 10 3.2.1 难度的选择 . 10 3.2.2 机器的落子判断 .11 4 运行结果运行结果. 15 4.1 开发环境及运行环境 15 4.1.1 开发环境 15 4.1.2 运行环境 15 42 运行图示. 15 4.2.1 棋盘显示 . 15 4.2.2 开始的选择对话框 . 16 4.2.3 主界面中的游戏难度选项 16 4.2.4 电脑的应对 . 17 5 调试分析调试分析. 19 6 总结总结. 21 参考参考文献文献 22 1 引言引言 1.1 五子棋介绍五子棋介绍 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連 珠
3、” ,英译为“Renju” ,英文称之为“Gobang”或“FIR” (Five in a Row 的缩 写) ,亦有“连五子” 、 “五子连” 、 “串珠” 、 “五目” 、 “五目碰” 、 “五格”等多种 称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。 五子棋既有现代休闲的明显特征“短、平、快” ,又有古典哲学的高深学问“阴 阳易理” ;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和 高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既 有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结 晶。 1.2 选题背景
4、和动机选题背景和动机 随着社会的发展,越来越多人接触和使用计算机,网上进行的棋类运动也随 之普及。许多人喜欢上了下棋,但有时又苦于没有对手。作为一个计算机专业的 学生, 我对五子棋有很浓厚的兴趣, 平时也一直和同学下棋, 有时也和电脑下棋, 我对计算机人机对弈智能算法如何与人脑对抗产生了极大的兴趣, 当然人机对弈 的算法有很多种,许多人也对此有所研究。有些算法的智能程度甚至已经与人脑 不相上下。这类程序的开发最重要的莫过于智能算法的实现,然后就是判断胜负 的方法。当前网络上流传的五子棋游戏功能并不尽善尽美,其中最主要的问题就 是人机对战和网络对战不能够一起实现,所以我决定开发 1一个既能够人机
5、对 战,又能够进行网络对战的五子棋系统。 1.3 系统所要解决的问题系统所要解决的问题 1)棋盘和棋子的绘制。 2)计算机对下一步落棋的计算 3) 棋盘的载入 4)难度的模式选择 5)棋盘状态的判定 2 系统框架系统框架 五子棋系统框架: 图 2 系统框架图 考虑到整个的下棋过程(无论对方是电脑或是其他网络玩家)可以分为:己 方落子、等待对方落子、对方落子、设置己方棋盘数据这一系列过程,因此一人 游戏类、二人游戏类和棋盘类之间的关系是不同的。 2.1 棋盘类棋盘类 整个架构的核心部分, 类名为 CTable。 封装了棋盘的各种可能用到的功能, 如保存棋盘数据、初始化、判断胜负等。用户操作主界面
6、,主界面与 CTable 进行交互来完成对游戏的操作。 2.1.1 主要成员变量说明主要成员变量说明: 棋盘等待标志m_bWait 与 m_bOldWait 由于在玩家落子后需要等待对方落子, m_bWait 标志就用来标识棋盘的等待 状态。当 m_bWait 为 TRUE 时,是不允许玩家落子的。 在人人对弈模式下,玩家之间需要互相发送诸如悔棋、和棋这一类的请求消息, 在发送请求后等待对方回应时,也是不允许落子的,所以需要将 m_bWait 标志 置为 TRUE。在收到对方回应后,需要恢复原有的棋盘等待状态,所以需要另外 一个变量在发送请求之前保存棋盘的等待状态做恢复之用, 也就是 m_bOldWait。 等待标志的设置,由成员函数 SetWait 和 RestoreWait 完成。 2 2.1.2 清空棋盘清空棋盘Clear 在每一局游戏开始的时候都需要调用这个函数将棋盘清空, 也就是棋盘的初 始化工作。在这个函数中,主要发生了这么几件事情: 将 m_data 中每一个落子位都置为无子状态(-1) 。 按照传入的参数设置棋盘等待