/*
* @Author: your name
* @Date: 2021-03-18 16:33:29
* @LastEditTime: 2021-03-19 09:28:02
* @LastEditors: your name
* @Description: In User Settings Edit
* @FilePath: \YueQianC_Daima.1\3.18\6.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef enum Color //枚举函数
{
red = 0,//栈空间
blue = 1//栈空间
} color;
//红buff
typedef struct red
{
int hit; //伤害
color color; //颜色
int RecoverLife; //生命恢复
/* data */
}S_R, *S_P;
//蓝buff
typedef struct blue
{
int cooling; //冷却
color color; //颜色
int RecoverMana; //法力恢复
}S_B, *S_q;
// 两种buff只能选择一种
typedef union buff //联合函数
{
S_R red;
S_B blue;
/* data */
}buf,*buff;
buff level_red(buff r, int i);
buff level_blue(buff b, int i);
int main()
{
int mask = 0; //判断红蓝,0=红,1=蓝 //常量区
buff r=(buff)malloc(sizeof(buf));//堆空间
//malloc在这里
buff b=(buff)malloc(sizeof(buf));//堆空间
int level; //常量区
printf("红buff按0,蓝buff,按1");
scanf("%d", &mask);
printf("输入你想要的buff等级");
scanf("%d", &level);
if (mask == 0)
{
level_red(r, level);
r=level_red(r, level);
printf("获得红buff\n伤害:%4d\n颜色:%4d\n生命恢复:%4d\n",
r->red.hit,
r->red.color,
r->red.RecoverLife);
}
else if (mask == 1)
{
level_blue(b, level);
b=level_blue(b, level);
printf("获得蓝buff\n冷却:%4d\n颜色:%4d\n法力恢复:%4d\n",
b->blue.cooling,
b->blue.color,
b->blue.RecoverMana);
}
else
{
printf("input error!");
}
free(r);
free(b);
return 0;
}
//红蓝buff等级计算方式
buff level_red(buff r, int i) //栈空间
{
r->red.hit = 15 * i; //每一级的伤害按照15的倍数翻倍
r->red.RecoverLife = 5 * i; //每级的回血按照5翻倍
r->red.color = 0; //红色buff的颜色为红
return r;
}
buff level_blue(buff b, int i) //栈空间
{
b->blue.cooling = 3 * i; //每一级的伤害按照3的倍数翻倍
b->blue.RecoverMana = 5 * i; //每级的回蓝按照5翻倍
b->blue.color = 1; //红色buff的颜色为红
return b;
}
