Skip to main content

Crate rocalc

Crate rocalc 

Source
Expand description

下面是一段代码示例,展示了如何以毛毛的破罐破摔技能、绒光优优的天光技能、水蓝蓝的天洪技能计算各种情况下对恶魔狼王造成的伤害。

   use rocalc::models::init_sprite::*;
   use rocalc::structs::*;
   use rocalc::enums::*;
   use anyhow::Result;
fn main() -> Result<()> {
    // 你的精灵数据库路径
    const db_path: &str = "assets/sprites.sqlite";

    // 调用 rusqlite 获取精灵种族值
    let wolf_rac = get_race_value(db_path, "恶魔狼王")?;
    let butterfly_rac = get_race_value(db_path, "毛毛")?;
    let youyou_rac = get_race_value(db_path, "绒光优优")?;
    let blue_rac = get_race_value(db_path, "水灵")?;

    // 使用 Tri 结构定义计算精灵面板所需的三项:性格、种族值、个体值
    let mut wolf_tri = Tri {
        car: Car::Sanguine, // 定义性格
        rac: wolf_rac, // 定义种族值
        ind: vec![ // 定义个体值
        (Panel::Hp, 10.0),
        (Panel::Spd, 10.0),
        (Panel::Atk, 10.0),
        ],
    };

    let mut butterfly_tri = Tri {
        car: Car::Clever,
        rac: butterfly_rac,
        ind: vec![
        (Panel::Hp, 10.0),
        (Panel::Spd, 10.0),
        (Panel::MAtk, 10.0),
        ],
    };
    
    // 或者可以使用new方法
    let mut youyou_ind = vec![
        (Panel::Hp, 10.0),
        (Panel::Spd, 10.0),
        (Panel::MAtk, 10.0),
    ];
    let mut youyou_tri = Tri::new(Car::Timid, youyou_rac, youyou_ind);

    let mut blue_ind = vec![
        (Panel::Hp, 10.0),
        (Panel::Spd, 10.0),
        (Panel::MAtk, 10.0),
    ];
    let mut blue_tri = Tri::new(Car::Clever, blue_rac, blue_ind);

    // 根据精灵的三项进行面板修正,得到真正的面板属性
    wolf_tri.cor();
    butterfly_tri.cor();
    youyou_tri.cor();
    blue_tri.cor();

    // 用毛毛的破罐破摔技能打恶魔狼王
    let mut po = Cfor::new(butterfly_tri.rac.m_atk.round(), wolf_tri.rac.m_dfe.round(), 80.0);
    // 本系加成和双倍克制
    po.prop = 1.25;
    po.count= 2.00;

    // 吃破罐破摔的技能威力加成
    po.pow_appd = 60.0;
    println!{"破罐破摔{}", po.cal()};

    // 用水灵的天洪技能打恶魔狼王
    let mut tianhong = Cfor::new(blue_tri.rac.m_atk.round(), wolf_tri.rac.m_dfe.round(), 150.0);
    tianhong.prop = 1.25;
    println!{"天洪:{}", tianhong.cal()};

    // 算上雨天加成
    tianhong.pow_buff= 1.75;
    println!{"雨天天洪:{}", tianhong.cal()};

    // 用绒光优优的天光技能打恶魔狼王
    let mut tianguang = Cfor::new(youyou_tri.rac.m_atk.round(), wolf_tri.rac.m_dfe.round(), 95.0);
    tianguang.prop = 1.25;
    tianguang.count = 2.0;
    println!{"天光:{}", tianguang.cal()};

    tianguang.pow_buff = 1.5;
    println!{"放晴天光:{}", tianguang.cal()};

    tianguang.pow_buff = 1.5 * 1.75;
    println!{"雨天天光:{}", tianguang.cal()};
    Ok(())
 }

Modules§

enums
models
structs