我正在编写空间入侵者的程序以供练习;-)并且工作得很好,但我的入侵者还击是有问题的。
所有入侵者都存储在一个列表中,我使用linq根据它们的X位置对这些入侵者进行分组,这样我就可以随机地访问一个组,并使用列底部的入侵者进行反击。
var r = from invader in invaders
group invader by invader.Location.X into invaderGroup
orderby invaderGroup descending
select invaderGroup.Take(random.Next(0, invaderGroup.Count()));
但是无论我尝试什么(例如选择new { invaderGroup.Key,invadergroup };),我的结果总是空
有人能给我一些帮助/暗示吗?谢谢
发布于 2009-05-03 10:23:40
我在查询中看到了两个问题;您正在对组进行排序,而不是对入侵者进行排序,并且您使用的是随机数为零的Take
,这样它就可以返回一个空的结果。
它用于按X坐标对入侵者进行分组,按Y坐标对入侵者进行排序,随机选择一组入侵者,并获得具有最高Y坐标的入侵者:
var r =
from invader in invaders
orderby invader.Location.Y descending
group invader by invader.Location.X into invaderGroup
select invaderGroup;
Invader fire = r.Skip(random.Next(r.Count())).First().First();
https://stackoverflow.com/questions/816707
复制相似问题