云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 五子棋毕业论文

五子棋毕业论文

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 2:49:38

7

整个的下棋过程(无论对方是电脑抑或其他网络玩家)可以分为:自己走棋、等待对手走棋、对手走棋后设置己方棋盘数据这一系列过程,因此一人游戏类、二人游戏类和棋盘类共用一个棋盘类,以实现对两个不同模块中相同功能的操作。

2.1 棋盘类

该类封装了棋盘的各种可能用到的功能,如保存棋盘数据、初始化、判断胜负等。用户操作主界面,主界面与CTable进行交互来完成对游戏的操作。

2.1.1 棋盘类主要成员变量说明

2.1.1.1 网络连接标志——m_bConnected

它是用来区分当前游戏模式的唯一标志,用来表示当前网络连接的情况,TRUE时表明网络连接成功,FALSE时默认为人机对战。

2.1.1.2 棋盘等待标志——m_bWait与m_bOldWait

由于在玩家落子后需要等待对方落子,m_bWait标志就用来标识棋盘的等待状态。当m_bWait为TRUE时,是不允许玩家落子的。

2.1.1.3 网络套接字——m_sock和m_conn

在网络对弈游戏模式下,需要用到这两个套接字对象。其中m_sock对象用于做服务器时的监听之用,m_conn用于网络连接的传输。

2.1.1.4 棋盘数据——m_data

这是一个15*15的二位数组,用来保存当前棋盘的落子数据。其中对于每个成员来说,0表示落黑子,1表示落白子,-1表示无子。

8

2.1.1.5 游戏模式指针——m_pGame

这个CGame类的对象指针是CTable类的核心内容。它所指向的对象实体决定了CTable在执行一件事情时候的不同行为,具体的内容请参见“游戏模式”一节。

2.1.2 棋盘类主要成员函数说明

2.1.2.1 套接字的回调处理——Accept、Connect、Receive

本程序的套接字派生自MFC的CAsjncSocket类,CTable的这三个成员函数就分别提供了对套接字回调事件OnAccept、OnConnect、OnReceive的实际处理,其中尤以Receive成员函数重要,它之中包含了对所有网络消息的分发处理。

2.1.2.2清空棋盘——Clear

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

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

? 按照传入的参数设置棋盘等待标志m_bWait,以供先、后手的不同情况之用。 ? 使用delete将m_pGame指针所指向的原有游戏模式对象从堆上删除。

2.1.2.3 绘制棋子——Draw

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

? 将给定的棋盘坐标换算为绘图的像素坐标。 ? 根据坐标绘制棋子位图。

? 如果先前曾下过棋子,则利用R2_NOTIORPEN将上一个绘制棋子上的最后落

9

子指示矩形擦除。

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

2.1.2.4 左键消息——OnLButtonUp

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

? 如果棋盘等待标志m_bWait为TRUE,则直接发出警告声音并返回,即禁止落

子。

? 如果点击时的鼠标坐标在合法坐标(0, 0)~(14, 14)之外,亦禁止落子。 ? 如果走的步数大于1步,方才允许悔棋。

? 进行胜利判断,如胜利则修改UI状态并增加胜利数的统计。 ? 如未胜利,则向对方发送已经落子的消息。

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

2.1.2.5 绘制棋盘——OnPaint

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

? 装载棋盘位图并进行绘制。 ? 根据棋盘数据绘制棋子。 ? 绘制最后落子指示矩形。

2.2 游戏模式类

用来管理人机对弈/网络对弈两种游戏模式,类名为CGame。CGame是一个抽象类,经由它派生出一人游戏类COneGame和网络游戏类CTwoGame,这样,CTable类就可以通过一个CGame类的指针,在游戏初始化的时候根据具体游戏模式的要求实例化

10

COneGame或CTwoGame类的对象;然后利用多态性[3],使用CGame类提供的公有接口就可以完成不同游戏模式下的不同功能了。

2.2.1 游戏模式类主要成员变量说明

2.2.1.1 棋盘指针——m_pTable

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

2.2.1.2落子步骤——m_StepList

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

2.2.2 游戏模式类主要成员函数说明

2.2.2.1 悔棋操作——Back

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

? 人机对弈模式下,计算机是完全允许玩家悔棋的,但是出于对程序负荷的考虑,

只允许玩家悔当前的两步棋(计算机一步,玩家一步)。

? 双人网络对弈模式下,悔棋的过程为:首先由玩家向对方发送悔棋请求(悔棋

消息),然后由对方决定是否允许玩家悔棋,在玩家得到对方的响应消息(允许或者拒绝)之后,才进行悔棋与否的操作。

搜索更多关于: 五子棋毕业论文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

7 整个的下棋过程(无论对方是电脑抑或其他网络玩家)可以分为:自己走棋、等待对手走棋、对手走棋后设置己方棋盘数据这一系列过程,因此一人游戏类、二人游戏类和棋盘类共用一个棋盘类,以实现对两个不同模块中相同功能的操作。 2.1 棋盘类 该类封装了棋盘的各种可能用到的功能,如保存棋盘数据、初始化、判断胜负等。用户操作主界面,主界面与CTable进行交互来完成对游戏的操作。 2.1.1 棋盘类主要成员变量说明 2.1.1.1 网络连接标志——m_bConnected 它是用来区分当前游戏模式的唯一标志,用来表示当前网络连接的情况,TRUE时表明网络连接成功,FALSE时默认为人机对战。 2.1.1.2 棋盘等待标志——m_bWait与m_bOldWait

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com