前一阵在龙空看到「史上最全打斗套路」,「思维导图」版的图片存了下来,但帖子找不到了。
下面以此为例,测试在流程图插件协助下,运用Markdown格式进行「码字工程」实践。
尽量遵守原作者的「思路」,对细节仅限于「技术上」的调整,不加入自己的判断。
透过现象看本质,把「思维导图」转换成「树状列表」
以下内容全部来自「原版」,连错别字和标点符号都原封不动抄下来。
- 前期铺垫
- 谁邀战,为什么
- 对手有什么厉害之处
- 对手有什么令人讨厌之处
- 其他人对这一战的看法和反应,风凉话
- 主角发怒了吗
- 采取什么策略
- 隐藏实力
- 秒杀
- 力敌
- 智取
- 营造气氛
- 天气如何
- 景物如何
- 压抑
- 风雨欲来
- 万众瞩目
- 主角登场
- 登场前亲友团怎么说
- 旁观者怎么说
- 主角以怎样的姿态登场
- 别人对他的登场什么反应
- 长辈的反应
- 对手亲友团的反应
- 主角亲友团的反应
- 登场之后,对手在做什么
- 是否有挑衅
- 是否有蔑视
- 对手登场
- 登场前对手亲友团说什么
- 主角亲友团说什么
- 对手以怎样状态登场
- 别人对它们的登场是什么反应
- 长辈的反应
- 对手亲友团的反应
- 主角亲友团的反应
- 比武沸腾了?
- 登场之后的气氛如何?
- 裁判出场
- 谁是裁判
- 规则是什么
- 可以杀人么
- 有什么限制
- 有什么空子
- 比武开始
- 是否有固定礼仪
- 是否有挑衅
- 众人对结果的预判
- 亲友团看法
- 高层看法
- 谁看好?为什么
- 各自的长辈怎么看
- 最大的boss怎么看
- 对手的情况
- 对手对主角的态度
- 完全不了解
- 轻视、蔑视、自信爆棚?
- 相对了解
- 重视、算计、担忧
- 拼死也要杀主角
- 不愿意拼命/退缩
- 对手的实力
- 不堪一击
- 势均力敌
- 有木有压箱底的绝招
- 有木有保命的法宝
- 对手的性格和背景
- 龙套or反派
- 与主角的矛盾
- 是否不死不休、冤魂不散、化敌为友
- 来头很大,背后有什么人
- 斩杀的后果
- 留命的好处
- 打斗过程
- 比武开始前
- 是否对话
- 对手说了什么:矛盾、挑衅、大话
- 主角说什么或不说
- 谁先动手
- 对手雷声大雨点小-被秒杀
- 对手强,惨胜
- 对手弱,主角扮猪
- 对手有反扑一下,主角艰难胜
- 势均力敌
- 拉锯战
- 长辈出手
- 打斗时的场外
- 各自亲友团看法
- 令其意外,重新审视
- 继续坚持原来的看法,但兴奋、高兴
- 改编看法,态度改变
- 长辈看法
- 维持原判断
- 讨论双方招式
- 从招式中看出什么
- 有什么感叹
- 打算和计划
- 主角怎么看
- 意外
- 改变策略
- 对手怎么看
- 意外、震惊、骇然
- 要不要出大招
- 心理
- 打斗之后
- 亲友团反应
- 吸凉气
- 咽口水
- 不可能,不相信
- 向别人炫耀,自己认识主角,早就知道……
- 喜极而泣
- 高手长辈反应
- 极为震惊
- 意料之外,惊讶、疑惑
- 意料之中,几个喜几个愁
- 另眼相看、有想法、有打算
- 对手的反应
- 倍受打击
- 一蹶不振
- 不相信、不甘心、使阴招
- 心服口服
- 接受事实、努力修炼、回头再战
- 主角的行为
- 赢了以后继续打击、警告
- 赢后离开
- 高兴并意外
- 意料之中,古井不波
- 胜利的收获
- 战斗经验
- 奖励:法宝、女人、声誉、资格
- 等级突破
- 胜利后路症
- 引来更强的对手
- 被人猜忌,提防
- 被对手长辈打压,追杀
然后从「不入流码农」的角度审视一遍,除了存在「同义反复」(如10.1的「吸凉气」「咽口水」都是一个意思)之外,还混淆了顺序、分支、循环三种结构。这就是实质为「树状列表」的「思维导图」的弱点,再怎么高大上的名词也回避不了数据结构的本质缺陷。
自底向上划分模块,调整细节,形成若干流程图
在这个过程中,要注意按照「角色」划分模块,这也是为了将来「时序图」做准备,可以用「文艺理论」修饰为「视角」,但未必采用「POV」。也就是说,按照「原版」思路,「流程」始终以主角视角「执行」,其中偶尔插入其它视角作为「子程序」。而「作者」也是一种视角,用来体现「旁白」等描写,用「输入输出」指代。
前期铺垫
开始=>start: 开始 结束=>end: 结束 {对手}=>subroutine: {对手} 谁邀战,为什么 厉害之处 令人讨厌之处 {其他人}=>subroutine: {其他人} 看法 反应 风凉话 condAngry=>condition: 主角发怒了吗? 闷声发大财=>operation: 「闷声发大财」 アイムアングリっぽい=>operation: 「I'm Angry!」 主角决定策略=>operation: {主角} 决定策略: 隐藏实力 秒杀 力敌 智取 开始(right)->{对手}(right)->{其他人}->condAngry condAngry(yes,right)->アイムアングリっぽい->主角决定策略->结束 condAngry(no)->闷声发大财->主角决定策略->结束
营造气氛
开始=>start: 开始 结束=>end: 结束 天气=>inputoutput: 天气如何 景物=>inputoutput: 景物如何 压抑=>inputoutput: 压抑 风雨欲来=>inputoutput: 风雨欲来 万众瞩目=>inputoutput: 万众瞩目 开始->天气(right)->景物(right)->压抑(right)->风雨欲来(right)->万众瞩目->结束
主角登场
开始=>start: 开始 结束=>end: 结束 {主角亲友团}1=>subroutine: {主角亲友团} 怎么说 {旁观者}=>subroutine: {旁观者} 怎么说 {长辈}=>subroutine: {长辈} 什么反应 {对手亲友团}=>subroutine: {对手亲友团} 什么反应 {主角亲友团}2=>subroutine: {主角亲友团} 什么反应 主角登场=>operation: {主角}登场:什么姿态 观察对手=>operation: {主角}观察: {对手}在做什么 cond挑衅=>condition: 对手是否挑衅? cond蔑视=>condition: 对手是否蔑视? 开始(right)->{主角亲友团}1->{旁观者}->主角登场->{长辈}->{对手亲友团}->{主角亲友团}2->观察对手->cond挑衅 cond挑衅(yes)->cond蔑视 cond挑衅(no)->cond蔑视 cond蔑视(yes)->结束 cond蔑视(no)->结束
对手登场
开始=>start: 开始 结束=>end: 结束 {对手亲友团}1=>subroutine: {对手亲友团}说什么 {主角亲友团}1=>subroutine: {主角亲友团}说什么 对手登场=>inputoutput: {对手}登场:怎样状态 {别人}=>subroutine: {别人}什么反应 {长辈}=>subroutine: {长辈}什么反应 {对手亲友团}2=>subroutine: {对手亲友团}什么反应 {主角亲友团}2=>subroutine: {主角亲友团}什么反应 cond沸腾=>condition: 比武沸腾了? 气氛=>inputoutput: 登场后气氛 开始(right)->{对手亲友团}1->{主角亲友团}1->对手登场->{别人}->{长辈}->{对手亲友团}2->{主角亲友团}2->cond沸腾 cond沸腾(yes)->气氛(right)->结束 cond沸腾(no)->气氛(right)->结束
裁判出场
开始=>start: 开始 结束=>end: 结束 描写裁判=>inputoutput: {裁判}是谁 介绍规则=>inputoutput: 规则是什么 可以杀人么 有什么限制 有什么空子 比武开始=>operation: 比武开始 cond礼仪=>condition: 是否有固定礼仪? cond挑衅=>condition: 是否有挑衅? 开始(right)->描写裁判->介绍规则->比武开始->cond礼仪 cond礼仪(yes)->cond挑衅 cond礼仪(no)->cond挑衅 cond挑衅(yes)->结束 cond挑衅(no)->结束
众人对结果的预判
开始=>start: 开始 结束=>end: 结束 {亲友团}=>subroutine: {亲友团} 看法 {高层}=>subroutine: {高层} 看法 {观众}=>subroutine: {观众} 谁看好?为什么 {长辈}=>subroutine: {长辈} 各自的长辈怎么看 {反派}=>subroutine: {反派} 最大的boss怎么看 开始(right)->{亲友团}(right)->{高层}(right)->{观众}->{长辈}->{反派}->结束
对手的情况
开始=>start: 开始 结束=>end: 结束 cond了解=>condition: 对手了解主角么? 对手不了解主角=>inputoutput: {对手} 轻视、蔑视、自信爆棚? 对手相对了解主角=>inputoutput: {对手} 重视、算计、担忧 拼死也要杀主角 不愿意拼命/退缩 对手实力=>subroutine: {对手}实力: 不堪一击or势均力敌 有木有压箱底的绝招 有木有保命的法宝 对手性格和背景=>subroutine: {对手}性格和背景: 龙套or反派 与主角的矛盾 是否不死不休、冤魂不散、化敌为友 来头很大,背后有什么人 斩杀的后果,留命的好处 开始(right)->cond了解 cond了解(yes,right)->对手相对了解主角->对手实力 cond了解(no)->对手不了解主角->对手实力 对手实力->对手性格和背景(right)->结束
打斗过程
开始=>start: 开始 结束=>end: 结束 cond对话=>condition: 是否对话? 对手言论=>operation: {对手} 说了什么: 矛盾、挑衅、大话 主角言论=>operation: {主角} 说什么或不说 cond谁先=>condition: 谁先动手? cond势均力敌=>condition: 势均力敌? cond拉锯战=>condition: 拉锯战? 长辈出手=>operation: {长辈} 出手(终止比赛) 主角胜=>operation: {主角} 1. 对手雷声大雨点小-被秒杀 2. 对手强,惨胜 3. 对手弱,主角扮猪 4. 对手有反扑一下,主角艰难胜 开始(right)->cond对话 cond对话(yes)->对手言论->主角言论->cond谁先 cond对话(no)->cond谁先 cond谁先(yes)->cond势均力敌 cond谁先(no)->cond势均力敌 cond势均力敌(yes)->cond拉锯战 cond势均力敌(no)->主角胜->结束 cond拉锯战(yes)->长辈出手->结束 cond拉锯战(no)->结束
打斗时的场外
开始=>start: 开始 结束=>end: 结束 {亲友团}=>subroutine: {亲友团}看法: 1. 令其意外,重新审视 2. 继续坚持原来的看法,但兴奋、高兴 3. 改编看法,态度改变 {长辈}=>subroutine: {长辈}看法: 1. 维持原判断 2. 讨论双方招式 - 从招式中看出什么 3. 有什么感叹 4. 打算和计划 {主角}=>operation: {主角}怎么看: 1. 意外 2. 改变策略 {对手}=>subroutine: {对手}怎么看: 1. 意外、震惊、骇然 2. 要不要出大招 3. 心理 开始->{亲友团}(right)->{长辈}(right)->{主角}(right)->{对手}->结束
打斗之后
开始=>start: 开始 结束=>end: 结束 {亲友团}=>subroutine: {亲友团}反应: 1. 吸凉气 2. 咽口水 3. 不可能,不相信 4. 向别人炫耀,自己认识主角,早就知道…… 5. 喜极而泣 {高手长辈}=>subroutine: {高手长辈}反应: 1. 极为震惊 2. 意料之外,惊讶、疑惑 3. 意料之中,几个喜几个愁 4. 另眼相看、有想法、有打算 {对手}=>subroutine: {对手}反应: 1. 倍受打击 2. 一蹶不振 3. 不相信、不甘心、使阴招 4. 心服口服 5. 接受事实、努力修炼、回头再战 {主角}=>operation: {主角}表现: 1. 赢了以后继续打击、警告 2. 赢后离开 3. 高兴并意外 4. 意料之中,古井不波 {作者}1=>inputoutput: 胜利的收获: 1. 战斗经验 2. 奖励:法宝、女人、声誉、资格 3. 等级突破 {作者}2=>inputoutput: 胜利后遗症: 1. 引来更强的对手 2. 被人猜忌,提防 3. 被对手长辈打压,追杀 开始->{亲友团}(right)->{高手长辈}(right)->{对手}->{主角}->{作者}1->{作者}2->结束
整理告一段落之后的总结与感想
1,流程图使用「flowchart.js」实现,目前是Typora的内置功能,而VS Code当中没找到相关插件。
2,用Mermaid画流程图也可以,但是不如专用流程图插件的表现更规范,比如这些标准节点的形状。并且目前的Mermaid插件似乎有点问题,节点的文本有长度限制或不支持Unicode,经常渲染失败。
3,FlowChart的缺点,是「分支」结构只有「Yes/No」一种,没有多分支的选项(或者我没找到),于是在「打斗过程」那一节当中,出现了对手实力不同的多种情况,就难以表现,只能大而化之划拉为一个模块留给写手自行处理。
4,按照原版思路,每个「是否」型节点后面都没有提供相关处理,需要酌情补充。比方说「前期铺垫」一节中「主角发怒了吗」节点后面,我就追加了两段处理:「闷声发大财」和「アイムアングリっぽい」。
5,注意上面「画蛇添足」并非什么「恶趣味」,因为实验发现流程图节点命名支持汉字,所以照抄「原版」提纲内容即可,不必非得绞尽脑汁译作英语或用拼音。但是对于半角字符带空格的「I’m Angry!」这种就不能照抄了,正好顺便实验其它Unicode字符,用片假名拼写再加个流行平假名词尾,娱乐至死の逗哔们看上去会比较亲切吧?
下一步的计划和建议
1,因为尽量遵守「原版」思路,发现了以「代码」视角观察的不规范和不符合逻辑之处。但是同时也必须指出,「思维导图」侧重点就是储存脑洞,没必要太严格,如果时时刻刻按照写代码的要求处理流程,内容会死板许多,限制会大得多。
2,流程图仅仅体现了时间线的顺序,不见得是文字表现的顺序,倒叙插叙等手法,在图中体现不出来。所以写手们也不用抱怨「码字工程」有利于硅基计算而不利于体现碳基智慧的荣耀。同时对于网文这种快餐文学而言,很多写手都知道尽量不要用倒叙插叙的原则,读者同时追十几本几十本书每天看一章,记不住前因后果,一旦感觉莫名其妙就下架了也。
3,按理说接下来就该做「序列图」了,但是原版思路不适合这种表现形式,我又不想按照自己的思路修改。这里还是参考「写手咖啡」(Writer’s Café)的「故事线」功能,那可是按照「专业作家」而不是「软件工程师」的需求提供的。于是不再以这篇「打斗套路」举例。
补充:
对于「支持扩展插件」的效果,可以参考在「作业部落」上传的内容:《(流程图测试)网文「打斗套路」总结注:链接已失效》