//回调函数
//以下是函数指针类型
//初始化游戏
typedef void(*INIT_GAME)(void ** gameHandle, char * name);
//游戏战斗 返回游戏战斗结果 如果是1 代表游戏胜利 返回0 代表战斗失败
typedef int(*FIGHT_GAME)(void * gamehandle, int gameLevel);
//查看玩家信息
typedef void(*PRINT_GAME)(void * gameHandle);
//离开游戏
typedef void(*CLOSE_GAME)(void * gameHandle);
//形参都是传入的函数指针
void playGame(INIT_GAME init, FIGHT_GAME fight, PRINT_GAME printGame, CLOSE_GAME closeGame)
{
//初始化游戏
void * gameHandel = NULL;
printf("请输入玩家的姓名:\n");
char name[64];
scanf("%s", name);//sscanf会直接略过 打印下面的信息*****
init(&gameHandel, name);
//游戏战斗
int level = -1;
while (1)
{
getchar();
system("cls");
printf("请选择游戏难度:\n");
printf("1、普通\n");
printf("2、中等\n");
printf("3、困难\n");
scanf("%d", &level);//scanf sscanf 差别?
getchar();//****重点
int ret = fight(gameHandel, level);
if (ret == 0)
{
printf("挑战失败\n");
break;
}
else
{
printf("挑战成功\n");
printGame(gameHandel);
}
}
//printf("请选择游戏难度:\n");
//printf("1、普通\n");
//printf("2、中等\n");
//printf("3、困难\n");
//scanf("%d", &level);//scanf sscanf 差别?
//int ret = fight(gameHandel, level);
//if (ret == 0)
// printf("挑战失败\n");
//else
//{
// printf("挑战成功\n");
// printGame(gameHandel);
//}
//离开游戏
closeGame(gameHandel);
}
void main()
{
srand((unsigned int)time(NULL));
playGame(INIT_GAME_COMPANY, FIGHT_GAME_COMPANY, PRINT_GAME_COMPANY, CLOSE_GAME_COMPANY);
system("pause");
}