关于《黑白棋》的开发文档和使用说明
2010-07-20 20:46:14 来源:WEB开发网本源程序有比较详细的注释,适合于大家参考。整个程序分为如下几个部分:
一、应用程序的框架结构
本程序采用的是基于对话框的体系结构,整个程序由应用程序对象(CBWChessApp theApp;)和主对话框(CBWChessDlg dlg;)构成;程序的主要操作都是在主对话框下完成的。
二、本程序的功能模块
本程序分为三个主要的功能模块:
1、与计算机对弈
本模块在这方面只实现了简单的功能,采用 的随机算法加简单的分析,因此棋力 比较差,有待于今后进一步的改进。
2、与人对弈
由于该模块是要实现在同一台计算机上同一个程序上实现两个人的对弈,因此设计原理比较简单,功能也比较单一。
3、连网对弈
本模块最复杂,也是本程序的重点。本模块的实现主要基于如下几个方面:
(1)、进程同步的实现。由于对弈双方在不同的计算机上执行本程序,为了使程序正确的执行,需要保证双方的程序(即进程)
始终保持同步。
(2)、网络的连接和进程间的通讯。要实现网上对弈,首先要保证两个进程在网上建立连接。本模块采用基于
Winsocket(wsock32.lib和mpr.lib)类的网络连接和通讯。
(3)、数据格式的定义和交换。本模块预定义了一个1024字节的缓冲区和四个控制信号(CMD_SKIP ,CMD_OVER ,CMD_RESIGN,
CMD_CLICK)。数据的格式是一次传10个字节,其中前3个有效,分别表示信号量、x坐标和y坐标,后7个是校验字节
(备用)。
三、关于本程序几个关键部分的说明
由于本程序在代码中加入了比较详细的说明,在这里只就其中几个关键的函数或类进行说明:
关于函数(int BtoW(int x1,int y1,int flag);)的说明,本函数是本程序的核心,其主要功能是在一方放下一颗子之后,将对方的棋子进行翻转,采用的算法是从棋子( x1, y1)出发,向8个方向进行扫描,并将夹住的子进行翻转。
关于绘图函数DrawBitmap的说明,本函数主要是将位图画在主界面上,从而实现棋盘的绘制和更新。
关于函数Ring的说明,本函数是在棋盘翻转之后,对棋盘进行统计和分析,同时作必要的处理,如游戏是否结束,对方是否要连走等。
关于类CConnection 和CNetworking的说明,这两个类一个是用来建立连接对象,一个是用于建立服务器对象。这两个类将一些必要的网络操作封装在一起,完全将连接对象化,不需要窗口就可以处理网络消息,本程序同时还通过定义回调函数,实现数据到来时的自动处理,简化了数据处理的过程。
关于多线程的使用。为了实现输入和数据的处理,同时为了防止因等待输入而发生程序冻结的状态,提高程序执行的效率,本程序采用了多线程机制。派生的子线程主要有:用来登录服务器的登录线程;用来监听端口的服务器线程;用来接收和处理数据的网络线程。通过多线程的使用,减少了主线程的复杂度,同时也使分工更加明确和合理。
本文配套源码
更多精彩
赞助商链接