这段代码查看了6个数组元素并检查它们是否等于或小于零,首先是我不喜欢它是不是很长,其次是它由于6个数组元素,我给了6个赢家屏幕。
for (int i = 0; i <= parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray().Length; i++)
{
if (parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()[0].getMonHealth() <= 0
&& parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()[1].getMonHealth() <= 0
&& parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()[2].getMonHealth() <= 0
&& parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()[3].getMonHealth() <= 0
&& parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()[4].getMonHealth() <= 0
&& parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()[5].getMonHealth() <= 0)
{
Winner winners = new Winner();
winners.Show();
this.Hide();
}
}
答案 0 :(得分:1)
如果你添加:
using System.Linq;
然后,您可以使用Linq中的.Any()方法执行以下操作
bool anyLessThanZero =
parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()
.Any(monster => monster.getMonHealth() <= 0);
答案 1 :(得分:0)
将parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()
分配给变量,并将parent.mygame.getplayer(parent.mygame.getpturn()).getmonsterarray()
替换为代码中的变量,这样您就不必一遍又一遍地输入它。
答案 2 :(得分:0)
您的代码几乎看起来不像C#...
将其与此相比:
// assume CurrentPlayer is a property that returns Players[Turn]
var currentPlayer = parent.Game.CurrentPlayer;
if (currentPlayer.Monsters.All(monster => monster.Health <= 0))
{
var winner = new Winner();
winner.Show();
this.Hide();
}
您应该使用属性而不是getter方法。此外,C#约定是locals是camelCased,类型/属性/方法是PascalCased。