我是编码新手,有一个我无法解决的问题。我正在制作口袋妖怪的战斗场景,在击败其他玩家之后,游戏将重置。由于某种原因,如果对手拥有59点生命,并且使用了30点生命值的移动,则表示您赢了,因为现在的值是30以下。
这是我的代码的一部分
`lblComputerHealth.Text = prgcomputer.Value & "/ " & prgcomputer.Maximum
If btnPlayerChoice.Text = "blastoise" Then
If prgPlayer.Value <= 262 And prgPlayer.Value >= 183 Then
prgPlayer.ForeColor = Color.Green
ElseIf prgPlayer.Value <= 182 And prgPlayer.Value >= 131 Then
prgPlayer.ForeColor = Color.Yellow
ElseIf prgPlayer.Value <= 130 And prgPlayer.Value >= 66 Then
prgPlayer.ForeColor = Color.Orange
ElseIf prgPlayer.Value <= 65 Then
prgPlayer.ForeColor = Color.Red
End If
If frmSplash.btnComputer.Text = "blastoise" Then
If prgcomputer.Value <= 262 And prgcomputer.Value >= 183 Then
prgcomputer.ForeColor = Color.Green
ElseIf prgcomputer.Value <= 182 And prgcomputer.Value >= 131 Then
prgcomputer.ForeColor = Color.Yellow
ElseIf prgcomputer.Value <= 130 And prgcomputer.Value >= 66 Then
prgcomputer.ForeColor = Color.Orange
ElseIf prgcomputer.Value <= 65 Then
prgcomputer.ForeColor = Color.Red
End If
End If
If prgcomputer.Value <= 30 Then
'ADD A DO YOU WISH TO PLAY AGAIN BUTTON
MessageBox.Show("YOU WON")
intWins += 1
frmSplash.btnPlayerChoiceone.Text = ""
intwhy = 1
strplayerchoice = ""
intCompAttack = 0
intwhyone = 0
strcool = ""
frmSplash.btnComputer.Text = ""
frmSplash.btnPlayerChoiceone.Text = ""
picPlayer.Image = Nothing
picComputer.Image = Nothing
btnChoosePlayer.Visible = True
btnMoveOne.Visible = False
btnMoveTwo.Visible = False
btnMoveThree.Visible = False
btnMoveFour.Visible = False
prgPlayer.Value = 262
prgcomputer.Value = 262
lblWins.Text = intWins
prgcomputer.ForeColor = Color.ForestGreen
prgPlayer.ForeColor = Color.Green
Else
prgcomputer.Value = prgcomputer.Value - 30
End If
End If
If frmSplash.btnComputer.Text = "blastoise" Then
MessageBox.Show("Oponent thinking of move")
Threading.Thread.Sleep(1000)
intCompAttack = rand.Next(2) 'you will have to make this 3 some day
Select Case intCompAttack
Case 0
prgPlayer.Value -= 20
lblPlayerHealth.Text = prgPlayer.Value & "/ " & prgPlayer.Maximum
MessageBox.Show("Opponent used Tackle and delt 20 damage")
'use a loop in the animation
Case 1
prgPlayer.Value -= 30
lblPlayerHealth.Text = prgPlayer.Value & "/ " & prgPlayer.Maximum
MessageBox.Show("opponent used Water Gun and delt 30 damage")
End Select
End If'
这是我认为不起作用的部分
'If prgcomputer.Value <= 30 Then
'ADD A DO YOU WISH TO PLAY AGAIN BUTTON
MessageBox.Show("YOU WON")
intWins += 1
frmSplash.btnPlayerChoiceone.Text = ""
intwhy = 1
strplayerchoice = ""
intCompAttack = 0
intwhyone = 0
strcool = ""
frmSplash.btnComputer.Text = ""
frmSplash.btnPlayerChoiceone.Text = ""
picPlayer.Image = Nothing
picComputer.Image = Nothing
btnChoosePlayer.Visible = True
btnMoveOne.Visible = False
btnMoveTwo.Visible = False
btnMoveThree.Visible = False
btnMoveFour.Visible = False
prgPlayer.Value = 262
prgcomputer.Value = 262
lblWins.Text = intWins
prgcomputer.ForeColor = Color.ForestGreen
prgPlayer.ForeColor = Color.Green
Else
prgcomputer.Value = prgcomputer.Value - 30
End If `
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
看起来你正在使用某种编程语言(可能是VB.NET或C#,基于你使用的.Text
和.Value
属性)来开发一个游戏界面,其中lblComputerHealth
可能是一个标签用来显示对手的当前生命值,而prgComputer.Value
则可能是一个进度条控件表示生命值的实际数值。
根据你的描述,问题在于当对手使用了一个消耗30点生命的技能后,即使其剩余生命值低于30,游戏也会判定你胜利。这通常意味着在代码中对战斗逻辑的处理有误,特别是对生命值减少后的判断部分。
要解决这个问题,你需要确保在更新生命值显示之后正确地检查是否应该结束战斗。这里提供一个简化的逻辑示例,帮助你理解如何修改代码:
// 假设currentHealth是对手当前的生命值,damage是技能造成的伤害
int currentHealth = int.Parse(lblComputerHealth.Text); // 获取当前生命值
int damage = 30; // 对手技能消耗的生命值
// 计算新的生命值并确保它不低于0
currentHealth -= damage;
currentHealth = Math.Max(0, currentHealth); // 确保生命值不会变成负数
// 更新UI显示的新生命值
lblComputerHealth.Text = currentHealth.ToString();
// 检查对手生命值是否低于或等于0,如果是,则游戏结束,玩家胜利
if (currentHealth <= 0)
{
// 游戏结束的处理逻辑,比如显示胜利信息、重置游戏等
MessageBox.Show("你赢了!");
// 这里添加你的重置游戏逻辑
}
else
{
// 如果生命值大于0,继续游戏
// 可能需要更新其他UI元素如进度条(prgComputer.Value)以反映新的生命值
prgComputer.Value = currentHealth;
}
请根据你的实际项目环境调整上述代码。关键在于先计算新的生命值,并在更新UI之前判断是否满足胜利条件。如果满足胜利条件,再执行相应的胜利处理逻辑。这样可以确保在正确的时机判断游戏结果。