三战的属性与之类似,刨去政治和魅力这两个内政属性。武力=物攻,统帅=物防,智力=特攻+特防,速度不用说了。HP则由兵力值决定。
依据体感推算,这两个游戏的伤害计算公式应该都是减法公式,同时存在保底伤害(除非有特技影响不然伤害一般不会为0)。
那么如果我们仍然希望单位的特攻与特防分离的话,就可以简单的写出单位的逻辑:定义一个单位的基类,并定义每一种属性。当然这里还要增加一个字符串用来存放单位的名字。
public class unit
{
//unit的基本属性
public string name { get; set; }
public int hitPoint;
public int strength;
public int speed;
public int intelligence;
public int defence;
//unit的技能
}
虽然宝可梦中属性有着个体值、努力值和种族值的差异,但此时我们并不像做的这么复杂。那么这时候就可以建立不同的单位了,首先我们先建立一个模板单位,用来标定数值的参照系,这个单位有100点生命值和10点力量,速度为50,名字叫杂鱼。
class militia : unit
{
public militia()
{
//属性
name = "杂鱼";
hitPoint = 100;
strength = 10;
speed = 50;
intelligence = 10;
defence = 0;
//技能
}
}
杂鱼创建好之后,我们就可以以此为参照设计各种不同的单位了。比如说我要设计一个叫做女骑士的单位,拥有更高的力量、生命值和护甲;以及一个叫做哥布林的单位拥有更少的生命值和更快的速度。
class ladyknight : unit
{
public ladyknight()
{
//属性
name = "ladyknight";
hitPoint = 120;
strength = 11;
speed = 48;
intelligence = 10;
defence = 2;
//技能
}
}
class goblin : unit
{
public goblin()
{
name = "goblin";
hitPoint = 50;
strength = 8;
speed = 55;
intelligence = 5;
defence = 0;