最新网络编程五子棋代码.docx

上传人:b****5 文档编号:6601032 上传时间:2023-01-08 格式:DOCX 页数:15 大小:129.46KB
下载 相关 举报
最新网络编程五子棋代码.docx_第1页
第1页 / 共15页
最新网络编程五子棋代码.docx_第2页
第2页 / 共15页
最新网络编程五子棋代码.docx_第3页
第3页 / 共15页
最新网络编程五子棋代码.docx_第4页
第4页 / 共15页
最新网络编程五子棋代码.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

最新网络编程五子棋代码.docx

《最新网络编程五子棋代码.docx》由会员分享,可在线阅读,更多相关《最新网络编程五子棋代码.docx(15页珍藏版)》请在冰豆网上搜索。

最新网络编程五子棋代码.docx

最新网络编程五子棋代码

#include

#include

#include

#include

usingnamespacestd;

//定义棋子类

classpiece{

charcolor;

intx,y;

intwin_probability;

public:

friendostream&operator<<(ostream&os,constpiece&object);

friendclassBoard;

intChess(charc){

color=c;return0;

}

piece&operator=(constpiecec){

color=c.color;

return*this;

}

intset_coordinate(inti,intj){

x=i;

y=j;

return0;

}

};

//棋子类的输入操作符ostream&operator<<(ostream&os,constpiece&object){

os<

returnos;

}

//定义棋盘类

classBoard{

pieceb[10][10];

public:

Board(){

for(inti=0;i!

=10;i++)

for(intj=0;j!

=10;j++)

if(i==0&&j==0){

piecea;a.Chess('');

b[i][j]=a;

}

elseif(i==0&&j!

=0){

piecea;

a.Chess(j+'0');

b[i][j]=a;

}

elseif(j==0&&i!

=0){

piecea;

a.Chess(i+'0');

b[i][j]=a;

}

else{

piecea;

a.Chess('_');

b[i][j]=a;

}

}

intmodify_color(constsize_t&x,constsize_t&y,constchar&);//设置棋子类的颜色属性的函数

intDisplay_board();//输出当前棋盘状态的函数

boolCompare(constsize_tx,constsize_ty,constchar&a);//比较坐标为x,y的棋子的color与参数a

boolo_win(constchar&);//判断o方是否获胜

boolx_win(constchar&);//判断x放是否获胜

booldraw_game();//判断是否和棋

};

intBoard:

:

modify_color(constsize_t&x,constsize_t&y,constchar&c){

b[x][y].Chess(c);

return0;

}

intBoard:

:

Display_board(){

for(inti=0;i!

=10;i++){

for(intj=0;j!

=10;j++)

cout<

cout<

}

return0;

}

boolBoard:

:

Compare(constsize_tx,constsize_ty,constchar&a){

returnb[x][y].color==a;

}

boolBoard:

:

o_win(constchar&a){

inti,j;

for(i=0;i<10;i++)

for(j=0;j<6;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))

return1;

for(j=0;j<10;j++)

for(i=0;i<6;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))

return1;

for(i=0;i<6;i++)

for(j=0;j<6;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))

return1;

for(i=0;i<6;i++)

for(j=9;j>3;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))

return1;

return0;

}

boolBoard:

:

x_win(constchar&a){

inti,j;

for(i=0;i<10;i++)

for(j=0;j<6;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))

return1;

for(j=0;j<10;j++)

for(i=0;i<6;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))

return1;

for(i=0;i<6;i++)

for(j=0;j<6;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))

return1;

for(i=0;i<6;i++)

for(j=9;j>3;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))

return1;

return0;

}

boolBoard:

:

draw_game(){

for(inti=0;i<10;i++)

for(intj=0;j<10;j++){

if(Compare(i,j,'_'))

return0;

}

return1;

}

intmain(){//加载套接字

WORDwVersionRequested; 

WSADATAwsaData;

interr; 

wVersionRequested=MAKEWORD(1,1);

err=WSAStartup(wVersionRequested,&wsaData); 

if(err!

=0){ 

return0; 

if(LOBYTE(wsaData.wVersion)!

=1||HIBYTE(wsaData.wVersion)!

=1){ 

WSACleanup(); 

return0; 

SOCKETsockSrv=socket(AF_INET,SOCK_STREAM,0);//创建监听的套接字 

SOCKADDR_INaddrSrv; 

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_INaddrClient; 

intlen=sizeof(SOCKADDR); 

cout<<"Welcome,Theserverisstarted!

"<

SOCKETsockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);//等待用户请求到来Boardboard;

intx,y;constcharx_t('x'),o('o');

cout<<"Boardthereare9linesof9"<

board.Display_board();

while

(1){//确保客户端服务器交替下棋的死循环

while

(1){//保证客户端下完棋才轮流服务器端下棋的死循环

charrevBuf[2]={'a'};//给数组第一个元素赋值用于标记是否接收了数据,客户端会做限制,不可能发送过来字符'a'

while

(1){//等待接收客户端数据的死循环

recv(sockConn,revBuf,100,0);//接收数据

if(revBuf[0]!

='a'){//判断是否接收的了数据

cout<<"Receivedata..."<

}

}

x=revBuf[0]-'0';

y=revBuf[1]-'0';

board.modify_color(x,y,o);

break;

}

board.Display_board();

if(board.o_win(o)){

cout<<"Congratulations!

OWins!

"<

}

while

(1){

cout<<"Pleaseenterthecoordinatesofx:

";

cin>>x>>y;

if(board.Compare(x,y,o)||board.Compare(x,y,x_t))

cout<<"inputbeing!

"<

if(x>9||y>9||x==0||y==0)

cout<<"Cross-border!

!

!

"<

else{

charsendBuf[2]={x+'0',y+'0'};

board.modify_color(x,y,x_t);

send(sockConn,sendBuf,100,0);

cout<<"Senddata..."<

}

}

board.Display_board();

if(board.x_win(x_t)){

cout<<"Congratulations!

XWins!

"<

break;

}

if(board.draw_game()){

cout<<"DrawnGame!

"<

}

}

closesocket(sockConn);

return0;

}

 

#include

#include

#include

usingnamespacestd;

classpiece{//piececlass

charcolor;

intx,y;

intwin_probability;

public:

friendostream&operator<<(ostream&os,constpiece&object);

friendclassBoard;

intChess(charc){

color=c;return0;

}

piece&operator=(constpiecec){

color=c.color;

return*this;

}

intset_coordinate(inti,intj){

x=i;

y=j;

return0;

}

};

ostream&operator<<(ostream&os,constpiece&object){

os<

returnos;

}

classBoard{//boardclass

pieceb[10][10];

public:

Board(){

for(inti=0;i!

=10;i++)

for(intj=0;j!

=10;j++)

if(i==0&&j==0){

piecea;

a.Chess('');

b[i][j]=a;

}

elseif(i==0&&j!

=0){

piecea;

a.Chess(j+'0');

b[i][j]=a;

}

elseif(j==0&&i!

=0){

piecea;

a.Chess(i+'0');

b[i][j]=a;

}

else{

piecea;

a.Chess('_');

b[i][j]=a;

}

}

intmodify_color(constsize_t&x,constsize_t&y,constchar&);

intDisplay_board();

boolCompare(constsize_tx,constsize_ty,constchar&a);

boolo_win(constchar&);//checkowins

boolx_win(constchar&);//checkxwins

booldraw_game();//checkdrawngame

};

intBoard:

:

modify_color(constsize_t&x,constsize_t&y,constchar&c){

b[x][y].Chess(c);

return0;

}

intBoard:

:

Display_board(){

for(inti=0;i!

=10;i++){

for(intj=0;j!

=10;j++)

cout<

cout<

}

return0;

}

boolBoard:

:

Compare(constsize_tx,constsize_ty,constchar&a){

returnb[x][y].color==a;

}

boolBoard:

:

o_win(constchar&a){

inti,j;

for(i=0;i<10;i++)

for(j=0;j<6;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))

return1;

for(j=0;j<10;j++)

for(i=0;i<6;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))

return1;

for(i=0;i<6;i++)

for(j=0;j<6;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))

return1;

for(i=0;i<6;i++)

for(j=9;j>3;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))

return1;

return0;

}

boolBoard:

:

x_win(constchar&a){

inti,j;

for(i=0;i<10;i++)

for(j=0;j<6;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))

return1;

for(j=0;j<10;j++)

for(i=0;i<6;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))

一、return1;

二、for(i=0;i<6;i++)

三、for(j=0;j<6;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))

五、return1;

六、for(i=0;i<6;i++)

七、for(j=9;j>3;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))

九、return1;

一十、return0;

一十一、}

一十二、boolBoard:

:

draw_game(){

一十三、for(inti=0;i<10;i++)

一十四、for(intj=0;j<10;j++){

一十五、if(Compare(i,j,'_'))

一十六、return0;

一十七、}

一十八、return1;

一十九、}

二十、

二十一、intmain(){

二十二、WORDwVersionRequested;//加载套接字

二十三、WSADATAwsaData;interr; 

二十四、wVersionRequested=MAKEWORD(1,1);

二十五、err=WSAStartup(wVersionRequested,&wsaData); 

二十六、if(err!

=0){ 

二十七、return0; 

二十八、} 

二十九、if(LOBYTE(wsaData.wVersion)!

=1||HIBYTE(wsaData.wVersion)!

=1){ 

三十、WSACleanup(); 

三十一、return0; 

三十二、} 

三十三、SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0);//创建套接字 

三十四、SOCKADDR_INaddrSrv; 

三十五、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);

三十八、connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//向服务器发送请求

三十九、Boardboard;

四十、intx,y;

四十一、constcharx_t('x'),o('o');

四十二、cout<<"Boardthereare9linesof9"<

四十三、board.Display_board();

四十四、while

(1){//确保客户端服务器交替下棋的死循环

四十五、while

(1){

四十六、cout<<"Pleaseenterthecoordinatesofo:

";

四十七、cin>>x>>y;

四十八、if(board.Compare(x,y,o)||board.Compare(x,y,x_t))

四十九、cout<<"inputbeing!

"<

五十、if(x>9||y>9||x==0||y==0)

五十一、cout<<"Cross-border!

!

!

"<

五十二、else{

五十三、charsendBuf[2]={x+'0',y+'0'

五十四、};

五十五、send(sockClient,sendBuf,100,0);

五十六、board.modify_color(x,y,o);

五十七、cout<<"Senddata..."<

五十八、break;

五十九、}

六十、}

六十一、

六十二、board.Display_board();

六十三、if(board.o_win(o)){cout<<"Congratulations!

OWins!

"<

六十四、}

六十五、while

(1){//保证客户端下完棋才轮流服务器端下棋的死循环

六十六、charrevBuf[2]={'a'};//给数组第一个元素赋值用于标记是否接收了数据,客户端会做限制,不可能发送过来字符'a'

六十七、cout<<"Pleasewaitting..."<

六十八、while

(1){//等待接收客户端数据的死循环

六十九、recv(sockClient,revBuf,100,0);//接收数据

七十、if(revBuf[0]!

='a'){//判断是否接收的了数据

七十一、cout<<"Receivedata..."<

七十二、break;

七十三、}

七十四、}

七十五、x=revBuf[0]-'0';

七十六、y=revBuf[1]-'0';

七十七、board.modify_color(x,y,x_t);

七十八、break;

七十九、}

八十、board.Display_board();

八十一、if(board.x_win(x_t)){

八十二、cout<<"Congratulations!

XWins!

"<

八十三、break;

八十四、}

八十五、if(board.draw_game()){

八十六、cout<<"DrawnGame!

"<

八十七、}

八十八、}

八十九、closesocket(sockClient);

九十、WSACleanup();

九十一、return0;

九十二、}基本原理介绍

红外触摸屏的工作原理是在触摸屏的四周布满红外接收管和红外发射管,这些红外管在触摸屏表面呈一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

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

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