Windows编程五子棋小游戏精选.doc
文本预览下载声明
《Windows编程》大作业
题目:基于MFC的五子棋游戏实现 姓 名: 陈禹同
学 号: 1405130040
班 级: 软工1405
专 业: 软件工程
院 系: 数学与计算机
指导教师: 刘文涛
MFC程序五子棋实验报告
一.实验内容:
通过学习MFC应用程序开发,应用MFC控件等方面知识,编译一个简单的五子棋人人对战游戏。
二.实验过程:
算法设计原理
五子棋的游戏规则对我们大家来说都很很清楚的。只要某一方的棋子在一条直线上,棋子数先达到五或以上,则该方为胜者。根据游戏规则,算法设计分以下几个方面:
棋盘设计:
棋盘的设计主要是控件知识的应用。在棋盘的设计中所定义的控件主要有下面几种:
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(分组框两个)
棋盘设计是用一个对话框实现,再加上控件的使用,就形成一个简单的棋盘。
棋子设计
棋子的设计是小组人员自己用作图工具做出来的,黑白棋的实际如下图所示,其中最后一个图片是加载棋盘的位图,棋盘就是有多个位图合并出来的。
三个位图分别定义为:BITMAP1,BITMAP2,BITMAP3,如下图
开始函数
开始函数就是为开始按钮添加消息映射函数,开始函数需要实现的功能是,通过单击按钮,能够把所有构成棋盘的位图加载一遍,即相当于初始化棋盘,并且,如果棋盘上有棋子的位图的话,把棋子的位图清除,即相当于“清屏”其函数定义为:DeleteObject();开始函数的定义为:OnButtonStart() 。
结束函数
结束函数是为结束按钮添加的消息映射函数,其所要实现的功能是,单击结束按钮,弹出一个消息窗口,弹出消息,提示下一步要做什么。这里提示返回开始按钮,结束函数定义为:OnButtonEnd()。
下棋子函数
下棋子函数实现的时候,要考虑到两点,一点是单击开始按钮后,是否进行了选择,二是选择黑棋先还是白棋先。当点击棋盘上按钮时,如果没有进行选择,就弹出消息对话框,输出“请选择开局棋色”,如果进行了选择,就执行所对应的函数,白棋先的对应函数是LoadBitmap(IDB_BITMAP2);
黑棋先的对应函数是:LoadBitmap(IDB_BITMAP3);
下棋子函数定义为OnButton11()~OnButton1012();
选择先下棋色函数
该函数所要实现的功能是点击选择按钮,来选择开局先下棋子的棋色,其中,单击选择后,默认为白棋先下,如果想要改变的话,可以单击选择上面的复选框按钮,进行改变,白棋先下所对应的消息映射函数是:CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO2);
黑棋先下所对应的消息映射函数是:
CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);
选择函数的定义为:OnButtonChoice();
判断输赢函数
五子棋胜利的条件是一方的五个棋子连成一条直线,包括纵,横,左斜,右斜四种,可以用二维数组来保存每个位置棋子的值,分别用0,1,2来表示无棋,黑棋,白棋,每当下一个棋子后,用值保存其颜色,当白棋或者黑棋有一者符合上述四种情况之一时,就可以判断出哪方胜利.
判断输赢函数定义为:IsOver(int x,int y,int z)
编码以及函数实现
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.LoadBi
显示全部