置上. 工装管理系统 void CFiveChessDlg::computerTurn() { //计算玩家在空格子中的获胜分数 for(i=0;i<10;i++) { for(j=0;j<10;j++)// { playerGrades[i][j]=0; if(2==board[i][j]) { for(k=0;k<192;k++) { if(playerTable[i][j][k]) { switch(chessCount[0][k]) { case 1: playerGrades[i][j]+=5; break; case 2: playerGrades[i][j]+=50; break; case 3: playerGrades[i][j]+=100; break; case 4: playerGrades[i][j]+=400; break; } } } } } } //计算计算机在空格子中的获胜分数测量空间 for(i=0;i<10;i++) { for(j=0;j<10;j++) { computerGrades[i][j]=0; if(2==board[i][j]) { for(k=0;k<192;k++) { if(computerTable[i][j][k]) { switch(chessCount[1][k]) { case 1: computerGrades[i][j]+=5; break; case 2: computerGrades[i][j]+=50; break; case 3: computerGrades[i][j]+=100; break; case 4: computerGrades[i][j]+=400; break; } } } } } } if(start==true)//游戏开始,计算机第一次下棋时执行 { if(2==board[4][4]) { m=4; n=4; } else { m=5; n=5; } start=false; } else { for(i=0;i<10;i++) { for(j=0;j<10;j++) { if(2==board[i][j]) { if(computerGrades[i][j]>=computerTopGrade) { computerTopGrade=computerGrades[i][j]; computerTopGradeX=i; computerTopGradeY=j; } if(playerGrades[i][j]>=playerTopGrade) { playerTopGrade=playerGrades[i][j]; playerTopGradeX=i; playerTopGradeY=j; } } } } if(computerTopGrade>=playerTopGrade)//攻击,计算机较具优势 { m=computerTopGradeX; //将棋子摆在自己最有可能获胜的位置上进行攻击 n=computerTopGradeY; } else { 简易车棚 m=playerTopGradeX; ///将棋子摆在玩家最有可能获胜的位置上进行防守 n=playerTopGradeY; } } computerTopGrade=0; playerTopGrade=0; board[m][n]=1; //设定为计算机的棋子 粉碎机器人 computerCount++; if((50==playerCount)&&(50==computerCount)) { tie=true; over=true; } for(i=0;i<192;i++) { if(computerTable[m][n][i]&&chessCount[1][i]!=6) { chessCount[1][i]++; } if(playerTable[m][n][i]) { playerTable[m][n][i]=false; chessCount[0][i]=6; } } player=true; computer=false; } OnTimer函数用来没间隔一段时间执行的函数,程序每间隔一段时间来判断是轮到计算机下棋还是玩家下棋, 然后贴上相应的棋子 void CFiveChessDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if(!over) { if(computer) computerTurn(); for(i=0;i<=1;i++) { for(j=0;j<192;j++) { if(5==chessCount[i][j]) //判断任一方在任意一个获胜组合中是否有 5个棋子 { if(0==i) { playerWin=true; over=true; break; } else { computerWin=true;气胀式救生衣 over=true; break; } } if(over) break; } } } GetDlgItem(IDC_TIPSTATIC)->SetWindowText("小样,该你下了......");//没有任一方获胜 for(i=0;i<10;i++) { for(j=0;j<10;j++) { if(0==board[i][j]) //贴上玩家棋子 { BITMAP bm; CDC dcMem; CDC* pDC; CBitmap *pGreenBmp; CBitmap *pOldBitmap; pDC=GetDC(); pGreenBmp=new CBitmap; pGreenBmp->LoadBitmap(IDB_GREENBMP); pGreenBmp->GetObject(sizeof(BITMAP),(LPVOID)&bm); dcMem.CreateCompatibleDC(pDC); pOldBitmap=dcMem.SelectObject(pGreenBmp); pDC->BitBlt(i*50+13,j*50+13,46,46,&dcMem,0,0,SRCCOPY); delete pDC->SelectObject(pOldBitmap); } if(1==board[i][j]) //贴上计算机棋子 { BITMAP bm1; CDC dcMem1; CDC* pDC1; CBitmap *pPurpleBmp; CBitmap *pOldBitmap1; pDC1=GetDC(); pPurpleBmp=new CBitmap; pPurpleBmp->LoadBitmap(IDB_PURPLEBMP); pPurpleBmp->GetObject(sizeof(BITMAP),(LPVOID)&bm1); dcMem1.CreateCompatibleDC(pDC1); pOldBitmap1=dcMem1.SelectObject(pPurpleBmp); 号码池 pDC1->BitBlt(i*50+13,j*50+13,46,46,&dcMem1,0,0,SRCCOPY); delete pDC1->SelectObject(pOldBitmap1); } } } if(playerWin) GetDlgItem(IDC_TIPSTATIC)->SetWindowText("不错啊,你居然赢了,恭喜恭喜!"); if(computerWin) GetDlgItem(IDC_TIPSTATIC)->SetWindowText("哎!你这倒霉孩子,可怜哦,输了!"); if(tie) GetDlgItem(IDC_TIPSTATIC)->SetWindowText("功夫相当,平分秋!"); CDialog::OnTimer(nIDEvent); } |
本文发布于:2024-09-22 09:42:04,感谢您对本站的认可!
本文链接:https://www.17tex.com/tex/2/203724.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |