summaryrefslogtreecommitdiff
path: root/_prototype/README_zh_CN.md
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-04-22 20:24:18 +0800
committer魏曹先生 <1992414357@qq.com>2026-04-22 20:24:18 +0800
commit277bc93f84b298c7cb24e136f67eb237fb3a68a2 (patch)
tree3a678677882e9884a2a17fa828358d1c9fd3dd9c /_prototype/README_zh_CN.md
parent3e3ffa97985ed588ef46e007edb7507189a65e8e (diff)
Move prototype files to _prototype directoryHEADmaster
Diffstat (limited to '_prototype/README_zh_CN.md')
-rw-r--r--_prototype/README_zh_CN.md154
1 files changed, 154 insertions, 0 deletions
diff --git a/_prototype/README_zh_CN.md b/_prototype/README_zh_CN.md
new file mode 100644
index 0000000..49d30a5
--- /dev/null
+++ b/_prototype/README_zh_CN.md
@@ -0,0 +1,154 @@
+# MarkDialog
+
+> 用 Markdown 来书写您的剧情!
+
+## 一些碎碎语
+
+这是一个我个人用于学习的项目,为了快速实现我想要的效果,项目中实验性地使用了 **Vibe Coding**
+
+## 介绍
+
+MarkDialog 是 **书写文字剧情的范式**,它定义了如何用 **Markdown** 来描述文字冒险游戏的对话。
+
+它允许你:
+
+- 使用 **六级标题** 表示角色
+- 使用 **标题** 表示段落
+- 使用 **超链接** 表示跳转
+- 使用 **代码块** 来控制速度、画面,与游戏内容互动
+
+> [!NOTE]
+> 如果你想了解 Markdialog 的语法,可以点击此处
+>
+> [Markdialog 示例文章](#示例文章)
+
+## 工具链
+
+MarkDialog 提供了编译工具 `mdialogc`,它可以将您的 **Markdown** 文件编译成中间语言,以快速地在任何前端播放或执行。
+
+```bash
+# 执行,将会输出 YourMarkdown.dialog
+mdialogc -i YourMarkdown.md
+```
+
+目前支持的前端:
+
+- [Rust](#Rust 示例)
+
+## 其他
+
+#### 示例文章
+
+```markdown
+# 对话
+
+###### 爱丽丝
+
+早上好,鲍勃。
+
+你吃早饭了么?
+
+- [当然吃了!](#鲍勃吃过了早饭)
+- [并没。](#鲍勃还没吃早饭)
+- [我还不饿。](#鲍勃并不饿)
+
+## 鲍勃吃过了早饭
+
+###### 鲍勃
+
+我当然**吃了早饭**!
+
+###### 爱丽丝
+
+*哦。*我还想你跟我一起去吃呢。
+
+###### 旁白
+
+(剧情结束)
+
+## 鲍勃还没吃早饭
+
+###### 鲍勃
+
+并没吃。
+
+###### 爱丽丝
+
+[好啊!一起去吃早饭么?](#爱丽丝询问是否一起吃早饭)
+
+## 鲍勃并不饿
+
+###### 鲍勃
+
+*我其实不饿*?
+
+###### 爱丽丝
+
+那算了,今天太遗憾了。(*小声嘟囔*)
+
+###### 旁白
+
+(剧情结束)
+
+## 爱丽丝询问是否一起吃早饭
+
+###### 鲍勃
+
+让我想想。。。
+
+- 走吧!
+- 算了,我[并不饿](#鲍勃并不饿)
+
+###### 爱丽丝
+
+好啊!走吧!
+
+###### 旁白
+
+(于是鲍勃和爱丽丝一起吃了早饭)
+
+(剧情结束)
+```
+
+#### Rust 示例
+
+```toml
+# Cargo.toml
+[package]
+name = "your_proj"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+markdialog = "0.1"
+```
+
+```rust
+// main.rs
+use markdialog::{markdialog, step};
+
+markdialog!(my = "alice_and_bob.dialog");
+
+fn main() {
+ let my_step = my::get_step(step!("鲍勃吃过了早饭")).unwrap();
+ let sentence = my_step.sentences[0];
+ println!(
+ "{} said : \"{}\"",
+ sentence.character.unwrap_or_default(),
+ sentence
+ .content_tokens
+ .iter()
+ .map(|token| match token {
+ my::Token::Text(t) => t,
+ my::Token::BoldText(t) => t,
+ my::Token::ItalicText(t) => t,
+ my::Token::BoldItalicText(t) => t,
+ _ => "",
+ }
+ .to_string())
+ .collect::<Vec<String>>()
+ .join("")
+ )
+}
+
+```