我如何能够从标签中减去一定的数量

本文关键字:何能够 标签 | 更新日期: 2023-09-27 18:08:31

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();

但是我怎样才能使它减去一个变化的量

我如何能够从标签中减去一定的数量

重载方法:

public void dealDamage(int damage)
{
    rat.HP -= damage;
    enemyHP.Text = "Enemy HP: " + rat.HP.ToString();
}

这样,您可以调用dealDamage()(不带参数)并将HP递减1,或者您可以调用dealDamage(yourValue)来将HP递减一个可变的量(即dealDamage(15)来将HP递减15)。

要从你的滴答事件中调用它,如果你想要一个随机的伤害在两个范围之间,你可以这样做:
void dealRandomDamage(int bottomLimit, int upperLimit) 
{
    dealDamage((new Random()).Next(bottomLimit, upperLimit));
}

然后在你的tick处理器中,你可以这样做:

private void timer1_Tick(object sender, EventArgs e)
{
    dealRandomDamage(1, 10);
}

从1到10之间的任意值随机递减。

EDIT: Adam提出了一个很好的观点。如果您确实采用这种方法,那么将dealDamage()函数定义更改为以下内容将是一个好主意:

public void dealDamage()
{
    dealDamage(1);
}

这将消除导致损坏的代码的冗余和重复(没有双关语)。这样,如果你改变了的逻辑,如何处理的损害,那么它只需要对逻辑进行一次更改。