毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

免费论文设计VC++五子棋 第2页

更新时间:2008-7-27:  来源:毕业论文

免费论文设计VC++五子棋 第2页

定了CTable在执行一件事情时候的不同行为,具体的内容请参见“游戏模式”一节。

3.2 主要成员函数说明

3.2.1 套接字的回调处理——AcceptConnectReceive

本程序的套接字派生自MFCCAsyncSocket[6]CTable的这三个成员函数就分别提供了对套接字[7]回调事件OnAcceptOnConnectOnReceive的实际处理,其中尤以Receive成员函数重要,它之中包含了对所有网络消息(参见“消息机制”一节)的分发处理。

3.2.2 清空棋盘——Clear

在每一局游戏开始的时候都需要调用这个函数将棋盘清空,也就是棋盘的初始化工作。在这个函数中,主要发生了这么几件事情:

l    m_data中每一个落子位都置为无子状态(-1)。

l    按照传入的参数设置棋盘等待标志m_bWait,以供先、后手的不同情况之用。

l    使用deletem_pGame指针所指向的原有游戏模式对象从堆上删除。

3.2.3 绘制棋子——Draw

这无疑是很重要的一个函数,它根据参数给定的坐标和颜色绘制棋子。绘制的详细过程如下:

l        将给定的棋盘坐标换算为绘图的像素坐标。

l        根据坐标绘制棋子位图。

l        如果先前曾下过棋子,则利用R2_NOTXORPEN将上一个绘制棋子上的最后落子指示矩形擦除。

l        在刚绘制完成的棋子四周绘制最后落子指示矩形。

3.2.4 左键消息——OnLButtonUp

作为棋盘唯一响应的左键消息,也需要做不少的工作:

l        如果棋盘等待标志m_bWaitTRUE,则直接发出警告声音并返回,即禁止落子。

l        如果点击时的鼠标坐标在合法坐标(0, 0)(14, 14)之外,亦禁止落子。

l        如果走的步数大于1步,方才允许悔棋。

l        进行胜利判断,如胜利则修改UI状态并增加胜利数的统计。

l        如未胜利,则向对方发送已经落子的消息。

l        落子完毕,将m_bWait标志置为TRUE,开始等待对方回应。

3.2.5 绘制棋盘——OnPaint

每当WM_PAINT消息触发时,都需要对棋盘进行重绘。OnPaint作为响应绘制消息的消息处理函数使用了双缓冲技术,减少了多次绘图可能导致的图像闪烁问题。这个函数主要完成了以下工作:

l        装载棋盘位图并进行绘制。

l        根据棋盘数据绘制棋子。

l        绘制最后落子指示矩形。

3.2.6 对方落子完毕——Over

在对方落子之后,仍然需要做一些判断工作,这些工作与OnLButtonUp中的类似,在此不再赘述。

3.2.7 设置游戏模式——SetGameMode

这个函数通过传入的游戏模式参数对m_pGame指针进行了初始化,代码如下:

void CTable::SetGameMode( int nGameMode )

{

    if ( 1 == nGameMode )

        m_pGame = new COneGame( this );

    else

        m_pGame = new CTwoGame( this );

    m_pGame->Init();

}

这之后,就可以利用OO的继承和多态特点[8]来使m_pGame指针使用相同的调用来完成不同的工作了,事实上,COneGame::InitCTwoGame::Init都是不同的。

3.2.8 胜负的判断——Win

这是游戏中一个极其重要的算法,用来判断当前棋盘的形势是哪一方获胜。其详细内容请参见“主要算法”一节。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

免费论文设计VC++五子棋 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。