我遇到了以下问题,任何想像力都不难解决,但我想知道最好/最优雅的解决方案是什么。
我有以下方法,其原型如下所示:
bool Team::isEveryoneDead(int teamOnTurn);
有两个团队可用,根据当前团队的哪个实例轮流,我想检查团队中的每个角色是否以这个非常特殊的顺序死亡:
循环遍历团队中没有先轮到的所有角色。如果有任何角色还活着,请停止循环(并转到第 2 步)。如果没有人活着,终止函数并返回。
既然我知道不轮流的团队至少包含一个活着的角色,请循环遍历当前轮流的团队并检查相同的内容。我应该找到一个活着的人,停止循环并终止/返回。
该参数int teamOnTurn
允许我解决当前轮流的 Team 实例。我评估“活着的条件”的顺序在这里非常重要。
现在,可以采用几种方法,比如硬编码订单(因为只有 2 个可能的订单)并通过检查谁在轮流来解决订单,然后执行已经具有特定订单的分支,如下所示:
bool Team::isEveryoneDead(int teamOnTurn) {
if (Team::Blue == teamOnTurn) {
checkThis();
checkThat();
} else {
checkThat();
checkThis();
}
}
但是,此解决方案不适用于 5!更多项目的特定调用排序的排列。应该部署什么技术以最优雅的方式解决这个问题:)?
在此先感谢,斯嘉丽。