我的一位朋友建议尝试制作基于控制台的格斗游戏,以帮助我的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在攻击后会降低,但它不会,它会保持不变。
有人可以帮我弄清楚为什么会这样,以及我如何解决它?
答案 0 :(得分:0)
经过一些修修补补后,似乎正在删除" - 1"从Player1的Damage公式修复了问题。它在Damage公式中被取消,所以它等于零。由于任何数字减零都不会改变,因此HP没有受到影响。