4 #include "../util/assume.h" 5 #include "../util/int_iter.h" 17 static constexpr
int HUMAN_INDEX = 0;
19 Who() : mWho(NOBODY) {}
21 explicit constexpr
Who(
int who)
26 explicit Who(
unsigned who)
27 : mWho(
static_cast<decltype(mWho)
>(who))
29 assert(0 <= mWho && mWho <= NOBODY);
32 Who(
const Who ©) =
default;
36 assert(validSomebody(mWho));
37 assume_opt_out(validSomebody(mWho));
41 unsigned uIndex()
const 43 return static_cast<unsigned>(index());
48 assert(validSomebody(mWho));
49 assume_opt_out(validSomebody(mWho));
50 return Who((mWho + 1) % 4);
55 assert(validSomebody(mWho));
56 assume_opt_out(validSomebody(mWho));
57 return Who((mWho + 3) % 4);
62 assert(validSomebody(mWho));
63 assume_opt_out(validSomebody(mWho));
64 return Who((mWho + 2) % 4);
67 Who byDice(
int dice)
const 69 assert(1 <= dice && dice <= 12);
70 assume_opt_out(1 <= dice && dice <= 12);
71 return Who((mWho + dice - 1) % 4);
74 Who byTurn(
int turn)
const 76 return Who((mWho + turn) % 4);
86 assert(validSomebody(mWho));
87 assume_opt_out(validSomebody(mWho));
88 assert(validSomebody(tar.mWho));
89 assume_opt_out(validSomebody(tar.mWho));
90 assert(mWho != tar.mWho);
91 assume_opt_out(mWho != tar.mWho);
92 return 3 - (tar.mWho - mWho + 4) % 4;
102 assert(validSomebody(mWho));
103 assume_opt_out(validSomebody(mWho));
104 assert(validSomebody(from.mWho));
105 assume_opt_out(validSomebody(from.mWho));
106 return (4 + mWho - from.mWho) % 4;
109 bool somebody()
const 111 return mWho != NOBODY;
116 return mWho == NOBODY;
121 return mWho == HUMAN_INDEX;
124 bool operator==(Who rhs)
const 126 return mWho == rhs.mWho;
129 bool operator!=(Who rhs)
const 131 return !(*
this == rhs);
134 Who &operator=(
const Who &assign) =
default;
137 static constexpr
bool validSomebody(
int w) noexcept
139 return 0 <= w && w < 4;
143 static const int NOBODY = 4;
157 constexpr
Who HUMAN(Who::HUMAN_INDEX);
Definition: int_iter.h:54
int turnFrom(Who from) const
Turning count from another players.
Definition: who.h:100
int looksAt(Who tar) const
Relative position of anohter player.
Definition: who.h:84