游戏协议

#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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值