在赌场老虎机游戏中,你经常会有一款Wild游戏。将这种机制与其他2件相比较的好方法是什么?例如给了3个游戏片[樱桃] [樱桃] [小丑]将是一场比赛。
我现在使用的代码看起来真的超重,有没有什么可以做的(想想按位运算符?)以便更容易使用?
if ((box1.BoxRank == box2.BoxRank ||
box1.BoxRank == BoxGameObject.Ranks.Joker ||
box2.BoxRank == BoxGameObject.Ranks.Joker) &&
(box1.BoxRank == box3.BoxRank ||
box1.BoxRank == BoxGameObject.Ranks.Joker ||
box3.BoxRank == BoxGameObject.Ranks.Joker) &&
(box2.BoxRank == box3.BoxRank ||
box2.BoxRank == BoxGameObject.Ranks.Joker ||
box3.BoxRank == BoxGameObject.Ranks.Joker))
{
// has 3 of a kind, or 1 joker and 2 of a kind, or 2 jokers and 1 other
return true;
}
答案 0 :(得分:2)
如果您根据所有框的值设置来考虑操作,这会更容易。只需从该集合中删除所有的jokers,然后验证所有值是否相同:
var allRanks = new[]{box1.BoxRank, box2.BoxRank, box3.BoxRank};
var threeOfAKind = allRanks.Where(rank => rank != BoxGameObject.Ranks.Joker)
.Distinct()
.Count() < 2;
首先删除所有的笑话。如果在这之后有两个或更多不同的值,那么我们就没有三个。
答案 1 :(得分:1)
是的,将Joker表示为包含所有二进制1的int,如7,15或31。 代表樱桃和其他人使用int,只有单个二进制1,比小丑的1,2,4,8小。不使用零。 然后,使用按位AND您的条件相当于:
(box1.BoxRank & box2.BoxRank & box3.BoxRank) > 0
请注意,3个Jokers也会满足这个条件。