游戏协议

来源:互联网 发布:淘宝卖家查看店铺粉丝 编辑:程序博客网 时间:2024/04/26 12:06
#include<iostream>using namespace std;enum Protocol                  {login2,enterbattle};                             //首先声明一个枚举类型作为协议定义,枚举值为0即为login2表示传输的是登陆信息,枚举值为1即为enterbattle表示传输的是进入战斗信息struct _LOGIN{enum Protocol protocol;    char account[10];char password[10];};//然后是协议的结构体定义,所有的协议结构体定义的第一个数据类型都是协议枚举,表示传递的是什么信息,后面的是这个信息附带的数据,//这里是一个登录信息的结构体,后面附有登录账号和登录密码信息。void LOGIN(void *msg){struct _LOGIN* login1=(_LOGIN*)msg;cout<<"login"<<endl<<login1->account<<endl<<login1->password<<endl;}//然后这里是一个处理登录信息的函数,函数参数为空类型指针,用于传递各种类型的指针(感觉这里也可以用_LOGIN结构体类型的指针,//因为这就是一个处理登录信息的函数,传递的实参肯定是_LOGIN结构体类型的指针)//这里先声明一个登录结构体的指针,然后将空类型的参数强制类型转换成登录结构体类型的指针,再赋值给声明的结构体指针//然后通过结构指针用->访问传递的信息void (*act[2]) (void *msg);//这里是声明的一个函数指针数组,这个函数指针的数组的用处就在于当传递的信息不同时,调用不同的函数处理这个信息,//函数数组的大小就是需要处理的不同类型的信息的个数,也就是可能需要调用的处理信息的函数的个数,//函数参数为空类型指针用于传递各种类型的指针//协议枚举的值即对应着函数指针数组中的值,int main(){struct _LOGIN login;login.protocol=login2;cin>>login.account>>login.password;act[0]=LOGIN;act[login.protocol]((void*)&login);return 0;}

0 0
原创粉丝点击