using System;
public class Test{
class JoshiKosei : Human{
public int MP ,Avoid, MagicAttack ;
public JoshiKosei(int _MP ,int _Avoid ,int _MagicAttack ,
int _Attack,int _Defence,int _HP,string _Name)
:base(true, _Attack, _Defence, _HP, _Name){
MP = _MP;Avoid = _Avoid; MagicAttack = _MagicAttack;
}
public override int Assault() {
Console.WriteLine("OverrideAssault" + Name);
return base.Assault() + MagicAttack;
}
public override void Damaged(Human Enemy) {
Console.WriteLine("OverrideDamage"+ Name );
int damage = - Defence+Enemy.Assault();
if (damage > 0) HP -= damage;
}
}
static void Ex3() {
Human Kyon = new Human(false, 100, 200, 150, "キョン");
JoshiKosei Chihaya = new JoshiKosei(720, 72, 720, 72, 72, 72, "如月千早");
Human Freeza = new Human(false, 530000, 530000, 530000, "フリーザ");
JoshiKosei Nagato = new JoshiKosei(10000, 50, 500000, 60, 60, 60, "長門有希");
Human[] HumanArray = new Human[] {Kyon,Chihaya,Freeza,Nagato };
foreach(Human Offence in HumanArray){
foreach(Human Defence in HumanArray){
if (!Offence.Equals(Defence)) {
Defence.Damaged(Offence);
}
}
}
}
class Human{
public virtual int Assault(){
Console.WriteLine("Assault"+ Name );
return Attack;
}
public virtual void Damaged(Human Enemy){
Console.WriteLine("Damage"+ Name );
int damage = -Defence + Enemy.Assault();
if (damage > 0) HP -= damage;
}
public readonly bool isGirl;
public int Attack, Defence, HP;
public readonly string Name;
public Human(bool _isGirl,int _Attack,int _Defence,int _HP,string _Name) {
isGirl = _isGirl;
Attack = _Attack; Defence = _Defence;
HP = _HP ; Name = _Name;
}
}
static void Main() {
Ex3();
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3R7CgljbGFzcyBKb3NoaUtvc2VpIDogSHVtYW57CiAgICAgICAgcHVibGljIGludCBNUCAsQXZvaWQsIE1hZ2ljQXR0YWNrIDsKICAgICAgICBwdWJsaWMgSm9zaGlLb3NlaShpbnQgX01QICxpbnQgX0F2b2lkICxpbnQgX01hZ2ljQXR0YWNrICwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX0F0dGFjayxpbnQgX0RlZmVuY2UsaW50IF9IUCxzdHJpbmcgX05hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICA6YmFzZSh0cnVlLCBfQXR0YWNrLCBfRGVmZW5jZSwgX0hQLCBfTmFtZSl7CiAgICAgICAgICAgIE1QID0gX01QO0F2b2lkID0gX0F2b2lkOyBNYWdpY0F0dGFjayA9IF9NYWdpY0F0dGFjazsKICAgICAgICB9CiAgICAgICAgcHVibGljIG92ZXJyaWRlIGludCBBc3NhdWx0KCkgewogICAgICAgIAlDb25zb2xlLldyaXRlTGluZSgiT3ZlcnJpZGVBc3NhdWx0IiArIE5hbWUpOwogICAgICAgICAgICByZXR1cm4gYmFzZS5Bc3NhdWx0KCkgKyAgTWFnaWNBdHRhY2s7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIERhbWFnZWQoSHVtYW4gRW5lbXkpIHsKICAgICAgICAJQ29uc29sZS5Xcml0ZUxpbmUoIk92ZXJyaWRlRGFtYWdlIisgTmFtZSApOwogICAgICAgICAgICBpbnQgZGFtYWdlID0gLSBEZWZlbmNlK0VuZW15LkFzc2F1bHQoKTsKICAgICAgICAgICAgaWYgKGRhbWFnZSA+IDApIEhQIC09IGRhbWFnZTsKICAgICAgICB9CiAgICB9CgogICAgc3RhdGljIHZvaWQgRXgzKCkgewogICAgICAgIEh1bWFuIEt5b24gPSBuZXcgSHVtYW4oZmFsc2UsIDEwMCwgMjAwLCAxNTAsICLjgq3jg6fjg7MiKTsKICAgICAgICBKb3NoaUtvc2VpIENoaWhheWEgPSBuZXcgSm9zaGlLb3NlaSg3MjAsIDcyLCA3MjAsIDcyLCA3MiwgNzIsICLlpoLmnIjljYPml6kiKTsKICAgICAgICBIdW1hbiBGcmVlemEgPSBuZXcgSHVtYW4oZmFsc2UsIDUzMDAwMCwgNTMwMDAwLCA1MzAwMDAsICLjg5Xjg6rjg7zjgrYiKTsKICAgICAgICBKb3NoaUtvc2VpIE5hZ2F0byA9IG5ldyBKb3NoaUtvc2VpKDEwMDAwLCA1MCwgNTAwMDAwLCA2MCwgNjAsIDYwLCAi6ZW36ZaA5pyJ5biMIik7CiAgICAgICAgSHVtYW5bXSBIdW1hbkFycmF5ID0gbmV3IEh1bWFuW10ge0t5b24sQ2hpaGF5YSxGcmVlemEsTmFnYXRvIH07CiAgICAgICAgZm9yZWFjaChIdW1hbiBPZmZlbmNlIGluIEh1bWFuQXJyYXkpewogICAgICAgICAgICBmb3JlYWNoKEh1bWFuIERlZmVuY2UgaW4gSHVtYW5BcnJheSl7CiAgICAgICAgICAgICAgICBpZiAoIU9mZmVuY2UuRXF1YWxzKERlZmVuY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgRGVmZW5jZS5EYW1hZ2VkKE9mZmVuY2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKCiAgICBjbGFzcyBIdW1hbnsKICAgICAgICBwdWJsaWMgdmlydHVhbCBpbnQgQXNzYXVsdCgpewogICAgICAgIAlDb25zb2xlLldyaXRlTGluZSgiQXNzYXVsdCIrIE5hbWUgKTsKICAgICAgICAgICAgcmV0dXJuIEF0dGFjazsKICAgICAgICB9CiAgICAgICAgcHVibGljIHZpcnR1YWwgdm9pZCBEYW1hZ2VkKEh1bWFuIEVuZW15KXsKICAgICAgICAJQ29uc29sZS5Xcml0ZUxpbmUoIkRhbWFnZSIrIE5hbWUgKTsKICAgICAgICAgICAgaW50IGRhbWFnZSA9IC1EZWZlbmNlICsgRW5lbXkuQXNzYXVsdCgpOwogICAgICAgICAgICBpZiAoZGFtYWdlID4gMCkgSFAgLT0gZGFtYWdlOyAKICAgICAgICB9CiAgICAgICAgcHVibGljIHJlYWRvbmx5IGJvb2wgaXNHaXJsOwogICAgICAgIHB1YmxpYyBpbnQgQXR0YWNrLCBEZWZlbmNlLCBIUDsKICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc3RyaW5nIE5hbWU7CiAgICAgICAgcHVibGljIEh1bWFuKGJvb2wgX2lzR2lybCxpbnQgX0F0dGFjayxpbnQgX0RlZmVuY2UsaW50IF9IUCxzdHJpbmcgX05hbWUpIHsKICAgICAgICAgICAgaXNHaXJsID0gX2lzR2lybDsKICAgICAgICAgICAgQXR0YWNrID0gX0F0dGFjazsgRGVmZW5jZSA9IF9EZWZlbmNlOyAKICAgICAgICAgICAgSFAgPSBfSFAgOyBOYW1lID0gX05hbWU7CiAgICAgICAgfQogICAgfQogICAgc3RhdGljIHZvaWQgTWFpbigpIHsKICAgIAlFeDMoKTsKICAgIH0KfQ==