




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#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; 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) 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_t x,const size_t y,const char &a);/比较坐标为x,y的棋子的color与参数a bool o_win(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(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+) 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(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)&Compare(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-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.wVersion)!=1|HIBYTE(wsaData.wVersion)!=1)WSACleanup();return 0;SOCKET 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;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)/确保客户端服务器交替下棋的死循环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)coutCongratulations!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_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 &object);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 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_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!=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+) 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(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)&Compare(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-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.wVersion)!=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();/把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序,/是回送地址,指本机,一般用来测试使用addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);connect(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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水表检定基础知识培训总结
- 钢结构施工防水与排水方案
- 消防设施消防系统数据同步方案
- 氢能产业园氢能产业市场的供应与需求分析
- 建筑工程项目临时用水与排水系统方案
- 混凝土施工中的原材料质量检测方案
- 施工人员培训方案
- 水电站安全知识培训课件讲座
- 知识点2.2熟悉色彩的体系设计构成设计色彩60课件
- 水电师傅基础知识培训课件
- 驾考题库及答案大全
- 医疗废物与污水处理培训
- 康复科疾病护理
- 4S店员工职业卫生培训
- 地下通道水泵房管理制度
- 溺水患者急救培训
- 2026版步步高大一轮高考数学复习讲义第十章 §10.1 计数原理与排列组合含答案
- 人力公司营销策划方案
- 医院医疗用房管理制度
- 股权代持协议终止协议书
- 国际压力性损伤溃疡预防和治疗临床指南(2025年版)解读
评论
0/150
提交评论