类的实例变量不能被调用吗?

8 浏览
0 Comments

类的实例变量不能被调用吗?

我使用名为\"P1\"的对象进行了初始化,其名称为\"zach\",生命值为100,伤害为20,但我无法在其他地方访问这三个变量。这些不是Player类中的私有变量,我指的是通过以下方式进行初始化的类中的变量:\n

public Player(string name, int health, int damage)

\n我以为如果是public,我可以随时调用P1.health,但是为什么不能呢?希望得到帮助,这是我正在开发的第一个基于文本的控制台游戏,所以也希望得到其他意见。

0
0 Comments

在这段代码中,问题出现的原因是Player类的实例变量不能被调用。出现这个问题的原因有两个:首先,要想访问像p1.Health这样的属性/字段,必须将其更改为public;其次,赋值顺序错误。解决这个问题的方法是将属性/字段改为public,并且赋值顺序要正确。

另外,还有一些额外的内容。Player类有三种定义属性/字段的方式。第一种方式是将其定义为public,第二种方式是使用属性访问器,第三种方式是将其定义为私有变量并使用属性访问器。在Enemy类中也存在类似的属性/字段定义。在Main方法中,创建了一个Player对象P1,并输出其属性值。如果想要在其他类中访问P1对象,需要将其声明为静态的(static)。

该问题的原因是Player类的实例变量不能被调用。解决方法是将相应的属性/字段改为public,并将P1对象声明为静态的(static)。

0
0 Comments

在上述代码中,主要涉及了Player和Enemy两个类的定义和方法调用。其中,Player类具有以下实例变量:Name、Health、Damage、IsAlive,而Enemy类具有以下实例变量:Name、Health、Damage、enemyMessages、IsAlive。

在Player类中,定义了一个TakeDamageFromEnemy方法,该方法接受一个Enemy对象作为参数,并根据敌人的Damage值减少Player对象的Health值。如果Player的Health值小于0,则将IsAlive设置为false,并显示一条消息框提示玩家已死亡。还定义了一个DoDamageToEnemy方法,该方法接受一个Enemy对象作为参数,并根据Player的Damage值减少Enemy对象的Health值。如果Player的Health值小于0,则将IsAlive设置为false。

在Enemy类中,定义了一个enemyTakeDamage方法,该方法没有参数,不过在代码中并没有使用到。该方法用于计算敌人受到的伤害。

在Program类中,定义了Main方法,创建了一个Player对象和两个Enemy对象,并调用了一系列的方法来模拟战斗。最后,调用Console.ReadLine()方法来暂停程序的执行。

根据代码来看,似乎没有出现"Class's instance variables can't be called"的问题。但是,在代码中有一处显示消息框的代码MessageBox.Show("Player is dead!");,该代码需要引用System.Windows.Forms命名空间。如果没有引用该命名空间,则会出现"MessageBox doesn't exist in the current context"的错误。解决该问题的方法是,在代码中添加using System.Windows.Forms;语句来引用该命名空间。

以上代码中没有出现"Class's instance variables can't be called"问题,但是需要添加using System.Windows.Forms;语句来解决MessageBox不存在的问题。

0