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