Skip to content

Instantly share code, notes, and snippets.

@Louis-Saglio
Created August 23, 2022 15:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Louis-Saglio/a8e9aba8480e1e329057f7468ad8e046 to your computer and use it in GitHub Desktop.
Save Louis-Saglio/a8e9aba8480e1e329057f7468ad8e046 to your computer and use it in GitHub Desktop.
use std::cmp::min;
use rand::Rng;
use crate::Player::{Attacker, Defender};
enum Player {
Attacker, Defender
}
struct Delta {
a_delta: u32,
d_delta: u32,
}
fn risk(initial_attackers_nbr: &u32, initial_defenders_nbr: &u32) {
let mut rng = rand::thread_rng();
let mut attackers_nbr = *initial_attackers_nbr;
let mut defenders_nbr = *initial_defenders_nbr;
loop {
if attackers_nbr == 1 || defenders_nbr == 0 {
break
}
let a_dice = {
let dice_nbr = min(3, attackers_nbr - 1);
let mut a_dice: Vec<u8> = Vec::new();
for i in 0..3 {
a_dice.push(if i >= dice_nbr { 0 } else { rng.gen_range(1..6) })
}
a_dice.sort();
a_dice.reverse();
(a_dice[0], a_dice[1])
};
let d_dice = {
let dice_nbr = if a_dice.0 + a_dice.1 >= 8 || defenders_nbr == 1 { 1 } else { 2 };
let mut d_dice: Vec<u8> = Vec::new();
for _ in 0..dice_nbr {
d_dice.push(rng.gen_range(1..6))
}
d_dice.sort();
d_dice.reverse();
d_dice
};
let deltas = {
let mut delta = Delta { a_delta: 0, d_delta: 0};
for d_single_dice in d_dice {
}
};
println!("{:?}", a_dice);
break
}
if attackers_nbr == 1 {
println!("Defender wins with {} unit(s) remaining", defenders_nbr);
}
if defenders_nbr == 0 {
println!("Attacker wins with {} unit(s) remaining", attackers_nbr);
}
}
fn main() {
risk(&12, &8)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment