ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:16.61KB ,
资源ID:4174002      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4174002.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网络编程五子棋代码知识分享.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网络编程五子棋代码知识分享.docx

1、网络编程五子棋代码知识分享网络编程五子棋代码#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.colo

2、r; return *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) piec

3、e a;a.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_w

4、in(const 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(co

5、nst size_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

6、(i+2,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;r

7、eturn 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;

8、 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 0;bool Board:draw_game() for(int i=0;i10;i+)

9、for(int 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;SOC

10、KET sockSrv=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

11、;int 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)/确保客户端服务器交替下棋的死循

12、环while(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)c

13、outCongratulations!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_

14、win(x_t) coutCongratulations!X Wins!endl;break; if(board.draw_game() coutDrawn Game!endl; break; closesocket(sockConn);return 0;#include #include #includeusing namespace std;class piece/piece class char color;int x,y;int win_probability;public : friend ostream& operator(ostream& os,const piece &obje

15、ct);friend class Board;int Chess(char c)color=c; return 0; piece& operator=(const piece c)color=c.color;return *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/board class piece b1010;public: Board() for(int

16、 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.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

17、_t x,const size_t y,const char &a);bool o_win(const char&);/check o winsbool x_win(const char&);/check x wins bool draw_game();/check drawn 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!=

18、10;j+)coutbij.color; coutendl; return 0;bool Board:Compare(const size_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

19、+) for(i=0;i6;i+)if(Compare(i,j,a)&Compare(i+1,j,a)&Compare(i+2,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(

20、i+2,j-2,a)&Compare(i+3,j-3,a)&Compare(i+4,j-4,a)return 1;return 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)&Com

21、pare(i+2,j+2,a)&Compare(i+3,j+3,a)&Compare(i+4,j+4,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-

22、4,a)return 1;return 0;bool Board:draw_game() for(int i=0;i10;i+)for(int 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.wVe

23、rsion)!=1|HIBYTE(wsaData.wVersion)!=1)WSACleanup();return 0;SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);/创建套接字SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);/把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序,/127.0.0.1是回送地址,指本机,一般用来测试使用addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);c

24、onnect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);/向服务器发送请求Board board; int x,y; const char x_t(x),o(o); coutBoard there are 9 lines of 9endl;board.Display_board(); while(1)/确保客户端服务器交替下棋的死循环while(1) coutxy;if(board.Compare(x,y,o)|board.Compare(x,y,x_t)coutinput being!9|y9|x=0|y=0)coutCross-bord

25、er!endl; else char sendBuf2=x+0,y+0; send(sockClient,sendBuf,100,0); board.modify_color(x,y,o);coutSend data.endl;break;board.Display_board();if(board.o_win(o) coutCongratulations!O Wins!endl; break;while(1)/保证客户端下完棋才轮流服务器端下棋的死循环 char revBuf2=a;/给数组第一个元素赋值用于标记是否接收了数据,客户端会做限制,不可能发送过来字符a coutPlease wa

26、itting.endl;while(1)/等待接收客户端数据的死循环 recv(sockClient,revBuf,100,0);/接收数据if(revBuf0!=a)/判断是否接收的了数据 coutReceive data.endl;break; x=revBuf0-0;y=revBuf1-0;board.modify_color(x,y,x_t);break; board.Display_board();if(board.x_win(x_t) coutCongratulations!X Wins!endl;break; if(board.draw_game() coutDrawn Game!endl; break; closesocket(sockClient);WSACleanup();return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1