【发布时间】:2016-04-06 14:36:04
【问题描述】:
程序首先收集游戏中友方/敌方小兵的数量。
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);
}
}
}
}
【问题讨论】:
-
标题很不合适。您正在寻找最小值的索引。那如何管理多个不断增长的列表?除此之外 - 我支持 cramopy 的答案是最好的 - 一个简单的循环。