MCPcopy Index your code
hub / github.com/BruceEckel/OnJava8-Examples / RoShamBo5

Enum RoShamBo5

enums/RoShamBo5.java:11–36  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9import static enums.Outcome.*;
10
11enum RoShamBo5 implements Competitor<RoShamBo5> {
12 PAPER, SCISSORS, ROCK;
13 static EnumMap<RoShamBo5,EnumMap<RoShamBo5,Outcome>>
14 table = new EnumMap<>(RoShamBo5.class);
15 static {
16 for(RoShamBo5 it : RoShamBo5.values())
17 table.put(it, new EnumMap<>(RoShamBo5.class));
18 initRow(PAPER, DRAW, LOSE, WIN);
19 initRow(SCISSORS, WIN, DRAW, LOSE);
20 initRow(ROCK, LOSE, WIN, DRAW);
21 }
22 static void initRow(RoShamBo5 it,
23 Outcome vPAPER, Outcome vSCISSORS, Outcome vROCK) {
24 EnumMap<RoShamBo5,Outcome> row =
25 RoShamBo5.table.get(it);
26 row.put(RoShamBo5.PAPER, vPAPER);
27 row.put(RoShamBo5.SCISSORS, vSCISSORS);
28 row.put(RoShamBo5.ROCK, vROCK);
29 }
30 @Override public Outcome compete(RoShamBo5 it) {
31 return table.get(this).get(it);
32 }
33 public static void main(String[] args) {
34 RoShamBo.play(RoShamBo5.class, 20);
35 }
36}
37/* Output:
38ROCK vs. ROCK: DRAW
39SCISSORS vs. ROCK: LOSE

Callers

nothing calls this directly

Calls 3

initRowMethod · 0.95
valuesMethod · 0.80
putMethod · 0.45

Tested by

no test coverage detected