欢迎来到天天文库
浏览记录
ID:8978705
大小:529.50 KB
页数:28页
时间:2018-04-13
《vc五子棋设计开发与实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1 引言1.1 五子棋介绍五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(FiveinaRow的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的
2、棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。1.2 开发背景当前网络上流传的五子棋游戏功能并不尽善尽美,其中最主要的问题就是人机对战和网络对战不能够一起实现,所以我决定开发[1]一个既能够人机对战,又能够进行网络对战的五子棋系统。1.3 开发环境及运行环境1.3.1 开发环境lIntel®Pentium®42.0GHz,512M内存,80G硬盘lMicrosoft®Windows™2000ProfessionallMic
3、rosoft®VisualC++6.0lMicrosoft®DeveloperNetworkforVisualStudio.NET2003lVisualAssistX10.1.1301.01.3.2 运行环境lIntel®Pentium®2及以上处理器,32M以上内存,4G以上硬盘lMicrosoft®Windows™9X/NT操作系统l800*600或以上的屏幕分辨率第28页共28页2 软件架构软件的总体架构如图2.1:二人游戏类一人游戏类游戏类指针棋盘类主界面用户图2.1软件架构考虑到整个的
4、下棋过程(无论对方是电脑抑或其他网络玩家)可以分为:己方落子、等待对方落子、对方落子、设置己方棋盘数据这一系列过程,因此一人游戏类、二人游戏类和棋盘类之间的关系参考了AbstractFactory(抽象工厂)模式,以实现对两个不同模块进行一般化的控制。[2]2.1 棋盘类整个架构的核心部分,类名为CTable。封装了棋盘的各种可能用到的功能[3],如保存棋盘数据、初始化、判断胜负等。用户操作主界面,主界面与CTable进行交互来完成对游戏的操作。2.2 游戏模式类用来管理人机对弈/网络对弈两种游
5、戏模式,类名为CGame。CGame是一个抽象类,经由它派生出一人游戏类COneGame和网络游戏类CTwoGame,如图2.2:抽象类CGame第28页共28页COneGameCTwoGame图2.2CGame类派生关系这样,CTable类就可以通过一个CGame类的指针[4],在游戏初始化的时候根据具体游戏模式的要求实例化COneGame或CTwoGame类的对象;然后利用多态性[5],使用CGame类提供的公有接口就可以完成不同游戏模式下的不同功能了。3 棋盘类——CTable3.1 主要
6、成员变量说明3.1.1 网络连接标志——m_bConnected第28页共28页用来表示当前网络连接的情况,在网络对弈游戏模式下客户端连接服务器的时候用来判断是否连接成功;事实上,它也是区分当前游戏模式的唯一标志。3.1.2 棋盘等待标志——m_bWait与m_bOldWait由于在玩家落子后需要等待对方落子,m_bWait标志就用来标识棋盘的等待状态。当m_bWait为TRUE时,是不允许玩家落子的。在网络对弈模式下,玩家之间需要互相发送诸如悔棋、和棋这一类的请求消息,在发送请求后等待对方回应
7、时,也是不允许落子的,所以需要将m_bWait标志置为TRUE。在收到对方回应后,需要恢复原有的棋盘等待状态,所以需要另外一个变量在发送请求之前保存棋盘的等待状态做恢复之用,也就是m_bOldWait。等待标志的设置,由成员函数SetWait和RestoreWait完成。3.1.3 网络套接字——m_sock和m_conn在网络对弈游戏模式下,需要用到这两个套接字对象。其中m_sock对象用于做服务器时的监听之用,m_conn用于网络连接的传输。3.1.4 棋盘数据——m_data这是一个15*
8、15的二位数组,用来保存当前棋盘的落子数据。其中对于每个成员来说,0表示落黑子,1表示落白子,-1表示无子。3.1.5 游戏模式指针——m_pGame这个CGame类的对象指针是CTable类的核心内容。它所指向的对象实体决定了CTable在执行一件事情时候的不同行为,具体的内容请参见“游戏模式”一节。3.2 主要成员函数说明3.2.1 套接字的回调处理——Accept、Connect、Receive本程序的套接字派生自MFC的CAsyncSocket类[6],CTable的这三个成员函数就分别
此文档下载收益归作者所有