From 2dd7128455e2daf9c632ea555c289d3bd26e10a6 Mon Sep 17 00:00:00 2001 From: ntr Date: Sun, 5 Aug 2018 22:57:46 +1000 Subject: [PATCH] vec magic --- src/lib.rs | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 7bcb71c6..9b3c8cf4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,14 +16,10 @@ struct Turn { def: 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!("{:b} & {:b}", att, roll); return att & roll; } @@ -50,7 +46,7 @@ fn assign_dmg(a: &Cryp, t: &Turn) -> Cryp { } } -fn combat_phase(a: Cryp, b: Cryp) -> (Cryp, Cryp) { +fn combat_phase(a: &Cryp, b: &Cryp) -> (Cryp, Cryp) { let a_turn = cryp_turn(&a); let b_turn = cryp_turn(&b); return ( @@ -60,28 +56,55 @@ fn combat_phase(a: Cryp, b: Cryp) -> (Cryp, Cryp) { } fn battle(a: Cryp, b: Cryp) -> (Cryp, Cryp) { + let mut cryps = vec![ + a.clone(), + b.clone() + ]; loop { - let combat = combat_phase(a.clone(), b.clone()); + let combat = combat_phase(&cryps[0], &cryps[1]); println!("{:?}", combat); if combat.0.stam == 0 || combat.1.stam == 0 { return combat; } + cryps = vec![combat.0, combat.1]; } } +// fn main() { +// let mut bodies = vec![ +// Body { x: 10, y: 10, v: 0 }, +// Body { x: 20, y: 30, v: 0 }, +// ]; + +// for _ in 0..2 { +// let next_bodies = bodies +// .iter() +// .map(|b| { +// let next_v = bodies +// .iter() +// .fold(b.v, { |a, b_inner| a + b.x * b_inner.x }); +// Body { v: next_v, ..*b } +// }) +// .collect(); +// bodies = next_bodies; +// } + +// println!("{:?}", bodies); +// } + pub fn main() { let a = Cryp { name: "pronounced \"creeep\"".to_string(), dmg: 10, def: 5, - stam: 5, + stam: 25, }; let b = Cryp { name: "lemongrass tea".to_string(), dmg: 8, def: 8, - stam: 10, + stam: 25, }; battle(a, b);