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/