计算机科学系网络工程毕业论文内容摘要:

方是没气 ),则该方为输了,棋局结束。 5 系统详细设计 游戏者登录管理模块 游戏者登录友好界面的实现 图 51 登录对话框 BOOL CMainFrame::PreCreateWindow(CREATESTRUCTamp。 cs)//界面初始化函数 { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE。 int UI_device_width=800,UI_device_height=600。 //设置界面宽与高 =10。 //界面在屏幕的左上角坐标 =10。 17 =UI_device_width。 =UI_device_height。 return TRUE。 } void CTIRView::OnDraw(CDC* pDC) { CTIRDoc* pDoc = GetDocument()。 ASSERT_VALID(pDoc)。 // TODO: add draw code for native data here static i=0。 if (i==0) { (IDB_TIRBG)。 (pDC)。 (TIRBGPEN)。 (IDB_TIRPAUSE)。 (pDC)。 (TIRPAUSEPEN)。 (IDB_TIRREMORSE)。 (pDC)。 (TIRREMORSEPEN)。 (IDB_TIRSTART)。 (pDC)。 (TIRSTARTPEN)。 i=1。 } pDCBitBlt(0,0,800,500,amp。 TIRBG,0,0,SRCCOPY)。 //画背景图 pDCBitBlt(580,70,680,170,amp。 TIRSTART,0,0,SRCAND)。 pDCBitBlt(580,200,680,300,amp。 TIRPAUSE,0,0,SRCAND)。 pDCBitBlt(580,330,680,430,amp。 TIRREMORSE,0,0,SRCAND)。 DrawChessboard(pDC)。 //画成三 GameInit(pDC)。 18 } ///////////////////////////////////////////////////////////////////// /* *函数名称 :DrawChessboard(CDC* pDC) *函数介绍 :绘制棋盘 *输入参数 :CDC 指针 *返回值 :无 */ void CTIRView::DrawChessboard(CDC *pDC){ //定义画笔 CPen chessboard。 (0,2,RGB(0,0,0))。 int k。 //利用循环及对称性画棋盘 pDCSelectObject(amp。 chessboard)。 //选择画笔 for (k=0。 k3。 k++) { pDCMoveTo(90+60*k,70+60*k)。 pDCLineTo(90+60*k,43060*k)。 pDCLineTo(45060*k,43060*k)。 pDCLineTo(45060*k,70+60*k)。 pDCLineTo(90+60*k,70+60*k)。 } pDCMoveTo(90,70)。 //画 \线 pDCLineTo(210,190)。 pDCMoveTo(330,310)。 pDCLineTo(450,430)。 pDCMoveTo(270,70)。 //画 |线 pDCLineTo(270,190)。 pDCMoveTo(270,310)。 pDCLineTo(270,430)。 pDCMoveTo(450,70)。 //画 /线 pDCLineTo(330,190)。 pDCMoveTo(210,310)。 19 pDCLineTo(90,430)。 pDCMoveTo(90,250)。 //画 线 pDCLineTo(210,250)。 pDCMoveTo(330,250)。 pDCLineTo(450,250)。 } /************************************************************** * *画棋盘 end **************************************************************/ 游戏帮助文档及基本规则的说明 当用户单击工具条中帮助文档时调出帮助文档,暂时未能实现。 游戏者下棋模块的实现 图 52 下棋阶段的图片 ID 下子及打子阶段的实现 有持石头者先下,石头棍子轮流下子,一落子即刻判断成三情况 JuTIR(),修改 cross[][].tir。 若为成三则为 1,若没成三则为 0。 //////////////////////////////////////////////////////////////////////////////////////////////////////// /* *函数名: JuTIR(int x,int y,int type) *函数作用:判断并标记是否成三 *函数实现 :奇数列判断前后左右,偶数列判断前或者后左或者右 *返回值: true or false * 20 *//////////////////////////////////////////////////////////////////////////////////////////////////////// bool Manager::JuTIR(int x,int y,int type){ int mx=x,my=y。 if(Location(amp。 mx,amp。 my)){ if(my%2==1){ if(cross[mx][(my1+8)%8].type==typeamp。 amp。 cross[mx][(my+1+8)%8].type==type){ cross[mx][my].tir=1。 cross[mx][(my1+8)%8].tir=1。 cross[mx][(my+1+8)%8].tir=1。 return true。 } if(cross[(mx+31)%3][my].type==typeamp。 amp。 cross[(mx+3+1)%3][my].type==type){ cross[(mx+31)%3][my].tir=1。 cross[(mx+3+1)%3][my].tir=1。 cross[mx][my].tir=1。 return true。 } return false。 } else { if(cross[mx][(my1+8)%8].type==typeamp。 amp。 cross[mx][(my2+8)%8].type==type){ cross[mx][my].tir=1。 cross[mx][(my1+8)%8].tir=1。 cross[mx][(my2+8)%8].tir=1。 return true。 } if(cross[(mx+31)%3][my].type==typeamp。 amp。 cross[(mx+3+1)%3][my].type==type){ 21 cross[(mx+31)%3][my].tir=1。 cross[(mx+3+1)%3][my].tir=1。 cross[mx][my].tir=1。 return true。 } if(cross[mx][(my+2+8)%8].type==typeamp。 amp。 cross[mx][(my+1+8)%8].type==type){ cross[mx][my].tir=1。 cross[mx][(my+2+8)%8].tir=1。 cross[mx][(my+1+8)%8].tir=1。 return true。 } return false。 } } return false。 } 成三后拥有打掉对方没成三子的权力 JuHave(),若没有棋子可打则弃权。 其中石头打棍子用 ,同理棍子打石头用。 ////////////////////////////////////////////////////////////////////////////////////////////////////////// /* *函数名 :JuHave(type)。 *函数作用 :判断是否有棋可打 */ //////////////////////////////////////////////////////////////////////////////////////////////////////////// bool Manager::JuHave(int type){ for(int i=0。 i3。 i++) for(int j=0。 j8。 j++){ if(cross[i][j].type==typeamp。 amp。 cross[i][j].tir==0) return true。 } return false。 } 22 若某一方後悔走了某一步可以申请悔棋(两步内没有打子才有效否则即使对方同意也无效),点击右边第三图片响应 GameBack( 2)。 /////////////////////////////////////////////////////////////////////////////////// /* *函数名 :GameBack(steps)。 *函数作用 :悔棋 *输入参数 :悔棋步数 *返回值 :bool */ /////////////////////////////////////////////////////////////////////////////////////////// bool Manager::GameBack(int steps){ if(nKeyDownsteps) return false。 int mx,my。 nKeyDown=steps。 bool Judge=false。 for(int k=nKeyDown。 knKeyDown+steps。 k++){//检查是否可以悔棋 mx=GameChessInfo[k].x。 my=GameChessInfo[k].y。 Location(amp。 mx,amp。 my)。 if(cross[mx][my].type!=10amp。 amp。 cross[mx][my].type!=20) Judge=true。 } if(Judge==false){ for(int k=nKeyDown。 knKeyDown+steps。 k++){ mx=GameChessInfo[k].x。 my=GameChessInfo[k].y。 Location(amp。 mx,amp。 my)。 cross[mx][my].type=0。 cross[mx][my].have=0。 GameNowState=((GameNowState/10+1)%2+1)*10+GameNowState%10。 23 } } else nKeyDown+=steps。 LastCh=GameChessInfo[nKeyDown1]。 return true。 } //////////////////////////////////////////////////////////////////////////////////////////////////////// /* *函数名: JuTIR(int x,int y,int type) *函数作用:判断并标记是否成三 *函数实现 :奇数列判断前 后左右,偶数列判断前或者后左或者右 *返回值: true or false * *//////////////////////////////////////////////////////////////////////////////////////////////////////// bool Manager::JuTIR(int x,int y,i。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。