2009-12-12 95 views
0

我試圖做一些類似於Rpg遊戲atm的東西,但我真的停留在一些東西上,我真的不知道該怎麼做了,我真的需要幫助它可能看起來像一個noob問題,但請嘗試回答我>。 <這是父類Polymorphism麻煩C#

namespace ConsoleApplication1 
{ 
    class Personaje 
    { 
     public Rango Damage; 
     public int Defensa; 

     public int HP; 

     public int MP; 
     public bool Evade; 
     public bool Counter; 
     public string Nombre; 
     public Personaje() { } 
     public Personaje(Rango Damage, int Defensa, int HP, bool Evade, bool Counter, string Nombre) 
     { 
      this.Damage = Damage; 
      this.Defensa = Defensa; 
      this.HP = HP; 
      this.Evade = Evade; 
      this.Counter = Counter; 
      this.Nombre = Nombre; 
     } 
    } 
} 

這是孩子的

namespace ConsoleApplication1 
{ 
    class Enemigo:Personaje 
    { 

    } 
} 

這是孩子的一個和遇到問題一個IM與我不知道如何把它

狀態的一個
namespace ConsoleApplication1 
{ 
    class Poring:Enemigo 
    { 
     int HP = 30; 
     int MP = 10; 
     int Def = 0; 
     public bool Evade() 
     { 
      return false; 
     } 
     public bool Counter() 
     { 
      return false; 
     } 
     public Rango Damage() 
     { 
      Rango r = new Rango(); 
      r.min = 10; 
      r.max = 15; 
      return r; 
     } 
     string Nombre = "Poring"; 

     //Personaje Propiedades = new Personaje(Damage,Def, HP, Evade, Counter, Nombre); 
     Personaje omg = new Personaje(); 


    } 
} 
+2

有一個小竅門,你可能會得到更好的答案,如果你更清楚你遇到困難的 - 「我不知道如何把狀態」有點不確切。 (我認爲這是你的Evade和Counter方法,但是我認爲,他可能是對的,你問的是通過構造函數設置這些初始屬性值。)我知道初學者很難知道術語,具體如你總是可以幫助! – itowlson 2009-12-12 22:32:21

回答

2

如果我正確理解你的問題,我想你想能夠調用父對象的構造函數來傳遞對象的狀態。您必須在類級別的每個級別重載構造函數。

class Enemigo : Personaje 
{ 
    public Enemigo(Rango Damage, int Defensa, int HP, bool Evade, bool Counter, string Nombre) 
     : base(Damage, Defensa, HP, Evade, Counter, Nombre) 
    { 
    } 
} 

class Poring:Enemigo 
{ 
     public Poring(Rango Damage, int Defensa, int HP, bool Evade, bool Counter, string Nombre) 
      : base(Damage, Defensa, HP, Evade, Counter, Nombre) 
      { 
      } 
} 
+0

非常感謝,對不起,如果我不精確,但是我的意思是每個角色的起始值,非常感謝你,這真的很快btw xD – Makenshi 2009-12-12 22:39:02

1

在你的基類中,你已經聲明Evade和Counter是公共字段。要覆蓋它們,您需要創建這些屬性或方法(在這種情況下爲方法),並將它們標記爲基類中的virtualabstract,並將其標記爲派生類中的override。如果你想他們是抽象的(即基類沒有「默認」的實施,以及派生類必須重寫他們提供一個實現),您必須在基類抽象太:

public abstract class Personaje 
{ 
    public abstract bool Evade(); 
} 

public class Poring : Enemigo 
{ 
    public override bool Evade() 
    { 
    return false; 
    } 
}