相较于LOL与dota2王者荣耀的抗性计算还算容易,笔者在此进行简单的编程,以完成所需的功能。
#include <stdio.h>
//a为实际防御,b为固定穿透,c为百分比穿透,x为实际的抗性,A为攻击力
double jisuan(double x)
{
return (1- (602.0/(602.0+x)));
}
int main(void)
{
double x,y;
double a ,b;
double c;
int d;
double i;
double A;
printf("请当前防御值:");
scanf_s("%lf",&a);
printf("当前固定穿透:");
scanf_s("%lf",&b);
printf("是否有百分比穿透:");
scanf_s("%d",&d);
if (d == 1)
{
c = 0.4;
x = (a-b)*(1-c);
}
else
{
c = 0;
x = (a - b)*(1-c);
}
printf("受击目标的伤害衰减为%.2lf ,每1000点伤害会衰减为%.1lf\n", jisuan(x),1000*(1-jisuan(x)));
for (i=0;i<a;i=i+1)
{
y = (i - b)*(1 - c);
if (jisuan(y) > 0.1)
{
break;
}
}
printf("在该属性下对防御值低于%.2lf的单位伤害近似为真实伤害\n", i);
printf("当前攻击为:");
scanf_s("%lf",&A);
printf("当前攻击下普通攻击衰减为:%lf,%lf(暴击)", A * (1 - jisuan(x)), 2.5*A * (1 - jisuan(x)));
return 0;
}
实际实验,误差在可以 接受范围内。