資源簡(jiǎn)介
C語(yǔ)言五子棋包含人機(jī)人人聯(lián)機(jī) 聯(lián)機(jī)(服務(wù)器端未在內(nèi))音樂刪掉了有點(diǎn)大
代碼片段和文件信息
#include“iti.h“
#define C_NAME ??0x01????//玩家名稱指令?此時(shí)后面4個(gè)字節(jié)為字符
#define C_BLACK???0x02????//從機(jī)收到該指令時(shí)表示自己是黑棋?可以先下棋子了
#define C_WHITE???0X03????//從機(jī)收到該指令時(shí)表示自己是白棋?應(yīng)等待服務(wù)器發(fā)來(lái)的黑棋數(shù)據(jù)
#define C_OVER????0x04????//服務(wù)器主動(dòng)切斷與客戶端的聯(lián)系?此后客戶端應(yīng)執(zhí)行?closesocket(my_socket);?關(guān)閉套接字
#define C_WIN?????0x05????//服務(wù)器收到此命令后將發(fā)送?C_OVER指令給客戶端
#define?CHESS_WHITE?0x0a
#define?CHESS_BLACK?0x0b
unsigned?int?Cachebuf[16][16]={0}; //定義棋子在棋盤上的索引
unsigned?int?Now_x?=?0;? //當(dāng)前棋子的x軸索引
unsigned?int?Now_y?=?0; //當(dāng)前棋子的y軸索引
unsigned?int?Last_x?=?0;? //上次棋子的x軸索引
unsigned?int?Last_y?=?0; //上次棋子的y軸索引
unsigned?int?Chess?=?CHESS_BLACK; //黑棋先行
unsigned?int?ifWin?=?0;?????????????????//判斷游戲結(jié)束
char?CHESS_TYPE?=?0;?//棋子類型獲取標(biāo)志
char?M_Flog?=?0; ?//鼠標(biāo)操作允許標(biāo)志
char?sendbuf[10]; ?//發(fā)送數(shù)據(jù)緩沖區(qū)
char?recvbuf[10]; ?//接收數(shù)據(jù)緩沖區(qū)
char?My_Name[20]; ?//存放本機(jī)昵稱??僅前四個(gè)字節(jié)有效
char?Sbuf[20]; ?//數(shù)據(jù)處理的中間變量
char?IPBUF[50]; ?//存放用戶收入的服務(wù)器IP地址
SOCKET??my_socket;
SOCKADDR_IN??host_sin;??//包含服務(wù)器地址信息
/****************************************************************************************************************************
*?Function?Name??:?int?iti()?
*?Description????:?聯(lián)機(jī)對(duì)戰(zhàn)主函數(shù)
*?Input??????????:?None
*?Output?????????:?None
*?Return?????????:?3返回操作界面
****************************************************************************************************************************/
int?iti()
{
????system(“color?0f“);
ifWin=0;
????WSADATA?wsaData;
????WSAStartup(MAKEWORD(22)&wsaData);
????Ip_Input();???//用戶輸入服務(wù)器IP地址?和?玩家昵稱?
my_socket=socket(AF_INETSOCK_STREAM0);
host_sin.sin_addr.S_un.S_addr=inet_addr(IPBUF);??//設(shè)置IP地址
host_sin.sin_family=AF_INET;
host_sin.sin_port=htons(6800); //端口6800
if?(connect(my_socket(SOCKADDR*)&host_sinsizeof(SOCKADDR))?==?SOCKET_ERROR)???//連接服務(wù)器
????{??
????????printf(“連接服務(wù)器失敗?!/n客戶端已停止運(yùn)行“);??
????????closesocket(my_socket);??
????????while(1);
????}??
SendDataPackge(?C_NAME??My_Name[0]?My_Name[1]?My_Name[2]?My_Name[3]??);??//發(fā)送玩家昵稱到服務(wù)器
send(my_socketsendbuf80); ?//發(fā)送一幀數(shù)據(jù)給服務(wù)器
Display_Init(); //初始化顯示區(qū)域
Drow_Checkerboard()?;???//畫棋盤
while(1)
{
recvbuf[0]=0;
while(?recvbuf[0]==0?)
{
recv(my_socketrecvbufsizeof(recvbuf)0); ?//接收來(lái)自這個(gè)服務(wù)器的數(shù)據(jù)???第一次應(yīng)該會(huì)收到服務(wù)器發(fā)送的玩家昵稱
?_sleep(100);
}
ifWin=RacvDataDeal(?recvbuf?); //對(duì)收到的一幀數(shù)據(jù)進(jìn)行解包和處理
if(ifWin==1)
{
Sleep(3000);
return?3;
}
if(?M_Flog?==?1?)?//如果鼠標(biāo)操作允許
{
while(M_Flog?==?1?) //等待落子
{
ifWin=Contrl_Center(?); //控制中心??開始落子
if(ifWin==1)
{
Sleep(3000);
return?3;
}
}
}
}
return?3;
}
void?SendDataPackge(?unsigned?char?Cmd??unsigned?char?Xhunsigned?char?Xlunsigned?char?Yhunsigned?char?Yl?)?
{
sendbuf[0]=0x01;
sendbuf[1]=Cmd;
sendbuf[2]=Xh;
sendbuf[3]=Xl;
sendbuf[4]=Yh;
sendbuf[5]=Yl;
sendbuf[6]=(sendbuf[1]+sendbuf[2]+sendbuf[3]+sendbuf[4]+sendbuf[5])%256; //獲取和校驗(yàn)
sendbuf[7]=0x02;
}
/*
主客之間通信
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????74752??2017-06-13?11:26??C語(yǔ)言五子棋\C語(yǔ)言五子棋\C語(yǔ)言五子棋.exe
?????文件???????4612??2017-06-12?23:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\C語(yǔ)言五子棋.vcxproj
?????文件???????1911??2017-06-12?23:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\C語(yǔ)言五子棋.vcxproj.filters
?????文件????????164??2017-06-02?18:10??C語(yǔ)言五子棋\C語(yǔ)言五子棋\C語(yǔ)言五子棋.vcxproj.user
?????文件???????1074??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\cl.command.1.tlog
?????文件??????36846??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\CL.read.1.tlog
?????文件????????742??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\CL.write.1.tlog
?????文件???????1721??2017-05-25?18:19??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\C語(yǔ)言五子棋.Build.CppClean.log
?????文件?????????63??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\C語(yǔ)言五子棋.lastbuildstate
?????文件???????1230??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\C語(yǔ)言五子棋.log
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????????2??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件???????1082??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件???????2604??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件????????362??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\li
?????文件??????25274??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\main.obj
?????文件??????37001??2017-05-26?07:10??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\menu.obj
?????文件?????658432??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\vc110.idb
?????文件?????135168??2017-05-26?07:11??C語(yǔ)言五子棋\C語(yǔ)言五子棋\Debug\vc110.pdb
?????文件????????330??2017-06-06?19:49??C語(yǔ)言五子棋\C語(yǔ)言五子棋\fight.h
?????文件?????169903??2017-06-06?15:27??C語(yǔ)言五子棋\C語(yǔ)言五子棋\image\人人對(duì)戰(zhàn)\人人對(duì)戰(zhàn)暗.jpg
?????文件??????51157??2017-05-26?18:53??C語(yǔ)言五子棋\C語(yǔ)言五子棋\image\人人對(duì)戰(zhàn)\人人對(duì)戰(zhàn)背景.jpg
............此處省略138個(gè)文件信息
評(píng)論
共有 條評(píng)論