摘要:这是一个利用 Visual C++开发出来的五子棋游戏软件,实现了人机对战
和网络上的人人对战。分别了采用人机对战模式和网络对弈模式,其中网络对弈
模式的设计采用了 C/S 模式, 下棋过程中双方可以悔棋、求和、认输,但须得
到对方的同意,另外还可以通过聊天进行信息交流;人机对战模式采用人机对弈
算法让电脑具有了人工智能,能与人 一决高下。本论文首先对 C++、MFC 和它的
运行机制、面向对象程序设计以及网络编程进行了简单介绍,然后对用 VC 开发
五子棋的整个过程作详细阐述,包括 程序的架构,类的构造,成员变量的说明
和成员函数的使用, 尤其对消息机制和消息说明做了重点介绍,最后对五子棋
游戏涉及的算法进行概述。
关键词:五子棋;C/S;VC;MFC
软件的总体架构如图 3 所示:
图 3 软件架构
考虑到整个的下棋过程(无论对方是电脑抑或其他网络玩家)可以分为:己方落
子、等待对方落子、对方落子、设置己方棋盘数据这一系列过程,因此一人游戏
类、 二人游戏类和棋盘类之间的关系参考了 AbstractFactory(抽象工厂)模
式,以实现对两个不同模块进行一般化的控制。[4]
2.1 棋盘类
整个架构的核心部分,类名为 CTable。封装了棋盘的各种可能用到的功能,如
保存棋盘数据、初始化、判断胜负等。用户操作主界面,主界面与 CTable 进行
交互来完成对游戏的操作。
2.2 模式类
用来管理人机对弈/网络对弈两种游戏模式,类名为 CGame。CGame 是一个抽象类,
经由它派生出一人游戏类 COneGame 和网络游戏类 CTwoGame,如图 4 所示。
图 4 CGame 类派生关系
这样,CTable 类就可以通过一个 CGame 类的指针,在游戏初始化的时候根据具
体游戏模式的要求实例化 COneGame 或 CTwoGame 类的对象;然后利用多态性[5],
使用 CGame 类提供的公有接口就可以完成不同游戏模式下的不同功能了。其中网
络对弈模式可实现悔棋、求和、认输等功能。流程图如 图 5 所示。