基本上我创建了这个skill
类:
public class skill
{
public int level { get; set; } //Level of the skill (average of sub-skills' levels)
public int arrayCount { get; set; } //Number of skill/levels in the below arrays
public string[] sub_skills { get; set; } //Names of sub-skills ([0] connect's to levels' [0], etc.)
public int[] sub_levels { get; set; } //Levels of sub-skills ([0] connect's to names' [0], etc.)
void set(int l, int a, string[] sub_s, int[] sub_l)
{
this.level = l; //Sets the skill's level to the input'd l value
this.arrayCount = a; //Sets the skill's array count to the input'd a value
for (int i = 0; i < arrayCount; i++) //For loop to assign each value in both arrays
{
this.sub_skills[i] = sub_s[i]; //Assigns each input'd sub_s array value to each sub_skills value
this.sub_levels[i] = sub_l[i]; //Assigns each input'd sub_l array value to each sub_levels value
}
}
}
现在我创建了另一个类player
:
public class Player
{
public string name { get; set; } //Name of Player
public int level { get; set; } //Player's combat level (average of combat-related skills' levels)
//Start Thievery skill block
string[] thief_s = { "lockpicking", "looting", "pickpocketing", "sneaking" }; //Array for thievery's sub-skill names
int[] thief_i = { 1, 1, 1, 1 }; //Array for thievery's sub-levels
skill thievery = new skill(); //Creates the skill of Thievery (stealing items / passing unnoticed)
//Start Melee skill block
skill melee = new skill(); //Creates the skill of Melee (close-range, strong combat)
//Start Archery skill block
skill archery = new skill(); //Creates the skill of Archery (long-range, weak combat)
//Start Magicka skill block
skill magicka = new skill(); //Creates the skill of Magicka (medium-range, medium combat)
//Start Craftship skill block
skill craftship = new skill(); //Creates the skill of Craftship (retreivement then creation of items from materials)
}
我如何使用set()
类skill
类中的player
方法,以获得player
类中创建的特定技能?例如,您可以看到我在那里创建的技能thievery
,其数组已经包含了子级别的名称和级别(skill
类中的变量)。如何访问thievery
的{{1}}函数并使用其中的数组来设置set()
的变量?我已尝试过行thievery
,但我的IDE一直在抛出错误。 (我正在使用Microsoft Visual Studio Ultimate 2010)
thievery.set(// insertvarshere)
函数设置为public并没有改变任何内容。当我调用set()
时,我的IDE会在thievery.set()
下面抛出红线。我将接受查尔斯的建议并掌握子技能,然后,如果可能的话,对他们应用某种标签,将其标记为主要技能的一部分。这是可能的,还是我必须为标签创建我自己的类/功能等?
答案 0 :(得分:3)
从表面上看,你需要公开它:
public void set(int l, int a, string[] sub_s, int[] sub_l) {
...
然后,对于每个技能实例,您可以调用它:
thievery.set( ... );
您想要调用它的位置以及使用哪些参数参数取决于您。
答案 1 :(得分:0)
除非我在这里遗漏了一些内容,否则你需要通过公开或建立一个调用它的新公共方法来使set方法可见。你可能需要一个抽象的方法,调用set你想要它的方式,以便消费者正确使用它。
答案 2 :(得分:0)
您在哪里尝试调用set
课程中的Player
方法。您只能在set
类的另一个方法或构造函数中调用Player
方法。这可能就是你收到错误的原因。
编辑:您还需要为该方法添加公共。