网络编程五子棋代码(21页).doc
《网络编程五子棋代码(21页).doc》由会员分享,可在线阅读,更多相关《网络编程五子棋代码(21页).doc(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、-网络编程五子棋代码-第 21 页#include #include #include #includeusing namespace std;/定义棋子类class piecechar color;int x,y;int win_probability;public : friend ostream& operator(ostream& os,const piece &object);friend class Board;int Chess(char c) color=c; return 0; piece& operator=(const piece c) color=c.color; re
2、turn *this; int set_coordinate(int i,int j)x=i;y=j;return 0;/棋子类的输入操作符ostream &operator(ostream& os,const piece &object) osobject.color;return os;/定义棋盘类class Board piece b1010;public: Board() for(int i=0;i!=10;i+)for(int j=0;j!=10;j+) if(i=0&j=0)piece a; a.Chess( );bij=a; else if(i=0&j!=0) piece a;a
3、.Chess(j+0); bij=a; else if(j=0&i!=0)piece a;a.Chess(i+0);bij=a; else piece a;a.Chess(_);bij=a;int modify_color(const size_t &x,const size_t &y,const char &);/设置棋子类的颜色属性的函数 int Display_board();/输出当前棋盘状态的函数 bool Compare(const size_t x,const size_t y,const char &a);/比较坐标为x,y的棋子的color与参数a bool o_win(co
4、nst char&);/判断o方是否获胜 bool x_win(const char&);/判断x放是否获胜 bool draw_game();/判断是否和棋;int Board:modify_color(const size_t &x,const size_t &y,const char &c)bxy.Chess(c);return 0;int Board:Display_board() for(int i=0;i!=10;i+) for(int j=0;j!=10;j+) coutbij.color;coutendl; return 0;bool Board:Compare(const s
5、ize_t x,const size_t y,const char &a)return bxy.color=a; bool Board:o_win(const char& a)int i,j; for(i=0;i10;i+) for(j=0;j6;j+)if(Compare(i,j,a)&Compare(i,j+1,a)&Compare(i,j+2,a)&Compare(i,j+3,a)&Compare(i,j+4,a) return 1;for(j=0;j10;j+) for(i=0;i6;i+) if(Compare(i,j,a)&Compare(i+1,j,a)&Compare(i+2,
6、j,a)&Compare(i+3,j,a)&Compare(i+4,j,a)return 1;for(i=0;i6;i+)for(j=0;j6;j+)if(Compare(i,j,a)&Compare(i+1,j+1,a)&Compare(i+2,j+2,a)&Compare(i+3,j+3,a)&Compare(i+4,j+4,a)return 1;for(i=0;i3;j-) if(Compare(i,j,a)&Compare(i+1,j-1,a)&Compare(i+2,j-2,a)&Compare(i+3,j-3,a)&Compare(i+4,j-4,a)return 1;return
7、 0;bool Board:x_win(const char&a)int i,j;for(i=0;i10;i+)for(j=0;j6;j+)if(Compare(i,j,a)&Compare(i,j+1,a)&Compare(i,j+2,a)&Compare(i,j+3,a)&Compare(i,j+4,a)return 1;for(j=0;j10;j+)for(i=0;i6;i+)if(Compare(i,j,a)&Compare(i+1,j+1,a)&Compare(i+2,j+2,a)&Compare(i+3,j+3,a)&Compare(i+4,j+4,a)return 1; for(
8、i=0;i6;i+)for(j=0;j6;j+) if(Compare(i,j,a)&Compare(i+1,j+1,a)&Compare(i+2,j+2,a)&Compare(i+3,j+3,a)&Compare(i+4,j+4,a)return 1;for(i=0;i3;j-)if(Compare(i,j,a)&Compare(i+1,j-1,a)&Compare(i+2,j-2,a)&Compare(i+3,j-3,a)&Compare(i+4,j-4,a)return 1; return 0;bool Board:draw_game() for(int i=0;i10;i+)for(i
9、nt j=0;j10;j+) if(Compare(i,j,_)return 0;return 1;int main() /加载套接字WORD wVersionRequested;WSADATA wsaData; int err;wVersionRequested=MAKEWORD(1,1);err=WSAStartup(wVersionRequested,&wsaData);if (err!=0)return 0;if (LOBYTE(wsaData.wVersion)!=1|HIBYTE(wsaData.wVersion)!=1)WSACleanup();return 0;SOCKET s
10、ockSrv=socket(AF_INET,SOCK_STREAM,0);/创建监听的套接字SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);/把主机字节顺序转换为TCP/IP网络字节顺序addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);/绑定套接字listen(sockSrv,5);/监听用户请求SOCKADDR_IN addrClient;int
11、len=sizeof(SOCKADDR);coutWelcome,The server is started!endlPlease waiting for Player to join.endl;SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);/等待用户请求到来 Board board;int x,y; const char x_t(x),o(o);coutBoard there are 9 lines of 9endl;board.Display_board();while(1)/确保客户端服务器交替下棋的死循环whil
12、e(1)/保证客户端下完棋才轮流服务器端下棋的死循环 char revBuf2=a;/给数组第一个元素赋值用于标记是否接收了数据,客户端会做限制,不可能发送过来字符a while(1)/等待接收客户端数据的死循环 recv(sockConn,revBuf,100,0);/接收数据 if(revBuf0!=a)/判断是否接收的了数据 coutReceive data.endl; break;x=revBuf0-0;y=revBuf1-0; board.modify_color(x,y,o);break; board.Display_board(); if(board.o_win(o)coutCo
13、ngratulations!O Wins!endl; break; while(1) coutxy; if(board.Compare(x,y,o)|board.Compare(x,y,x_t)coutinput being!9|y9|x=0|y=0) coutCross-border!endl; else char sendBuf2=x+0,y+0;board.modify_color(x,y,x_t);send(sockConn,sendBuf,100,0);coutSend data.endl; break; board.Display_board(); if(board.x_win(x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 五子棋 代码 21
限制150内