我如何检查我的所有跳棋是否都在同一个地方?
How can i check if all my checkers are in the same place?
我需要制作西洋双陆棋游戏。游戏已完成 90%。我必须完成残局(当你从“家”中取出跳棋时,我不知道它在英语中是怎么称呼的)。我在 ArrayPieseAlbe 中拥有所有 whitecheckers,我正在使用 foreach 检查位置是否匹配。
public bool SuntToatePieseAlbeCasa()
{
foreach (PiesaAlba p in ArrayPieseAlbe)
{
return p.Location.X > 503; //503 is the right location
}
return false;
PiesaAlba 是白色跳棋所在的 class。 ArrayPieseAlbe 包含所有白色棋子。由于某些奇怪的原因,这不起作用,因为它应该起作用。当“家里”有 7 个或更多跳棋时它可以工作,但需要所有 15 个跳棋都在那里才能正常工作。有什么建议吗?抱歉我的英语不好
如果 所有 部分都是“家”,则需要 return 为真。目前,如果 任何(即至少一个)作品在家,你就是 returning true。
要解决这个问题,您的逻辑应该是:
- 遍历每一块并检查它是否在家
- 如果不是,立即return false
- 如果所有片段都被检查过,return 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 中的 All()
方法:
public bool SuntToatePieseAlbeCasa()
{
return ArrayPieseAlbe.All(p => p.Location.X > 503);
}
查看 source of All()
,它的作用与上面基本相同,但使用谓词在循环内部进行检查:
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;
}
我需要制作西洋双陆棋游戏。游戏已完成 90%。我必须完成残局(当你从“家”中取出跳棋时,我不知道它在英语中是怎么称呼的)。我在 ArrayPieseAlbe 中拥有所有 whitecheckers,我正在使用 foreach 检查位置是否匹配。
public bool SuntToatePieseAlbeCasa()
{
foreach (PiesaAlba p in ArrayPieseAlbe)
{
return p.Location.X > 503; //503 is the right location
}
return false;
PiesaAlba 是白色跳棋所在的 class。 ArrayPieseAlbe 包含所有白色棋子。由于某些奇怪的原因,这不起作用,因为它应该起作用。当“家里”有 7 个或更多跳棋时它可以工作,但需要所有 15 个跳棋都在那里才能正常工作。有什么建议吗?抱歉我的英语不好
如果 所有 部分都是“家”,则需要 return 为真。目前,如果 任何(即至少一个)作品在家,你就是 returning true。
要解决这个问题,您的逻辑应该是:
- 遍历每一块并检查它是否在家
- 如果不是,立即return false
- 如果所有片段都被检查过,return 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 中的 All()
方法:
public bool SuntToatePieseAlbeCasa()
{
return ArrayPieseAlbe.All(p => p.Location.X > 503);
}
查看 source of All()
,它的作用与上面基本相同,但使用谓词在循环内部进行检查:
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;
}