我要做一个双陆棋游戏。游戏完成了90%。我必须做最后一局(当你从“家”拿出你的跳棋时,我不知道它在英语里是怎么叫的)。我在ArrayPieseAlbe中有所有的白块,我正在使用foreach来检查位置是否匹配。
public bool SuntToatePieseAlbeCasa()
{
foreach (PiesaAlba p in ArrayPieseAlbe)
{
return p.Location.X > 503; //503 is the right location
}
return false;
PiesaAlba是白跳棋所在的班级。ArrayPieseAlbe包含所有白色方格。出于某种奇怪的原因,这并不像它应该做的那样工作。当7个或更多的跳棋在“家里”时,它是工作的,但它需要所有15个跳棋都在那里才能正常工作。有什么建议吗?对不起,我英语不好
如果所有部分都是“home”,则需要返回true。当前,如果有任何(即至少一个)片段在家中,则返回true。
要解决这个问题,你的逻辑应该是:
这看起来像:
public bool SuntToatePieseAlbeCasa()
{
foreach (PiesaAlba p in ArrayPieseAlbe)
{
if (p.Location.X <= 503) //503 is the right location
{
return false;
}
}
return true;
}
您也可以在System.Linq中使用
public bool SuntToatePieseAlbeCasa()
{
return ArrayPieseAlbe.All(p => p.Location.X > 503);
}
查看
public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) {
if (source == null) throw Error.ArgumentNull("source");
if (predicate == null) throw Error.ArgumentNull("predicate");
foreach (TSource element in source) {
if (!predicate(element)) return false;
}
return true;
}