Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我怎样才能从标签中减去一定量_C# - Fatal编程技术网

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)
,这样你就不必保持两个方法的同步,但我还是喜欢这个答案。