该程序首先收集游戏中盟军/敌方仆从的数量。
var eminions = MinionManager.GetMinions(Player.ServerPosition, 1500 MinionTypes.All, MinionTeam.Enemy).ToList();
var aminions = MinionManager.GetMinions(Player.ServerPosition, 1500, MinionTypes.All, MinionTeam.Ally).ToList();
然后我使用一个函数将列表中找到的每个对象转换为距离:
emd.Add(eminions[0].ServerPosition.Distance(aminions[i].ServerPosition)); //the count is 5
我们的列表“emd”包含 (aminions.Count) 个距离,在我们的示例中 = 5。
emd[0] = 500
emd[1] = 400
emd[2] = 300
emd[3] = 200
emd[5] = 100
这是棘手的地方,我们想找出最小距离在列表中的位置。如果我们进行理论化,我们可以看到它是 emd[5] = 100。但是我如何得到“5”?
总结:程序必须找到列表中最小的数,然后得到它在列表中找到它的位置。
这是我尝试过的:我尝试比较每个数字以查看最小的数字,如果为真,则添加到新列表中,我面临的问题是我创建了太多列表而且我不准备处理不同数量的小兵.
var eminions = MinionManager.GetMinions(Player.ServerPosition, 1500, MinionTypes.All, MinionTeam.Enemy).ToList();
var aminions = MinionManager.GetMinions(Player.ServerPosition, 1500, MinionTypes.All, MinionTeam.Ally).ToList();
if (eminions.Count > 0 && aminions.Count > 0)
{
List<double> emd = new List<double>();
List<bool> bdistance = new List<bool>();
for (int i = 0; i < aminions.Count; i++)
{
emd.Add(eminions[0].ServerPosition.Distance(aminions[i].ServerPosition));
for (int j = 0; j < aminions.Count; j++)
{
if (emd[i] > emd[j])
{
bdistance.Add(true);
}
}
}
}
最佳答案
int pos = 0; // set index to zero
int min = emd[0]; // set minimum to first value
for (int i = 1; i < emd.Count; i ++)
{
var val = emd[i]; // get value from position
if (val < min) //check if value is smaller then current minimum
{
// set minimum to value
min = val;
// set minimum pos to current value pos
pos = i;
}
}
//found minimum
//minimum index == pos
关于c# - 如何管理多个不断增长的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566462/