vec magic

This commit is contained in:
ntr 2018-08-05 22:57:46 +10:00
parent e7b3891095
commit 2dd7128455

View File

@ -16,14 +16,10 @@ struct Turn {
def: u64,
}
// #[derive(Debug)]
// pub struct Battle {
// cryps: Vec<Cryp>,
// }
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);