Windows编程五子棋小游戏资料

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Windows编程》大作业

题目:基于MFC的五子棋游戏实现

姓名:陈禹同

学号:1405130040

班级:软工1405

专业:软件工程

院系:数学与计算机

指导教师:刘文涛

MFC程序五子棋实验报告

一.实验内容:

通过学习MFC应用程序开发,应用MFC控件等方面知识,编译一个简单的五子棋人人对战游戏。

二.实验过程:

(1)算法设计原理

五子棋的游戏规则对我们大家来说都很很清楚的。只要某一方的棋子在一条直线上,棋子数先达到五或以上,则该方为胜者。根据游戏规则,算法设计分以下几个方面:

A.棋盘设计:

棋盘的设计主要是控件知识的应用。在棋盘的设计中所定义的控件主要有下面几种:

IDC_BUTTON_START(开始按钮)

IDC_BUTTON_END(结束按钮)

IDC_BUTTON_CHOICE(选择按钮)

IDC_RADIO1(黑棋先按钮)

IDC_RADIO2(白棋先按钮)

IDC_STATIC_BITMAP11到IDC_STATIC_BITMAP1012(棋盘位图120个)

IDC_BUTTON11到IDC_BUTTON1012(棋盘按钮120个)

IDC_TEST_DIOLOG(对话框控件)

IDC_STATIC(分组框两个)

棋盘设计是用一个对话框实现,再加上控件的使用,就形成一个简单的棋盘。

B.棋子设计

棋子的设计是小组人员自己用作图工具做出来的,黑白棋的实际如下图所示,其中最后一个图片是加载棋盘的位图,棋盘就是有多个位图合并出来的。

三个位图分别定义为:BITMAP1,BITMAP2,BITMAP3,如下图

C.开始函数

开始函数就是为开始按钮添加消息映射函数,开始函数需要实现的功能是,通过单击按钮,能够把所有构成棋盘的位图加载一遍,即相当于初始化棋盘,并且,如果棋盘上有棋子的位图的话,把棋子的位图清除,即相当于“清屏”其函数定义为:DeleteObject();开始函数的定义为:OnButtonStart() 。

D.结束函数

结束函数是为结束按钮添加的消息映射函数,其所要实现的功能是,单击结束按钮,弹出一个消息窗口,弹出消息,提示下一步要做什么。这里提示返回开始按钮,结束函数定义为:OnButtonEnd()。

E.下棋子函数

下棋子函数实现的时候,要考虑到两点,一点是单击开始按钮后,是否进行了选择,二是选择黑棋先还是白棋先。当点击棋盘上按钮时,如果没有进行选择,就弹出消息对话框,输出“请选择开局棋色”,如果进行了选择,就执行所对应的函数,白棋先的对应函数是LoadBitmap(IDB_BITMAP2);

黑棋先的对应函数是:LoadBitmap(IDB_BITMAP3);

下棋子函数定义为OnButton11()~OnButton1012();

F.选择先下棋色函数

该函数所要实现的功能是点击选择按钮,来选择开局先下棋子的棋色,其中,单击选择后,默认为白棋先下,如果想要改变的话,可以单击选择上面的复选框按钮,进行改变,白棋先下所对应的消息映射函数是:

CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO2);

黑棋先下所对应的消息映射函数是:

CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);

选择函数的定义为:OnButtonChoice();

G.判断输赢函数

五子棋胜利的条件是一方的五个棋子连成一条直线,包括纵,横,左斜,右斜四种,可以用二维数组来保存每个位置棋子的值,分别用0,1,2来表示无棋,黑棋,白棋,每当下一个棋子后,用值保存其颜色,当白棋或者黑棋有一者符合上述四种情况之一时,就可以判断出哪方胜利.

判断输赢函数定义为:IsOver(int x,int y,int z)

(2)编码以及函数实现

CTable::CTable()

{

// 初始化玩家姓名

TCHAR str[10];

CFiveApp *pApp = (CFiveApp *)AfxGetApp();

::GetPrivateProfileString( _T("Options"), _T("Name"), _T("Renjiu"), str, 15, pApp->m_szIni );

m_strMe = str;

// 初始化图像列表

m_iml.Create( 24, 24, ILC_COLOR24 | ILC_MASK, 0, 2 );

// 载入黑、白棋子掩码位图

CBitmap bmpBlack, bmpWhite;

bmpBlack.LoadBitmap( IDB_BMP_BLACK );

m_iml.Add( &bmpBlack, 0xff00ff );

bmpWhite.LoadBitmap( IDB_BMP_WHITE );

m_iml.Add( &bmpWhite, 0xff00ff );

// 初始化游戏模式

m_pGame = NULL;

}

//////////////////////////////////////////////////////////////////////////

// 析构函数,释放m_pGame指针

//////////////////////////////////////////////////////////////////////////

CTable::~CTable()

{

// 写入玩家姓名

CFiveApp *pApp = (CFiveApp *)AfxGetApp();

相关文档
最新文档