一个游戏中有多种怪物(Monster),怪物之间可能要发生战斗(fight),每场战斗都是一个怪物与另一怪物之间的一对一战斗。每个怪物都有自己的生命值(hitpoint)、攻击力值(damage)和防御力值(defense),每种怪物都有各自特有的攻击(attack)方式,产生相应的攻击效果;战斗时,两个怪物依次攻击对方,即怪物a首先攻击怪物b, 然后轮到怪物b攻击怪物a, 之后,怪物a再次攻击怪物b,…, 直到一方生命值为0。作为怪物的特例,猫和狗的攻击效果如下表所示。猫进攻导致对方的生命值减少量:(猫的攻击力值 * 2 — 对方的防御力值) 若上式小于1,则取1狗进攻导致对方的生命值减少量:(狗的攻击力值 — 对方的防御力值 +5 )*2 若上式小于2,则取2根据给出的描述,最适当的Monster类定义是:
A. class Monster {public:virtual ~Monster( );virtual bool fight (Monster & other) = 0;private:virtual bool attack(Monster & other) = 0;};
B. class Monster {public:virtual ~Monster( );bool fight (Monster & other) ;private:virtual bool attack(Monster & other) = 0;};
C. class Monster {public:virtual ~Monster( );virtual bool fight (Monster & other) = 0;private:bool attack(Monster & other) ;};
D. class Monster {public:bool fight (Monster & other);private:bool attack(Monster & other);};