Skip to main content

configurable/
configurable.rs

1use rock_paper_scissors::*;
2
3fn main() {
4    let mut scores = Scores::new();
5
6    println!("Welcome to the Rock-Paper-Scissors game!");
7    println!("Please enter what you want to play to: ");
8
9    let game_settings = loop {
10        match GameSettings::from_user_input() {
11            Ok(game_settings) => break game_settings,
12            Err(err) => println!("Error: {}", err),
13        }
14    };
15
16    println!();
17    let mut round_counter = 0;
18    while scores.check_for_winner(&game_settings).is_err() {
19        round_counter += 1;
20        println!("Round {}:", round_counter);
21        let player_moves = PlayerMoves::build_from_input();
22        println!();
23        println!("User: {}", player_moves.user_move.convert_to_string());
24        println!("Enemy: {}", player_moves.enemy_move.convert_to_string());
25
26        let round_winner = player_moves.check_who_wins_round();
27        println!();
28        match round_winner {
29            Winner::Tie => {
30                println!("Tie!");
31                round_counter -= 1
32            },
33            Winner::User => {
34                println!("User win");
35                scores.user_wins += 1;
36            },
37            Winner::Enemy => {
38                println!("Enemy win");
39                scores.enemy_wins += 1;
40            }
41        }
42
43        println!("Current Scores -> User: {} :: Enemy: {}", scores.user_wins, scores.enemy_wins);
44    }
45
46    let game_winner = scores.check_for_winner(&game_settings).unwrap(); // can use unwrap here because the while loop
47    // will only break if the return is Ok()
48
49
50    println!("Game Winner: {}", game_winner.convert_to_string());
51}