作者:龙之骄
int power, temp, attack, pow;
int random(int limit); //取小于limit的随机数
int Damage()
{
attack = 攻击方的攻击力 - 被攻击方的防御力;
power = 攻击方的力量 - 被攻击方的力量;
if (power < 0)
power++;
pow = power / 2;
if (pow <- 20)
pow = -20;
if (pow > 30)
pow = 30;
if (attack <= 0)
{ //attack<=0
attack = random(5) + 3;
if (pow < 0)
pow = 0;
return situation_1();
}
else if (attack < 10)
{ //0<attack<10
if (attack==7 || attack == 8 || attack == 9) //7、8、9
attack = random(attack + 4) + 9;
else if (attack == 1 || attack == 2) //1、2
attack = random(attack + 4) + 7;
else //3、4、5、6
attack = random(attack + 4) + 8;
if (pow < 0)
pow = 0;
return situation_1();
}
else
{ //attack>=10
if (pow < 0)
return situation_2();
else
return situation_1();
}
}
int fun_result()
{
if(pow<=0)
{
pow = random(16);
if (pow > 10)
pow = 1;
if (pow < 3)
pow = 5;
}
return pow;
}
int situation_1()
{
power = random(3 * attack / 10);
temp = pow - power;
temp = temp - random(pow / 2);
pow = random(pow / 2) + attack + temp;
return fun_result();
}
int situation_2()
{
power = -attack / 2;
if (pow < power)
pow = power;
power = pow;
temp = -power;
power = attack * 3;
pow = pow - random(3 * attack / 10);
pow = pow - random(temp / 2);
pow = pow + random(temp / 2) + attack;
return fun_result();
没有写注释,我简单说明一下。
共有4个变量,power, temp, attack, pow。temp是一个用来保持临时结果的变量,没什么实际意义。power为攻守双方的力量差。attack为攻守双方的攻击力和防御力的差,pow与power有关。
Damage()函数负责计算伤害值,但闪避和暴击不是在该函数中处理。函数一开始先初始化power,attack,pow,然后根据pow(即攻守双方的力量差)处在哪一个区间,先重置pow。
再判断attack(即攻守双方的攻击力和防御力的差),如果attack<0,进行一些处理后(也就是设置attack和power)调用 situation_1()函数用以计算伤害值;如果0<attack<10,则进行一些处理后(同样也是设置attack和power)调用situation_1()函数用以计算伤害值;如果attack>=10,再分pow是否小于0,如果小于0则用situation_2()计算伤害值,否则用situation_1()计算伤害值。