From e7b389109596d030f75d6351290d05152f64fa47 Mon Sep 17 00:00:00 2001 From: ntr Date: Sun, 5 Aug 2018 22:17:52 +1000 Subject: [PATCH] looping dmg --- Cargo.toml | 2 ++ src/lib.rs | 87 +++++++++++++++++++++++++++++++++++------------------- 2 files changed, 59 insertions(+), 30 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 156e5c2c..b636599f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,5 @@ authors = ["ntr "] [dependencies] rand = "0.5.4" +uuid = "0.6.5" +serde_json = "1.0.24" diff --git a/src/lib.rs b/src/lib.rs index f3ece246..7bcb71c6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,64 +1,91 @@ extern crate rand; +// extern crate serde_json; use rand::prelude::*; -// items? -// stranth + stam + intel + luck? +#[derive(Debug,Clone)] struct Cryp { - name: String, dmg: u64, def: u64, stam: u64, + name: String, } -pub struct Turn { +struct Turn { dmg: u64, def: u64, } -fn att_roll(rng: &mut ThreadRng, att: u64) -> u64 { +// #[derive(Debug)] +// pub struct Battle { +// cryps: Vec, +// } + +fn att_roll(att: u64) -> u64 { + let mut rng = thread_rng(); let roll: u64 = rng.gen(); - println!("stat: {:b}", att); - println!("roll: {:b}", roll); - println!("outp: {:b}\n", att & roll); return att & roll; } -fn cryp_turn(mut rng: &mut ThreadRng, c: Cryp) -> Turn { - let dmg = att_roll(&mut rng, c.dmg); - let def = att_roll(&mut rng, c.def); - // att_roll(rng, c.stam); +fn cryp_turn(c: &Cryp) -> Turn { + let dmg = att_roll(c.dmg); + let def = att_roll(c.def); + + println!("{:?}", c.name); + println!("dmg: {:b}", dmg); + println!("def: {:b}", def); return Turn { dmg, def } } -fn battle(a: Cryp, b: Cryp) -> Vec { - let mut rng = thread_rng(); - let mut turns = Vec::new(); - - turns.push(cryp_turn(&mut rng, a)); - turns.push(cryp_turn(&mut rng, b)); - - return turns; +fn assign_dmg(a: &Cryp, t: &Turn) -> Cryp { + Cryp { + dmg: a.dmg, + def: a.def, + stam: match a.stam.checked_sub(t.dmg) { + Some(v) => v, + None => 0, + }, + name: a.name.clone() + } } -pub fn main() -> Vec { - let a = Cryp { +fn combat_phase(a: Cryp, b: Cryp) -> (Cryp, Cryp) { + let a_turn = cryp_turn(&a); + let b_turn = cryp_turn(&b); + return ( + assign_dmg(&a, &b_turn), + assign_dmg(&b, &a_turn), + ); +} + +fn battle(a: Cryp, b: Cryp) -> (Cryp, Cryp) { + loop { + let combat = combat_phase(a.clone(), b.clone()); + println!("{:?}", combat); + if combat.0.stam == 0 || combat.1.stam == 0 { + return combat; + } + } +} + +pub fn main() { + let a = Cryp { name: "pronounced \"creeep\"".to_string(), - dmg: 213213213, - def: 129435899, - stam: 342687328, + dmg: 10, + def: 5, + stam: 5, }; let b = Cryp { name: "lemongrass tea".to_string(), - dmg: 213213213, - def: 129435899, - stam: 342687328, + dmg: 8, + def: 8, + stam: 10, }; - - return battle(a, b); + battle(a, b); + return; } #[cfg(test)]