当前位置:首页 > 五子棋毕业论文
11
2.2.2.2 初始化操作——Init
对于不同的游戏模式而言,也就有不同的初始化方式。对于人机对弈模式而言,初始化操作包括以下几个步骤:
? 设置网络连接状态m_bConnected为FALSE。 ? 设置主界面计算机玩家的姓名。 ? 初始化所有的获胜组合。
? 如果是计算机先走,则占据天元(棋盘正中央)的位置。 网络对弈的初始化工作暂为空,以供以后扩展之用。
2.2.2.3接收来自对方的消息——ReceiveMsg
这个成员函数由CTable棋盘类的Receive成员函数调用,用于接收来自对方的消息。对于人机对弈游戏模式来说,所能接收到的就仅仅是本地模拟的落子消息MSG_PUTSTEP;对于网络对弈游戏模式来说,这个成员函数则负责从套接字读取对方发过来的数据,然后将这些数据解释为自定义的消息结构,并回到CTable::Receive来进行处理。
2.2.2.4 发送落子消息——SendStep
在玩家落子结束后,要向对方发送自己落子的消息。对于不同的游戏模式,发送的目标也不同:
? 对于人机对弈游戏模式,将直接把落子的信息(坐标、颜色)发送给COneGame
类相应的计算函数。
? 对于网络对弈游戏模式,将把落子消息发送给套接字,并由套接字转发给对方。
2.2.2.5胜利后的处理——Win
这个成员函数主要针对CTwoGame网络对弈模式。在玩家赢得棋局后,这个函数
12
仍然会调用SendStep将玩家所下的制胜落子步骤发送给对方玩家,然后对方的游戏端经由CTable::Win来判定自己失败。
13
第三章 消息机制
Windows系统拥有自己的消息机制,在不同事件发生的时候,系统也可以提供不同的响应方式。五子棋程序也模仿Windows系统实现了自己的消息机制,主要为网络对弈服务,以响应多种多样的网络消息。
3.1消息机制的架构
当CTable获得了来自网络的消息之后,就可以使用一个switch结构来进行消息的分发了。如图3.1所示: 落子消息 悔棋消息 来自网络的消息 . . . . . . switch判断是哪个消息 和棋消息 认输消息 图3.1 请求悔棋
3.2各种消息说明
3.2.1落子消息——MSG_PUTSTEP
表明对方落下了一个棋子,其中i、j和color成员有效,szMsg成员无效。在人机对弈游戏模式下,亦会模拟发送此消息以达到程序模块一般化的效果。
3.2.2 悔棋消息——MSG_BACK
表明对方请求悔棋,除uMsg成员外其余成员皆无效。接到这个消息后,会弹出MessageBoi询问是否接受对方的请求,并根据玩家的选择回返MSG_AGREEBACK或
14
MSG_REFUSEBACK消息。
3.2.3同意悔棋消息——MSG_AGREEBACK
表明对方接受了玩家的悔棋请求,除uMsg成员外其余成员皆无效。接到这个消息后,将进行正常的悔棋操作。
3.2.4拒绝悔棋消息——MSG_REFUSEBACK
表明对方拒绝了玩家的悔棋请求,除uMsg成员外其余成员皆无效。接到这个消息后,整个界面将恢复发送悔棋请求前的状态。
3.2.5和棋消息——MSG_DRAW
表明对方请求和棋,除uMsg成员外其余成员皆无效。接到这个消息后,会弹出MessageBoi询问是否接受对方的请求,并根据玩家的选择回返MSG_AGREEDRAW或MSG_REFUSEDRAW消息。
3.2.6同意和棋消息——MSG_AGREEDRAW
表明对方接受了玩家的和棋请求,除uMsg成员外其余成员皆无效。接到这个消息后,双方和棋。
3.2.7拒绝和棋消息——MSG_REFUSEDRAW
表明对方拒绝了玩家的和棋请求,除uMsg成员外其余成员皆无效。接到这个消息后,整个界面将恢复发送和棋请求前的状态。
共分享92篇相关文档