Explorar o código

Types and Display trait implemented for cards

Denis Merigoux %!s(int64=9) %!d(string=hai) anos
achega
1e557b3ad2

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
1
+main

+ 4 - 0
Cargo.lock

@@ -0,0 +1,4 @@
1
+[root]
2
+name = "tarot"
3
+version = "0.0.1"
4
+

+ 7 - 0
Cargo.toml

@@ -0,0 +1,7 @@
1
+[package]
2
+
3
+name = "tarot"
4
+version = "0.0.1"
5
+authors = [ "Denis Merigoux <denis.merigoux@gmail.com>" ]
6
+
7
+[dependencies]

+ 131 - 0
src/card.rs

@@ -0,0 +1,131 @@
1
+use std::fmt;
2
+
3
+pub enum Suit {
4
+    Clubs,
5
+    Diamonds,
6
+    Hearts,
7
+    Spades,
8
+}
9
+
10
+impl fmt::Display for Suit {
11
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
12
+        match self {
13
+            &Suit::Clubs => write!(f, "trèfle"),
14
+            &Suit::Diamonds => write!(f, "carreau"),
15
+            &Suit::Hearts => write!(f, "cœur"),
16
+            &Suit::Spades => write!(f, "pique"),
17
+        }
18
+    }
19
+}
20
+
21
+pub enum Symbol {
22
+    Ace,
23
+    Two,
24
+    Three,
25
+    Four,
26
+    Five,
27
+    Six,
28
+    Seven,
29
+    Eight,
30
+    Nine,
31
+    Ten,
32
+    Jack,
33
+    Knight,
34
+    Queen,
35
+    King,
36
+}
37
+
38
+impl fmt::Display for Symbol {
39
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
40
+        match self {
41
+            &Symbol::Ace => write!(f, "as"),
42
+            &Symbol::Two => write!(f, "2"),
43
+            &Symbol::Three => write!(f, "3"),
44
+            &Symbol::Four => write!(f, "4"),
45
+            &Symbol::Five => write!(f, "5"),
46
+            &Symbol::Six => write!(f, "6"),
47
+            &Symbol::Seven => write!(f, "7"),
48
+            &Symbol::Eight => write!(f, "8"),
49
+            &Symbol::Nine => write!(f, "9"),
50
+            &Symbol::Ten => write!(f, "10"),
51
+            &Symbol::Jack => write!(f, "valet"),
52
+            &Symbol::Knight => write!(f, "cavalier"),
53
+            &Symbol::Queen => write!(f, "dame"),
54
+            &Symbol::King => write!(f, "roi"),
55
+        }
56
+    }
57
+}
58
+
59
+pub struct Face {
60
+    pub suit: Suit,
61
+    pub symbol: Symbol,
62
+}
63
+
64
+pub enum Trump {
65
+    One,
66
+    Two,
67
+    Three,
68
+    Four,
69
+    Five,
70
+    Six,
71
+    Seven,
72
+    Eight,
73
+    Nine,
74
+    Ten,
75
+    Eleven,
76
+    Twelve,
77
+    Thirteen,
78
+    Fourteen,
79
+    Fifteen,
80
+    Sixteen,
81
+    Seventeen,
82
+    Eighteen,
83
+    Nineteen,
84
+    Twenty,
85
+    TwentyOne,
86
+}
87
+
88
+impl fmt::Display for Trump {
89
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
90
+        match self {
91
+            &Trump::One => write!(f, "1"),
92
+            &Trump::Two => write!(f, "2"),
93
+            &Trump::Three => write!(f, "3"),
94
+            &Trump::Four => write!(f, "4"),
95
+            &Trump::Five => write!(f, "5"),
96
+            &Trump::Six => write!(f, "6"),
97
+            &Trump::Seven => write!(f, "7"),
98
+            &Trump::Eight => write!(f, "8"),
99
+            &Trump::Nine => write!(f, "9"),
100
+            &Trump::Ten => write!(f, "10"),
101
+            &Trump::Eleven => write!(f, "11"),
102
+            &Trump::Twelve => write!(f, "12"),
103
+            &Trump::Thirteen => write!(f, "13"),
104
+            &Trump::Fourteen => write!(f, "14"),
105
+            &Trump::Fifteen => write!(f, "15"),
106
+            &Trump::Sixteen => write!(f, "16"),
107
+            &Trump::Seventeen => write!(f, "17"),
108
+            &Trump::Eighteen => write!(f, "18"),
109
+            &Trump::Nineteen => write!(f, "19"),
110
+            &Trump::Twenty => write!(f, "20"),
111
+            &Trump::TwentyOne => write!(f, "21"),
112
+        }
113
+    }
114
+}
115
+
116
+pub enum Card {
117
+    Face(Face),
118
+    Trump(Trump),
119
+    Fool,
120
+}
121
+
122
+impl fmt::Display for Card {
123
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
124
+        match self {
125
+            &Card::Fool => write!(f, "Excuse"),
126
+            &Card::Face(Face { ref suit, ref symbol }) => write!(f, "{} de {}", symbol, suit),
127
+            &Card::Trump(Trump::One) => write!(f, "petit"),
128
+            &Card::Trump(ref trump) => write!(f, "{} d'atout", trump),
129
+        }
130
+    }
131
+}

+ 10 - 0
src/main.rs

@@ -0,0 +1,10 @@
1
+mod card;
2
+
3
+fn main() {
4
+    let card1: card::Card = card::Card::Face(card::Face {
5
+        suit: card::Suit::Hearts,
6
+        symbol: card::Symbol::Seven,
7
+    });
8
+    let card2: card::Card = card::Card::Trump(card::Trump::Two);
9
+    println!("{} et {}", card1, card2);
10
+}

+ 0 - 0
target/debug/.cargo-lock


+ 1 - 0
target/debug/.fingerprint/tarot-a702c14d4f6a8863/bin-tarot

@@ -0,0 +1 @@
1
+1c78290e0bdba768

+ 1 - 0
target/debug/.fingerprint/tarot-a702c14d4f6a8863/bin-tarot.json

@@ -0,0 +1 @@
1
+{"rustc":16218068117412374134,"target":5225145117374096408,"profile":11154289914177168617,"local":{"variant":"MtimeBased","fields":[[1484630663,662815526],[47,104,111,109,101,47,100,101,110,105,115,47,116,97,114,111,116,47,116,97,114,103,101,116,47,100,101,98,117,103,47,46,102,105,110,103,101,114,112,114,105,110,116,47,116,97,114,111,116,45,97,55,48,50,99,49,52,100,52,102,54,97,56,56,54,51,47,100,101,112,45,98,105,110,45,116,97,114,111,116]]},"features":"None","deps":[],"rustflags":[]}

BIN=BIN
target/debug/.fingerprint/tarot-a702c14d4f6a8863/dep-bin-tarot


BIN=BIN
target/debug/tarot


+ 0 - 0
target/release/.cargo-lock


+ 1 - 0
target/release/.fingerprint/tarot-a702c14d4f6a8863/bin-tarot

@@ -0,0 +1 @@
1
+df0a7db364e1d3ab

+ 1 - 0
target/release/.fingerprint/tarot-a702c14d4f6a8863/bin-tarot.json

@@ -0,0 +1 @@
1
+{"rustc":16218068117412374134,"target":5225145117374096408,"profile":2761435531286440798,"local":{"variant":"MtimeBased","fields":[[1484626449,466378924],[47,104,111,109,101,47,100,101,110,105,115,47,116,97,114,111,116,47,116,97,114,103,101,116,47,114,101,108,101,97,115,101,47,46,102,105,110,103,101,114,112,114,105,110,116,47,116,97,114,111,116,45,97,55,48,50,99,49,52,100,52,102,54,97,56,56,54,51,47,100,101,112,45,98,105,110,45,116,97,114,111,116]]},"features":"None","deps":[],"rustflags":[]}

BIN=BIN
target/release/.fingerprint/tarot-a702c14d4f6a8863/dep-bin-tarot


BIN=BIN
target/release/tarot