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.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 减一,或者您可以调用 dealDamage(yourValue)HP 减少可变数量(即 dealDamage(15)HP 减少 15)。

要从您的 tick 事件中调用它,如果您想要在两个范围之间产生随机量的伤害,您可以执行以下操作:

void dealRandomDamage(int bottomLimit, int upperLimit) 
{
    dealDamage((new Random()).Next(bottomLimit, upperLimit));
}

然后在您的滴答处理程序中,您可以执行如下操作:

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

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

编辑:亚当提出了一个很好的观点。如果您确实采用这种方式,那么最好将 dealDamage() 函数定义更改为以下内容:

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

这将消除导致损坏的代码的冗余和重复(无双关语意)。这样一来,如果您更改了如何处理伤害的逻辑,那么它只会对逻辑进行一次更改。

关于c# - 我怎样才能从标签中减去一定数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082200/

相关文章:

c# - 在更新功能期间尝试 setParent 会出错

c# - 如何在计算器中对 (+,-,*/) 使用react

c# - 如何从属性中抛出编译错误?

c# - 从工作线程更改主线程的 CultureInfo

c# - 如何在 Entity Framework 中的 DbSet 属性上设置过滤选项?

C# : using Regex to match 4 numbers in a long line of text

c# - 依赖注入(inject)还是服务位置?

c# - LINQ 包含不区分大小写

c# - 如何搜索带引号的字符串?

c# - 使用统一框架在 MVC 3 中进行依赖注入(inject)