From c90d69fdb953dcb5fa706b94a44625a589de7317 Mon Sep 17 00:00:00 2001 From: Florent DENEF Date: Fri, 2 Dec 2022 16:04:40 +0100 Subject: [PATCH] Finished programming a round. --- src/prob2/mod.rs | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/prob2/mod.rs b/src/prob2/mod.rs index 10513e5..3defb55 100644 --- a/src/prob2/mod.rs +++ b/src/prob2/mod.rs @@ -55,10 +55,22 @@ impl Into for ResultPlay { } } -pub fn winning(play: Play) -> char { - match play { - Play::Rock => Play::Paper.into(), - Play::Paper => Play::Scissors.into(), - Play::Scissors => Play::Rock.into(), +pub fn round_score(play: char, counter_play: char) -> i32 { + let coup = Play::from(play); // translate to the play + let counter = Play::from(counter_play); // translate to the play + if coup == counter { + (ResultPlay::Draw as i32) + (counter_play as i32) + } else { + use Play::*; + use ResultPlay::*; + match (&coup, &counter) { + (Rock, Paper) => (Win as i32) + (counter as i32), + (Rock, Scissors) => (Loss as i32) + (counter as i32), + (Paper, Rock) => (Loss as i32) + (counter as i32), + (Paper, Scissors) => (Win as i32) + (counter as i32), + (Scissors, Rock) => (Win as i32) + (counter as i32), + (Scissors, Paper) => (Loss as i32) + (counter as i32), + _ => panic!("Case not covered, impossible to reach."), + } } }