《C++ mfc 五子棋.ppt》由会员分享,可在线阅读,更多相关《C++ mfc 五子棋.ppt(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、五子连珠游戏报告游戏功能简介w1.实现简单的五子棋游戏w2.插入一个下载的棋盘图片作为自己的棋盘w3.插入一段音乐实现背景音乐的播放w4.当有输赢出现时弹出一个显示战况的对话框w5.在菜单栏上添加一个战况的标题,当单击时弹出显示当时战况的对话框实现游戏的步骤w1首先将图片插入并显示w2.自己画出棋子图片并显示w3.简单实现换棋子的步骤w4.编写计算输赢的算法w5.制作弹出带有战况的对话框w6.为菜单栏上的战况标题添加消息映射w7.将音乐插入,通过菜单栏上的音乐按钮的消息映射实现播放图片的的插入及显示w1.将图片调整为BMP格式,并调成自己所需的大小w2.将图片插入资源中w3.添加函数DrawQ
2、ipan,实现画图的功能w4.在Onpaint函数中调用DrawQipanw5.具体代码:w void CWuziqiView:DrawQipan(CDC*pDC)w CBitmap m_bmp;w m_bmp.LoadBitmap(IDB_BITMAP3);/棋盘ID号w BITMAP bm;m_bmp.GetObject(sizeof(BITMAP),&bm);CDC dc;w dc.CreateCompatibleDC(pDC);w CBitmap*pOldbmp=dc.SelectObject(&m_bmp);w pDC-BitBlt(0,0,bm.bmWidth,bm.bmHeigh
3、t,&dc,0,0,SRCCOPY);dc.SelectObject(pOldbmp);w棋子的显示及换子w1.在资源里插入位图在资源里插入位图,画出黑白两个棋子画出黑白两个棋子w2.在在OnDraw里实现显示棋子及换子的方法里实现显示棋子及换子的方法w3.具体代码:具体代码:wvoid CWuziqiView:OnDraw(CDC*pDC)w CWuziqiDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);int i,j;CBitmap m_bmp1515;w for(i=0;i15;i+)for(j=0;jBitBlt(56+(i)*36,46+(j)*3
4、6,bm.bmWidth,bm.bmHeight,&dc,0,0,SRCCOPY);dc.SelectObject(pOldbmp);w else if(mapji=2)m_bmpij.LoadBitmap(IDB_BITMAP_WHITE);BITMAP bm;wm_bmpij.GetObject(sizeof(BITMAP),&bm);w CDC dc;w dc.CreateCompatibleDC(pDC);w CBitmap*pOldbmp=dc.SelectObject(&m_bmpij);w pDCBitBlt(56+(i)*36,46+(j)*36,bm.bmWidth,bm.b
5、mHeight,&dc,0,0,SRCCOPY);w dc.SelectObject(pOldbmp);w w判断输赢1.以递归调用实现判断2.代码:wint CWuziqiView:panduan(int x,int y,int i,int k)w if(i=-1)for(i=0;i8;i+)if(mapxy=mapx+movei.my+movei.n)w k+;if(k=5)if(flag%2=1)heiying+;else baiying+;CXuanzeDLD xuanze;w xuanze.DoModal();flag=0;w else k=panduan(x+movei.m,y+m
6、ovei.n,i,k);w if(i4)i=i+4;panduan(x,y,i,k);i=i-4;w else i=i-4;panduan(x,y,i,k);i=i+4;k=1;welse if(mapxy=mapx+movei.my+movei.n)k+;if(k=5)if(flag%2=1)heiying+;else baiying+;CXuanzeDLD xuanze;xuanze.DoModal();flag=0;w else k=panduan(x+movei.m,y+movei.n,i,k);return k;w对话框的弹出及功能w1.对话框的基本组件:列表框、按钮w列表框功能:显
7、示当前战况w按钮功能:关闭对话框w列表框显示的代码:w BOOL CXuanzeDLD:OnInitDialog()w CDialog:OnInitDialog();char k480;sprintf(k3,战况报告完毕);w sprintf(k1,黑子赢%d局,CWuziqiView:heiying);w sprintf(k2,白子赢%d局,CWuziqiView:baiying);w sprintf(k0,又到了报告战况的时刻了);for(int i=0;i4;i+)wm_Name.AddString(ki);wreturn TRUE;w按钮代码:wvoid CXuanzeDLD:OnOK
8、_conxin()w EndDialog(0);音乐插入w1.音乐插入:w首先将音乐转为wav类型,然后插入到资源w2.在MainFrm.cpp中添加头文件#include w#pragma comment(lib,Winmm.lib)w3.在菜单栏上添加音乐标题、添加消息映射w void CMainFrame:OnMenuitem32772()wPlaySound(LPCTSTR)IDR_WAVE1,AfxGetInstanceHandle(),SND_RESOURCE|SND_ASYNC);常用函数说明wLoadBitmap:函数功能:该函数从模块的可执行文件中加载指定的位图资源。该函数已
9、经被函数LoadImage替代。函数原型:HBITMAP LoadBitmap(HINSTANCE hInstance,LPCTSTR lpBitmapName);wGetObject:函数功能:该函数得到指定图形对象的信息,根据图形对象,函数把填满的或结构,或表项(用于逻辑调色板)数目放入一个指定的缓冲区。函数原型:int GetObject(HGDIOBJ hgdiobj,int cbBuffer,LPVOID lpvObject);wCreateCompatibleDC:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。通过GetDc()获取的HDC直接与相关设备沟通,而本函数创
10、建的DC,则是与内存中的一个表面相关联。函数原型函数原型:HDC CreateCompatibleDC(HDC hdc);wSelectObject:函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。函数原型:HGDIOBJ SelectObject(HDC hdc,HGDIOBJ hgdiobj);w sprintf:函数功能:把格式化的数据写入某个字符串。头文件:stdio.h。函数原型:int sprintf(char*buffer,const char*format,argument );wAddString:调用此成员函数添加一个字符串到列表框中。
11、wEndDialog:函数功能:该函数清除一个模态对话框,并使系统中止对对话框的任何处理。函数原型:BOOL EndDialog(HWND hDlg,int nResult);PlaySound简介wBOOL PlaySound(LPCSTR pszSound,HMODULE hmod,DWORD fdwSound);w参数pszSound是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAV资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。wSND_APPLICATION 用应用程序指定的关联来
12、播放声音。wSND_ALIAS pszSound参数指定了注册表或WIN.INI中的系统事件的别名。wSND_ALIAS_ID pszSound参数指定了预定义的声音标识符。wSND_ASYNC 用异步方式播放声音,PlaySound函数在开始播放后立即返回。SND_FILENAME pszSound参数指定了WAVE文件名。wSND_LOOP 重复播放声音,必须与SND_ASYNC标志一块使用。wSND_MEMORY 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。wSND_NODEFAULT 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。wSND_NOSTOP PlaySound不打断原来的声音播出并立即返回FALSE。wSND_NOWAIT 如果驱动程序正忙则函数就不播放声音并立即返回。wSND_PURGE 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。wSND_RESOURCE pszSound参数是WAVE资源的标识符,这时要用到hmod参数。wSND_SYNC 同步播放声音,在播放完后PlaySound函数才返回。