1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
use std::collections::HashSet;
use piece::Side;
use location::Step;
use card::StepAlternatives;
macro_rules! s {
($dx:expr, $dy:expr) => {
Step::new($dx, $dy)
};
}
macro_rules! c {
($($x:expr),*) => {
{
let mut hs = HashSet::new();
$( hs.insert($x); )*
hs
}
};
}
lazy_static! {
pub static ref CARDS: [StepAlternatives; 16] = [
c!(s!(0, -2), s!(0, 1)),
c!(s!(-2, -1), s!(2, -1), s!(-1, 1), s!(1, 1)),
c!(s!(-2, 0), s!(-1, -1), s!(1, 1)),
c!(s!(2, 0), s!(1, -1), s!(-1, 1)),
c!(s!(0, -1), s!(-2, 0), s!(2, 0)),
c!(s!(-1, 0), s!(-1, -1), s!(1, 0), s!(1, -1)),
c!(s!(-1, 0), s!(-1, -1), s!(1, 0), s!(1, 1)),
c!(s!(-1, 0), s!(-1, 1), s!(1, 0), s!(1, -1)),
c!(s!(-1, -1), s!(-1, 1), s!(1, -1), s!(1, 1)),
c!(s!(0, 1), s!(-1, -1), s!(1, -1)),
c!(s!(0, -1), s!(0, 1), s!(-1, 0)),
c!(s!(0, -1), s!(0, 1), s!(1, 0)),
c!(s!(0, -1), s!(-1, 1), s!(1, 1)),
c!(s!(0, -1), s!(-1, 0), s!(1, 0)),
c!(s!(-1, -1), s!(-1, 1), s!(1, 0)),
c!(s!(1, -1), s!(1, 1), s!(-1, 0)),
];
}
pub static STARTER: [Side; 16] = [
Side::WHITE, Side::BLACK, Side::BLACK, Side::WHITE,
Side::WHITE, Side::BLACK, Side::WHITE, Side::BLACK,
Side::WHITE, Side::BLACK, Side::BLACK, Side::WHITE,
Side::WHITE, Side::BLACK, Side::WHITE, Side::BLACK
];
pub static CARD_NAMES: [&'static str; 16] = [
"tiger",
"dragon",
"frog",
"rabbit",
"crab",
"elephant",
"goose",
"rooster",
"monkey",
"mantis",
"horse",
"ox",
"crane",
"boar",
"eel",
"cobra"
];