• 管理员
    了解作者
  • Visual C++
    开发工具
  • 81KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 1404
    下载次数
  • 2001-06-10 23:02
    上传日期
供两个人网上对弈的网络五子棋源码
fchess_src.zip
  • res
  • black1.ico
    766B
  • ico00001.ico
    766B
  • cursor1.cur
    326B
  • cur00001.cur
    326B
  • white1.ico
    766B
  • fchess.rc2
    398B
  • ico00002.ico
    766B
  • fchess.ico
    1.1KB
  • ico00003.ico
    766B
  • toolbar.bmp
    982B
  • icon1.ico
    766B
  • bitmap1.bmp
    87KB
  • tcpsock
  • res
  • ico00001.ico
    766B
  • trysound.ico
    1.1KB
  • tcpsock.rc2
    399B
  • icon1.ico
    766B
  • estdlg.h
    1.2KB
  • tcpsock.clw
    690B
  • tcpsock.aps
    34.7KB
  • ts.h
    1.8KB
  • tcpsock.def
    178B
  • tcpsock.vcp
    11KB
  • stdafx.h
    499B
  • tcpsock.dsw
    539B
  • tcpsock.mdp
    35.5KB
  • tcpsock.bak
    9.3KB
  • tcpsock.mak
    9.3KB
  • tcpsock.exp
    4KB
  • stdafx.cpp
    205B
  • tcpsock.001
    4.3KB
  • tcpsock.cpp
    1.2KB
  • tcpsock.lib
    7.5KB
  • resource.h
    776B
  • tcpsock.rc
    4.7KB
  • tcpsock.dsp
    4.4KB
  • tcpsock.plg
    2KB
  • ts.cpp
    9.2KB
  • estdlg.cpp
    3.5KB
  • fchess.vcp
    13.5KB
  • fchess.cpp
    4KB
  • www.pudn.com.txt
    218B
  • fchess.mak
    7KB
  • fchess.rc
    10KB
  • fchesvw.cpp
    14.1KB
  • fchess.plg
    248B
  • mainfrm.h
    983B
  • tcpsock.dll
    28KB
  • stdafx.h
    306B
  • fchess.h
    961B
  • fchess.mdp
    36KB
  • stdafx.cpp
    204B
  • fchess.dsp
    5KB
  • fchess.exe
    40KB
  • resource.h
    1.6KB
  • fchess.clw
    2.9KB
  • fchesvw.h
    2.9KB
  • messageb.cpp
    915B
  • fchesdoc.cpp
    1.7KB
  • mainfrm.cpp
    2.7KB
  • fchesdoc.h
    1KB
  • fchess.dsw
    537B
  • messageb.h
    762B
内容介绍
// fchesvw.cpp : implementation of the CFchessView class // #include "stdafx.h" #include "winsock.h" #include "fchess.h" #include ".\tcpsock\ts.h" #include "fchesdoc.h" #include "messageb.h" #include "fchesvw.h" //#include "estdlg.h" //#include <afxext.h rel='nofollow' onclick='return false;'> // MFC extensions char szYourTurn[10][40]= {"该你了,加油啊...", "该你了,这小子挺难对付的...", "该你了,看来你要认真思考一下了...", "该你了,这难不倒你的...", "该你了,你可是天下第一哦...", "该你了,加油啊...", "该你了,加油啊...", "该你了,加油啊...", "该你了,加油啊...", "该你了,加油啊..."}; #ifdef _DEBUG #undef THIS_FILE static char BASED_CODE THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CFchessView IMPLEMENT_DYNCREATE(CFchessView, CView) BEGIN_MESSAGE_MAP(CFchessView, CView) ON_MESSAGE(WSA_READ, OnWSARead) //{{AFX_MSG_MAP(CFchessView) ON_COMMAND(ID_GAME_NEW, OnGameNew) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_RBUTTONDOWN() ON_WM_DESTROY() ON_COMMAND(ID_FUNCTION_SENDMESSAGETOOTHER, OnFunctionSendMessage) ON_UPDATE_COMMAND_UI(ID_FUNCTION_SENDMESSAGETOOTHER, OnUpdateFunctionSendMessage) ON_WM_SETCURSOR() ON_COMMAND(ID_GAME_QUITCURRENTGAME, OnAbortGame) ON_UPDATE_COMMAND_UI(ID_GAME_QUITCURRENTGAME, OnUpdateAbortGame) ON_COMMAND(IDM_BEEP, OnBeep) ON_UPDATE_COMMAND_UI(IDM_BEEP, OnUpdateBeep) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CFchessView construction/destruction CFchessView::CFchessView() { srand(time(NULL)); // TODO: add construction code here m_fSound=AfxGetApp()->GetProfileInt("config","sound",1); m_iTotalWin=AfxGetApp()->GetProfileInt("config","tw",0); m_iTotalLost=AfxGetApp()->GetProfileInt("config","tl",0); m_fFirstDeside=m_fEst=m_fCanDeside=FALSE; for(int i=0;i<XVALUE;i++) for(int j=0;j<YVALUE;j++) m_bChessArray[i][j]=0; } CFchessView::~CFchessView() { AfxGetApp()->WriteProfileInt("config","sound",m_fSound); AfxGetApp()->WriteProfileInt("config","tw",m_iTotalWin); AfxGetApp()->WriteProfileInt("config","tl",m_iTotalLost); } BOOL is_five(int* piF) { for(int i=0;i<5;i++) { if(piF[i]==0) return FALSE; } return TRUE; } BOOL is_six(int* piF) { for(int i=0;i<4;i++) { if(piF[i]==0) return FALSE; } return TRUE; } BOOL CFchessView::IsMatch(const int iX,const int iY) {//判断是否连续五颗 int fRes[6]; int x,y,i; memset(fRes,0,sizeof(int)*5); for(x=iX;x<iX+5 && x<XVALUE;x++)// to right { fRes[x-iX]=(m_bChessArray[iX][iY]==m_bChessArray[x][iY])?1:0; } if(is_five(fRes)) return TRUE; memset(fRes,0,sizeof(int)*5); for(y=iY;y<iY+5 && y<YVALUE;y++)// to down { fRes[y-iY]=(m_bChessArray[iX][iY]==m_bChessArray[iX][y])?1:0; } if(is_five(fRes)) return TRUE; memset(fRes,0,sizeof(int)*5); for(x=iX,y=iY;x>=0 && y<YVALUE && x>iX-5 ;x--,y++)// left down { fRes[y-iY]=(m_bChessArray[iX][iY]==m_bChessArray[x][y])?1:0; } if(is_five(fRes)) return TRUE; memset(fRes,0,sizeof(int)*5); for(x=iX,y=iY;x<XVALUE && y<YVALUE && y<iY+5 ;x++,y++)// right down { fRes[x-iX]=(m_bChessArray[iX][iY]==m_bChessArray[x][y])?1:0; } if(is_five(fRes)) return TRUE; return FALSE; } BOOL CFchessView::IsMatch2(const int iX,const int iY) {//判断是否连续四颗 int fRes[6]; int x,y,i; memset(fRes,0,sizeof(int)*4); for(x=iX;x<iX+4 && x<XVALUE;x++)// to right { fRes[x-iX]=(m_bChessArray[iX][iY]==m_bChessArray[x][iY] )?1:0; } if(is_six(fRes)) { if(iX>0 && m_bChessArray[iX-1][iY]==0 && iX+5<XVALUE && m_bChessArray[iX+4][iY]==0) return TRUE; } memset(fRes,0,sizeof(int)*4); for(y=iY;y<iY+4 && y<YVALUE;y++)// to down { fRes[y-iY]=(m_bChessArray[iX][iY]==m_bChessArray[iX][y])?1:0; } if(is_six(fRes)) { if(iY>0 && m_bChessArray[iX][iY-1]==0 && iY+5<YVALUE && m_bChessArray[iX][iY+4]==0) return TRUE; } memset(fRes,0,sizeof(int)*4); for(x=iX,y=iY;x>=0 && y<YVALUE && x>iX-4 ;x--,y++)// left down { fRes[y-iY]=(m_bChessArray[iX][iY]==m_bChessArray[x][y])?1:0; } if(is_six(fRes)) { if(iX>0 && iY+5<YVALUE && m_bChessArray[iX-1][iY+4]==0 && iX+5<XVALUE &&iY>0 && m_bChessArray[iX+4][iY-1]==0) return TRUE; } memset(fRes,0,sizeof(int)*4); for(x=iX,y=iY;x<XVALUE && y<YVALUE && y<iY+4 ;x++,y++)// right down { fRes[x-iX]=(m_bChessArray[iX][iY]==m_bChessArray[x][y])?1:0; } if(is_six(fRes)) { if(iX>0 && iY>0&& m_bChessArray[iX-1][iY-1]==0 && iX+5<XVALUE && iY+5<YVALUE && m_bChessArray[iX+4][iY+4]==0) return TRUE; } return FALSE; } BOOL CFchessView::IsWin(int iChessValue) { for(int y=0;y<YVALUE;y++) for(int x=0;x<XVALUE;x++) { if(m_bChessArray[x][y]==iChessValue) if(IsMatch(x,y)) return TRUE; } for(int y1=1;y1<YVALUE;y1++) for(int x1=1;x1<XVALUE;x1++) { if(m_bChessArray[x1][y1]==iChessValue) if(IsMatch2(x1,y1)) return TRUE; } return FALSE; } BOOL CFchessView::JudgeWin(void) { int iCV=(m_tsComm.IsListenSide())?BLACK_CHESS:WHITE_CHESS; return IsWin(iCV); } BOOL CFchessView::JudgeLost(void) { int iCV=(!m_tsComm.IsListenSide())?BLACK_CHESS:WHITE_CHESS; return IsWin(iCV); } ///////////////////////////////////////////////////////////////////////////// // CFchessView drawing void CFchessView::PlayMessage(void) { if(m_fSound) MessageBeep(MB_ICONQUESTION); } void CFchessView::DrawBoard(CDC* pDC) { CPen penNew(PS_SOLID,1,RGB(0,0,0)),*ppenOld; ppenOld=pDC->SelectObject(&penNew); int iX,iY; iX=iY=XSIZE; for(int i=0;i<XVALUE;i++) {//draw | pDC->MoveTo(XSTART+iX*i,YSTART+0); pDC->LineTo(XSTART+iX*i,YSTART+iY*(YVALUE-1)); } for(int j=0;j<YVALUE;j++) { pDC->MoveTo(XSTART+0,YSTART+iY*j); pDC->LineTo(XSTART+iX*(XVALUE-1),YSTART+iY*j); } pDC->SelectObject(ppenOld); } void CFchessView::DrawChess(CDC* pDC) { HICON hiconB=AfxGetApp()->LoadIcon(IDI_BLACK); HICON hiconW=AfxGetApp()->LoadIcon(IDI_WHITE); HICON hiconLB=AfxGetApp()->LoadIcon(IDI_LASTB); HICON hiconLW=AfxGetApp()->LoadIcon(IDI_LASTW); int iX,iY; iX=iY=XSIZE; for(int i=0;i<XVALUE;i++) for(int j=0;j<YVALUE;j++) { switch(m_bChessArray[i][j]) { case BLACK_CHESS: pDC->DrawIcon(i*iX,j*iY,hiconB); if(i==m_CPLast.bX && j==m_CPLast.bY) pDC->DrawIcon(i*iX,j*iY,hiconLB); break; case WHITE_CHESS: pDC->DrawIcon(i*iX,j*iY,hiconW); if(i==m_CPLast.bX && j==m_CPLast.bY) pDC->DrawIcon(i*iX,j*iY,hiconLW); break; default: break; } } } void CFchessView::DrawCurrent(CDC* pDC) { DrawBoard(pDC); DrawChess(pDC); } void CFchessView::OnDraw(CDC* pDC) { CFchessDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); DrawCurrent(pDC); // TODO: add draw code for native data here } ///////////////////////////////////////////////////////////////////////////// // CFchessView diagnostics #ifdef _DEBUG void CFchessView::AssertValid() const { CView::AssertValid(); } void CFchessView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CFchessDoc* CFchessView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFchessDoc))); return (CFchessDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CFchessView message handlers void CFchessView::OnGameNew() { //Sleep(40); //m_tsComm.Close(); //m_fFirstDeside=m_fEst=m_fCanDeside=FALSE; for(int i=0;i<XVALUE;i++) for(int j=0;j<YVALUE;j++) m_bChessArray[i][j]=0; if(!m_fEst) EstNew(); else { MakeNew(m_CP); m_tsComm.W
评论
    相关推荐
    • 网络五子棋源码.zip
      C# 网络五子棋源码(含服务器端以及客户端)
    • 五子棋网络对战.zip
      游戏代码包含两部分,常规的C/S模式(C代表客户端,S代表服务端) 下载代码后先启动服务器,服务器正常启动后,你会在控制台看到相关的日志(这里注意,服务器是没有做界面管理的),接着启动客户端(可以启动多个客户端)...
    • JAVA做的网络五子棋
      1、能够随时设置棋子风格。 2、能够在局域网中进行网络游戏,也可进入观战模式。 3、可利用自带的信使,在网络中发送信息。
    • VC++网络网络五子棋源码
      网路五子棋是一个典型的网路对弈棋牌类游戏,它由网路五子棋服务器端和网路五子棋客户端两部分组成。  网路五子棋服务器端 网路五子棋服务器端主要包括服务器主界面和服务器设置两部分。  网路五子棋客户端 网路...
    • java五子棋网络游戏,
      java五子棋网络游戏,基于C/S模式,可边下棋边聊天
    • VC网络五子棋
      VC网络游戏开发源码。适合入门的菜鸟们。。速度来学啊
    • 网络五子棋游戏服务器端
      网络五子棋游戏服务器端,设计网络编程、多线程等知识
    • 网络五子棋
      参照网络编程接口,利用VC6.0集成开发工具下MFC,做一个基于人人对战的五子棋游戏,同时支持聊天、悔棋、求和、计时等功能。
    • 网络五子棋游戏
      (1)服务器端为多线程,当判断有偶数个用户连接时,方可开始游戏。 (2)先连接的客户执黑棋,先下。另一客户执白棋。 (3)双方交替下棋,由服务器端程序判断客户本次下棋步骤是否有效,仅将有效的下棋步骤传递给...
    • java实现网络五子棋
      使用网络编程实现五子棋小游戏,适合javaSE阶段的学习,熟悉网络编程,