C# 我怎样才能从标签中减去一定量
我有:C# 我怎样才能从标签中减去一定量,c#,C#,我有: private void battleButton_Click(object sender, EventArgs e) { if (battleDropBox.SelectedItem.ToString() == "Rat") { enemyHP.Text = "Enemy HP: " + rat.HP.ToString(); enemyDPS.Text = "Enemy DPS: " + rat.Damage.ToSt
private void battleButton_Click(object sender, EventArgs e)
{
if (battleDropBox.SelectedItem.ToString() == "Rat")
{
enemyHP.Text = "Enemy HP: " + rat.HP.ToString();
enemyDPS.Text = "Enemy DPS: " + rat.Damage.ToString();
timer.Tick += new EventHandler(timer1_Tick);
timer.Interval = 1000;
timer.Start();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
dealDamage();
}
public void dealDamage()
{
rat.HP--;
enemyHP.Text = "Enemy HP: " + rat.HP.ToString();
}
但是我怎样才能使它减去一个变化的量。使方法过载:
rat.HP--;
enemyHP.Text = "Enemy HP: " + rat.HP.ToString();
通过这种方式,您可以调用dealDamage()
(无参数)并将HP
减量一次,也可以调用dealDamage(您的值)
将HP
减量一个变量(即dealDamage(15)
将HP
减量15)
如果你想在两个范围内随机造成伤害,你可以通过以下方法从你的勾号事件中调用此选项:
public void dealDamage(int damage)
{
rat.HP -= damage;
enemyHP.Text = "Enemy HP: " + rat.HP.ToString();
}
private void timer1_Tick(object sender, EventArgs e)
{
dealRandomDamage(1, 10);
}
然后在你的蜱虫处理程序中,你可以这样做:
void dealRandomDamage(int bottomLimit, int upperLimit)
{
dealDamage((new Random()).Next(bottomLimit, upperLimit));
}
随机递减1到10之间的任何值
编辑:亚当提出了一个好观点。如果确实采用此方法,则最好将dealDamage()
函数定义更改为以下内容:
public void dealDamage(int damage)
{
rat.HP -= damage;
enemyHP.Text = "Enemy HP: " + rat.HP.ToString();
}
private void timer1_Tick(object sender, EventArgs e)
{
dealRandomDamage(1, 10);
}
这将消除导致损坏的代码的冗余和重复(没有双关语)。这样的话,如果你改变了造成伤害的逻辑,那么它只会是对逻辑的一次改变。如果你要保持
dealDamage()
(没有参数),我会亲自重写它,调用dealDamage(1)
,这样你就不必保持两个方法的同步,但我还是喜欢这个答案。