我正在实现Cluedo游戏的简单版本.游戏中有3种类型的牌,角色,武器和房间.由于一张卡只不过是一个字符串(即除了名称之外没有任何功能或信息存储在卡中),我选择不使用卡接口,每种类型都扩展卡.相反,我在游戏中有三个枚举:
public enum Character {Scarlett, Mustard, White, Green, Peacock, Plum;}
public enum Weapon {Candlestick, Dagger, LeadPipe, Revolver, Rope, Spanner;}
public enum Room {Kitchen, Ballroom, Conservatory, BilliardRoom, Library, Study, Hall;}
Run Code Online (Sandbox Code Playgroud)
然而,有一种情况是将三种类型的卡放在一起并均匀地分配给游戏的每个玩家.例如,一个玩家可能拥有2个角色的手,2个武器和1个房间,另一个玩家可能拥有3个房间和2个角色,所以卡的总数即使是什么类型也无关紧要.
这就是为什么我想知道是否有办法从Java中的所有三个枚举中随机选择一个单独的值?
或者我不应该首先做这三个enum的事情?(设计不当)
一种简单的方法是将所有枚举成员收集到一个单独的成员中Object[],然后从中获取随机元素.
请注意,枚举也可以实现一个接口,因此您甚至可以在所有枚举中使用一些共享API.通常你会发现自己写了很多switch关于枚举值的陈述; 这些接口方法的动态调度大多可以取而代之.进一步注意,每个枚举成员都可以提供自己的方法实现.