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));
}
然后在滴答处理程序中,您可以执行以下操作:
private void timer1_Tick(object sender, EventArgs e)
{
dealRandomDamage(1, 10);
}
随机减少1到10之间的任何值。
编辑:亚当提出了一个好点。如果您采用这种方法,那么最好将
dealDamage()
函数定义更改为以下内容:public void dealDamage()
{
dealDamage(1);
}
这将消除造成损坏代码的冗余和重复(无双关语)。这样,如果您曾经改变了如何处理损害的逻辑,那么这仅仅是对逻辑的一次改变。