void GameTree::PrintGame(FILE* f){ int i; char pre[100]; for(i=0;i<currDepth;i++) pre[i]=' '; sprintf(pre+i, "%3ld %2d", currIdx, currDepth); if(currIdx==0){ fprintf(f,"Size=%zu\n",size); fprintf(f,"%s %d %d %0.1f\n",pre,MoveValue(),val,IsWin()); }else{ fprintf(f,"%s %d %d %0.1f\n",pre,MoveValue(),val,IsWin()); } if(currDepth<depth) for(int i=0;i<breath;i++){ DoMove(i); PrintGame(f); UndoMove(); } }
void CCLLKDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 int x=(point.x-m_iSeekX)/FRONTWIDTH+((point.x-m_iSeekX)%FRONTWIDTH?1:0); int y=(point.y-m_iSeekY)/FRONTHEIGHT+((point.y-m_iSeekY)%FRONTHEIGHT?1:0); if(x>0&&y>0&&x<m_nCol&&y<m_nRow) { if((x!=m_nX1||y!=m_nY1)) { if (x<m_nCol&&y<m_nRow&&m_map[y*m_nCol+x]!=BLANK_STATE) { if (!IsSelected) { IsSelected=!IsSelected; m_nX1=x; m_nY1=y; } else//Selected { if (m_map[m_nY1*m_nCol+m_nX1]==m_map[y*m_nCol+x]) { if (IsLink(m_nX1,m_nY1,x,y)) { DrawLink(m_nX1,m_nY1,x,y); m_map[m_nY1*m_nCol+m_nX1]=BLANK_STATE; m_map[y*m_nCol+x]=BLANK_STATE; IsSelected=!IsSelected; } else { m_nY1=y; m_nX1=x; } } else { m_nY1=y; m_nX1=x; } } if (IsWin()) { Invalidate(false); MessageBox("胜利闯关,即将开始新局!","恭喜您",MB_OK|MB_ICONWARNING); StartNewGame(); } } } } Invalidate(FALSE); //CDialog::OnLButtonDown(nFlags, point); }
bool Board::SetColorByNumber(int color) { if ((color==board[0][0]) || IsLose() || IsWin()) return false; oldcolor = board[0][0]; ChangeColor(0, 0, color); step_count++; // check for winnings win = CheckForWin(); return true; }
void CChessBorad::OnLButtonUp(UINT nFlags, CPoint point) { CPoint pt = point; if (m_IsStart == FALSE) //游戏终止 return; if (m_IsDown==TRUE) //轮到客户端 { NODE* node = GetLikeNode(pt); if (node !=NULL) { if (node->m_Color==ncUNKOWN) { node->m_Color = ncBLACK; NODE *pNode = new NODE(); memcpy(pNode,node,sizeof(NODE)); m_BackPlayList.AddTail(pNode); OnPaint(); //定义一个TCP数据报 TCP_PACKAGE package; package.cmdType = CT_POINT; package.chessPT.x = node->m_nX; package.chessPT.y = node->m_nY; m_ClientSock.Send((void*)&package,sizeof(TCP_PACKAGE)); //记录最近的棋子坐标 m_LocalChessPT.x = node->m_nX; m_LocalChessPT.y = node->m_nY; m_IsDown= FALSE; if (IsWin(node)!= NULL) { m_IsStart = FALSE; Sleep(1000); //赢棋 TCP_PACKAGE winPackage; winPackage.cmdType = CT_WINPOINT; winPackage.winPT[0] = m_Startpt; winPackage.winPT[1] = m_Endpt; m_ClientSock.Send((void*)&winPackage,sizeof(TCP_PACKAGE)); m_IsWin = TRUE; m_State = esEND; Invalidate(); MessageBox("恭喜你,赢了!!!"); m_IsWin = FALSE; InitializeNode(); Invalidate(); m_LocalChessPT.x = m_LocalChessPT.y = -1; m_RemoteChessPT.x = m_RemoteChessPT.y = -1; } } } } CDialog::OnLButtonUp(nFlags, point); }