MFC程序五子棋实验报告.doc_第1页
MFC程序五子棋实验报告.doc_第2页
MFC程序五子棋实验报告.doc_第3页
MFC程序五子棋实验报告.doc_第4页
MFC程序五子棋实验报告.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MFC程序五子棋实验报告1.实验目的:通过学习MFC应用程序开发,编译一个简单的五子棋人人对战游戏。2. 实验过程:(1) 实验分工该实验是由小组人员共同合作完成,算法设计有*负责,编码以及函数实现由*负责,调试运行和结果测试分别有*和*负责,实验报告的书写由*负责。(2) 算法设计五子棋的游戏规则对我们大家来说都很很清楚的。只要某一方的棋子在一条直线上,棋子数先达到五或以上,则该方为胜者。根据游戏规则,算法设计分以下几个方面:A. 棋盘设计:棋盘设计可以用一个对话框实现,B. 棋子设计C. 开始函数D. 结束函数E. 下棋子函数F. 选择哪种棋子先下函数G. 判断输赢函数五子棋胜利的条件是一方的五个棋子连成一条直线,包括纵,横,左斜,右斜四种,可以用二维数组来保存每个位置棋子的值,分别用0,1,2来表示无棋,黑棋,白棋,每当下一个棋子后,用值保存其颜色,当白棋或者黑棋有一者符合上述四种情况之一时,就可以判断出哪方胜利。H. 重新开始棋局函数(3) 编码以及函数实现void CTestDlg:OnButton11() if(ToStart=1&Q00=0)/Tostart为1时,棋局开始 x=0;y=0;/表示棋子所在坐标 if(Qi=0)MessageBox(请选择开局棋色);z=0; /Qi表示棋子是黑色还是白色,若为0,则棋盘;1表示黑色棋子,2表示白色棋子 else if(Qi=1)/Qi为1,表示此棋子上一个棋子为黑色,此次单击放白棋 m_cBmp00.DeleteObject();/ m_cBmp00.LoadBitmap(IDB_BITMAP2); m_ctrBmp11.SetBitmap(HBITMAP(m_cBmp00); Qi+;/表示下一棋子需要放黑棋子 z=1;/棋子颜色 else if(Qi=2) m_cBmp00.DeleteObject(); m_cBmp00.LoadBitmap(IDB_BITMAP3);/ m_ctrBmp11.SetBitmap(HBITMAP(m_cBmp00); Qi-; z=2; Q00=z;/IsOver(x,y,z);/判断谁赢 SetBmp();/再次加载所有位图void CTestDlg:IsOver(int x,int y,int z)/胜负判断函数 / SetBmp(); bool flag1=false,flag2=false;int n,m,count=0;n=m=x; while(n=0)/判断纵轴是否五子相连 n-;if(Qny!=z)break; else count+;while(m=4)flag1=true;if(z=2&count=4)flag2=true;count=0;n=m=y; /判断横轴是否五子相连while(n-&n-1) if(Qxn!=z)break; else count+;while(m+&m=4)flag1=true;if(z=2&count=4)flag2=true;int n1,m1;n1=n=x;m1=m=y;/判断左斜是否五子相连count=0;while(n1-&n1=0&m1-&m1=0)if(Qn1m1!=z)break;else count+;while(n+&n=11&m+&m=4)flag1=true;if(z=2&count=4)flag2=true; n1=n=x;m1=m=y;count=0; /右斜是否五子相连while(n1+&n1=0)if(Qn1m1!=z)break;else count+;while(n-&n=0&m+&m=4)flag1=true;if(z=2&count=4)flag2=true; if(flag1=true) MessageBox(黑棋获胜); if(flag2=true) MessageBox(白棋获胜);void CTestDlg:OnButtonStart() /选择开始函数/ TODO: Add your control notification handler code hereif(ToStart=0)for(i=0;i10;i+) for(j=0;j12;j+) m_cBmpij.LoadBitmap(IDB_BITMAP1);Qij=0;/ SetBmp(); ToStart=1; Qi=0; / CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1); m_flag_Color=true;void CTestDlg:OnButtonEnd() /结束函数/ TODO: Add your control notification handler code herefor(i=0;i10;i+)for(j=0;j12;j+)m_cBmpij.DeleteObject();OnButtonStart();MessageBox(点击“开始”,清屏并重新开始游戏); ToStart=0; Qi=0; m_flag_Color=true; /结束函数void CTestDlg:OnButtonChoice() /改变选择的开局棋色 / TODO: Add your control notification handler code hereif(m_flag_Color=true) CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO2); m_flag_Color=false; Qi=2; UpdateData(false);else CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1); m_flag_Color=true;Qi=1; UpdateData(false);(4) 调试运行下面是程序运行结果的主窗口,如图,包括棋盘,选择开始按钮,结束按钮,以及选择开局棋色。点击开始按钮,所有位图加载一遍,准备开始棋局。下图是点击开始按钮之后,棋盘发生的变化,由于还没有选择开局颜色,会弹出手选择开局棋色的的窗口,因此,在点击开始按钮之后,一定要选择开局棋色。下图是一个简单的棋局结果截图,如图,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论