对象的实例的值不会改变

时间:2015-04-18 05:24:10

标签: vb.net oop

我的一位朋友建议尝试制作基于控制台的格斗游戏,以帮助我的vb.net技能。在我的游戏中,我似乎无法按照我的预期减少敌人的HP造成的伤害。我已附上以下重要代码。

这是我计算造成伤害的方式:

Player1.Damage = 1 + (Player1.Strength * 2) - 1
Player1.Strength = 1

这就是我在攻击中使用它来减少受攻击的_Enemy HP的方法。

 Public Sub Attack(ByVal _Enemy As Enemy)
'Enemy is a class
    _Enemy.HP -= Player1.Damage
    Console.WriteLine(_Enemy.Name & "'s HP is: " & _Enemy.HP.ToString & "!")
End Sub

在选定Enemy的挑战中,攻击会反复发生,如下所示:

Dim _Enemy As Enemy = Enemies(Rand.Next(0, 2))
Dim _EnemyName As String = _Enemy.Name
Console.WriteLine(_EnemyName & " has challenged you!")
Console.ReadLine()
Do While (Player1.HP > 1 Or _Enemy.HP > 1)
    Console.WriteLine("Choose your option:")
    Console.WriteLine("Attack, Flee, Stall, Or Inventory?")
    Opt = Console.ReadLine
    Select Case Opt
        Case "Attack"
            Attack(_Enemy)
            EnemyAttack(_Enemy)
        Case Else
           'There are more cases; they're nonessential.

我希望所选的_Enemy的HP在攻击后会降低,但它不会,它会保持不变。

有人可以帮我弄清楚为什么会这样,以及我如何解决它?

1 个答案:

答案 0 :(得分:0)

经过一些修修补补后,似乎正在删除" - 1"从Player1的Damage公式修复了问题。它在Damage公式中被取消,所以它等于零。由于任何数字减零都不会改变,因此HP没有受到影响。