10个版本 (3个稳定版)

1.0.2 2022年6月6日
1.0.1 2022年3月16日
1.0.0 2021年12月26日
0.6.1 2021年8月15日
0.2.0 2017年6月24日

#509游戏开发

Download history 22/week @ 2024-03-11 16/week @ 2024-03-18 20/week @ 2024-03-25 25/week @ 2024-04-01 9/week @ 2024-04-08 9/week @ 2024-04-15 22/week @ 2024-04-22 11/week @ 2024-04-29 5/week @ 2024-05-06 8/week @ 2024-05-13 8/week @ 2024-05-20 8/week @ 2024-05-27 9/week @ 2024-06-03 14/week @ 2024-06-10 8/week @ 2024-06-17 23/week @ 2024-06-24

每月下载量55次
2 包 使用

MIT 协议

58KB
1.5K SLoC

csa-rs

Github Actions Coverage Status crates.io docs.rs

基于CSA格式的将棋游戏序列化和反序列化库。CSA格式是一种用于记录将棋游戏的纯文本格式。此库支持解析CSA格式的字符串以及从结构体生成CSA格式的字符串。有关CSA格式的详细信息,请参阅此处

文档

使用方法

以下是将CSA格式的字符串解析为结构体的示例。

use std::time::Duration;
use csa::{parse_csa, Action, Color, GameRecord, MoveRecord, PieceType, Square};

let csa_str = "\
V2.2
N+NAKAHARA
N-YONENAGA
$EVENT:13th World Computer Shogi Championship
PI
+
+2726FU
T12
";

let game = parse_csa(csa_str).expect("failed to parse the csa content");
assert_eq!(game.black_player, Some("NAKAHARA".to_string()));
assert_eq!(game.white_player, Some("YONENAGA".to_string()));
assert_eq!(game.event, Some("13th World Computer Shogi Championship".to_string()));
assert_eq!(game.moves[0],  MoveRecord{
    action: Action::Move(Color::Black, Square::new(2, 7), Square::new(2, 6), PieceType::Pawn),
    time: Some(Duration::from_secs(12))
});

相反,结构体可以组合成CSA格式的字符串。

use std::time::Duration;
use csa::{ Action, Color, GameRecord, MoveRecord, PieceType, Square};

let mut g = GameRecord::default();
g.black_player = Some("NAKAHARA".to_string());
g.white_player = Some("YONENAGA".to_string());
g.event = Some("13th World Computer Shogi Championship".to_string());
g.moves.push(MoveRecord {
    action: Action::Move(
        Color::Black,
        Square::new(2, 7),
        Square::new(2, 6),
        PieceType::Pawn,
    ),
    time: Some(Duration::from_secs(5)),
});
g.moves.push(MoveRecord {
    action: Action::Toryo,
    time: None,
});

let csa_str = "\
V2.2
N+NAKAHARA
N-YONENAGA
$EVENT:13th World Computer Shogi Championship
PI
+
+2726FU
T5
%TORYO
";

assert_eq!(csa_str, g.to_string());

许可

csa-rs遵循MIT协议。请阅读此仓库中的LICENSE文件以获取更多信息。

依赖

~2MB
~33K SLoC