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

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

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

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

4 游戏模式类——CGame

这个类负责对游戏模式进行管理,以及在不同的游戏模式下对不同的用户行为进行不同的响应。由于并不需要CGame本身进行响应,所以将其设计为了一个纯虚类[9],它的定义如下:

class CGame

{

protected:

    CTable *m_pTable;

public:

    // 落子步骤

    list< STEP > m_StepList;

public:

    // 构造函数

    CGame( CTable *pTable ) : m_pTable( pTable ) {}

    // 析构函数

    virtual ~CGame();

    // 初始化工作,不同的游戏方式初始化也不一样

    virtual void Init() = 0;

    // 处理胜利后的情况,CTwoGame需要改写此函数完成善后工作

    virtual void Win( const STEP& stepSend );

    // 发送己方落子

    virtual void SendStep( const STEP& stepSend ) = 0;

    // 接收对方消息

    virtual void ReceiveMsg( MSGSTRUCT *pMsg ) = 0;

    // 发送悔棋请求

    virtual void Back() = 0;

};

4.1 主要成员变量说明

4.1.1 棋盘指针——m_pTable

由于在游戏中需要对棋盘以及棋盘的父窗口——主对话框进行操作及UI状态设置,故为CGame类设置了这个成员。当对主对话框进行操作时,可以使用m_pTable->GetParent()得到它的窗口指针

4.1.2 落子步骤——m_StepList

一个好的棋类程序必须要考虑到的功能就是它的悔棋功能,所以需要为游戏类设置一个落子步骤的列表。由于人机对弈和网络对弈中都需要这个功能,故将这个成员直接设置到基类CGame中。另外,考虑到使用的简便性,这个成员使用了C++标准模板库[10]Standard Template LibrarySTL)中的std::list,而不是MFCCList

4.2 主要成员函数说明

4.2.1 悔棋操作——Back

在不同的游戏模式下,悔棋的行为是不一样的。

l        人机对弈模式下,计算机是完全允许玩家悔棋的,但是出于对程序负荷的考虑(此原因请参见“几点补充说明”一节),只允许玩家悔当前的两步棋(计算机一步,玩家一步)。

l        双人网络对弈模式下,悔棋的过程为:首先由玩家向对方发送悔棋请求(悔棋消息),然后由对方决定是否允许玩家悔棋,在玩家得到对方的响应消息(允许或者拒绝)之后,才进行悔棋与否的操作。

4.2.2 初始化操作——Init

对于不同的游戏模式而言,也就有不同的初始化方式。对于人机对弈模式而言,初始化操作包括以下几个步骤:

l        设置网络连接状态m_bConnectedFALSE

l        设置主界面计算机玩家的姓名。

l        初始化所有的获胜组合。

l        如果是计算机先走,则占据天元(棋盘正中央)的位置。

网络对弈的初始化工作暂为空,以供以后扩展之用。

4.2.3 接收来自对方的消息——ReceiveMsg

这个成员函数由CTable棋盘类的Receive成员函数调用,用于接收来自对方的消息。对于人机对弈游戏模式来说,所能接收到的就仅仅是本地模拟的落子消息MSG_PUTSTEP;对于网络对弈游戏模式来说,这个成员函数则负责从套接字读取对方发过来的数据,然后将这些数据解释为自定义的消息结构,并回到CTable::Receive来进行处理。

4.2.4 发送落子消息——SendStep

在玩家落子结束后,要向对方发送自己落子的消息。对于不同的游戏模式,发送的目标也不同:

l        对于人机对弈游戏模式,将直接把落子的信息(坐标、颜色)发送给COneGame类相应的计算函数。

l        对于网络对弈游戏模式,将把落子消息发送给套接字,并由套接字转发给对方。

4.2.5 胜利后的处理——Win

这个成员函数主要针对CTwoGame网络对弈模式。在玩家赢得棋局后,这个函数仍然会调用SendStep将玩家所下的制胜落子步骤发送给对方玩家,然后对方的游戏端经由CTable::Win来判定自己失败。

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

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

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