基于linux下的网络型五子棋.ppt
主窗口的销毁1)关闭主窗口2)主窗口过程接收到MSG_CLOSE消息3)处理如下: caseMSG_CLOSE: DestroyMainWindow(hWnd); PostQuitMessage(hWnd); return0;4)while(GetMessage(Msg,hMainWnd)) {... }DestroyMainWindow销毁一个主窗口,但不会销毁主窗口所使用的消息队列以及窗口对象本身。因此,应用程序要在线程或进程的最后使用MainWindowCleanup最终清除主窗口所使用的消息队列以及窗口对象本身。菜单菜单通常依附于窗口中(称为普通菜单),或者以独立的、可弹出形式出现(称为弹出式菜单)。主要是提供给用户一种快捷选择的方式。创建普通菜单在程序中,我们首先要建立菜单,然后将菜单句柄传递给创建主窗口的函数。当主窗口显示出来时,我们创建的菜单将会在标题栏下显示出来。当用户用鼠标激活菜单并选择了菜单项后,该菜单所依附的窗口会收到MSG_COMMAND消息。菜单创建需要两个过程:建立菜单栏;建立菜单栏中各个菜单的子菜单。HMENUcreatepmenuabout_chess(void){HMENUhmnu;MENUITEMINFOmii;memset(mii,0,sizeof(MENUITEMINFO));mii.type=MFT_STRING;mii.id=0;mii.typedata=(DWORD)About;hmnu=CreatePopupMenu(mii);memset(mii,0,sizeof(MENUITEMINFO));mii.type=MFT_STRING;mii.state=0;mii.id=GAME_ABOUT;mii.typedata=(DWORD)AboutGobang;InsertMenuItem(hmnu,3,TRUE,mii);returnhmnu;}消息框是用于给用户一些提示或警告的主窗口,属于内建的对话框类型。函数原型为intGUIAPIMessageBox(HWNDhParentWnd,constchar*pszText,constchar*pszCaption,DWORDdwStyle)这个函数是可以显示带有几个按钮的消息框,程序可以通过用户点击不同的按钮来获得不同的返回值,从而进行一些操作。其中HWNDhParentWnd为主窗口的句柄,constchar*pszText为显示在消息框中的文字提示信息,constchar*pszCaption为消息框的名称,DWORDdwStyle为消息框的类型,例如有几个按钮等。MessageBox的函数说明本程序中的一个消息框函数举例MessageBox(hwnd,Newgame?VsComputer!,Gobang,MB_OK|MB_OKCANCEL|MB_ICONQUESTION)==IDOKGame菜单举例GameVsHumanVsComputerOnlineGameQuitNewgame?VsHuman!Newgame?VsComputer!Onlinegame?Areyousuretoquit?人人对战(在嵌入式平台上,基于触摸屏进行)首先选择开始游戏,进入人人对战模式,然后黑子和白子依次按照顺序落子,每一方落子之后,会进行相应的判断,在此子的八个方向上有没有连续的五个同色棋子,如果有则此方获胜,显示相应的提示信息,游戏结束。如果没有,则对方继续落子,直到一方获胜为止。在本程序的此模式下设有悔棋的功能,具体函数流程图如下:添加标题01单击此处添加小标题是03单击此处添加小标题否05单击此处添加小标题是02单击此处添加小标题否‘04人机对战中的电脑智能人机对战模式中,电脑的人工智能是本项目中算法的难点,怎样平衡功守,让电脑的下棋不至于象傻瓜一样,并有一定的进攻性,有许多要考虑的情况。以攻为主,功守兼备总体流程人下棋添加标题人方胜利添加标题是添加标题宣布人方胜利添加标题否添加标题扫描整个棋盘,找最高优先级添加标题在适当位置下子添加标题棋局分析此优先级可设置成