demo-sponge.rs

1.1 kB · rust · 43 lines

1use mrlycore::colors::{shades, GREEN};2use mrlycore::errors::Result;3use mrlyfig::{ink, iso, save, Board, Color, Frame};4use mrlymath::three::designs;56const CODE: u128 = 127;7const NUMBER: usize = 2;8const LEVEL: usize = 4;910fn shade() -> [Color; 3] {11    shades(GREEN)12}1314fn corner(frame: Frame, size: f64, right: bool) -> Frame {15    let side = frame.w * size;16    let (x, y) = if right {17        (frame.x + frame.w - side, frame.y + frame.h - side)18    } else {19        (frame.x, frame.y)20    };21    Frame::new(x, y, side, side)22}2324fn main() -> Result<()> {25    let seed = designs::create(CODE, NUMBER, 1, 2)?;26    let solid = designs::create(CODE, NUMBER, LEVEL, 2)?;27    assert_eq!(seed.types().sum(), 7);28    assert_eq!(solid.types().sum(), 7u64.pow(LEVEL as u32));29    assert_eq!(solid.types().shape, vec![16, 16, 16]);3031    let mut board = Board::square();32    let frame = board.frame(0.08);33    iso::draw(34        &mut board,35        corner(frame, 0.4, false),36        &seed,37        shade(),38        Some(ink::ground()),39    );40    iso::draw(&mut board, corner(frame, 0.64, true), &solid, shade(), None);41    save("demo-sponge", &board)?;42    Ok(())43}