流程图测试:网文「打斗套路」总结

前一阵在龙空看到「史上最全打斗套路」,「思维导图」版的图片存了下来,但帖子找不到了。

下面以此为例,测试在流程图插件协助下,运用Markdown格式进行「码字工程」实践。

尽量遵守原作者的「思路」,对细节仅限于「技术上」的调整,不加入自己的判断。

透过现象看本质,把「思维导图」转换成「树状列表」

以下内容全部来自「原版」,连错别字和标点符号都原封不动抄下来。

  1. 前期铺垫
    1. 谁邀战,为什么
    2. 对手有什么厉害之处
    3. 对手有什么令人讨厌之处
    4. 其他人对这一战的看法和反应,风凉话
    5. 主角发怒了吗
    6. 采取什么策略
      1. 隐藏实力
      2. 秒杀
      3. 力敌
      4. 智取
  2. 营造气氛
    1. 天气如何
    2. 景物如何
    3. 压抑
    4. 风雨欲来
    5. 万众瞩目
  3. 主角登场
    1. 登场前亲友团怎么说
    2. 旁观者怎么说
    3. 主角以怎样的姿态登场
    4. 别人对他的登场什么反应
    5. 长辈的反应
    6. 对手亲友团的反应
    7. 主角亲友团的反应
    8. 登场之后,对手在做什么
      1. 是否有挑衅
      2. 是否有蔑视
  4. 对手登场
    1. 登场前对手亲友团说什么
    2. 主角亲友团说什么
    3. 对手以怎样状态登场
    4. 别人对它们的登场是什么反应
    5. 长辈的反应
    6. 对手亲友团的反应
    7. 主角亲友团的反应
    8. 比武沸腾了?
    9. 登场之后的气氛如何?
  5. 裁判出场
    1. 谁是裁判
    2. 规则是什么
      1. 可以杀人么
      2. 有什么限制
      3. 有什么空子
    3. 比武开始
    4. 是否有固定礼仪
    5. 是否有挑衅
  6. 众人对结果的预判
    1. 亲友团看法
    2. 高层看法
    3. 谁看好?为什么
    4. 各自的长辈怎么看
    5. 最大的boss怎么看
  7. 对手的情况
    1. 对手对主角的态度
      1. 完全不了解
        • 轻视、蔑视、自信爆棚?
      2. 相对了解
        1. 重视、算计、担忧
        2. 拼死也要杀主角
        3. 不愿意拼命/退缩
    2. 对手的实力
      1. 不堪一击
      2. 势均力敌
      3. 有木有压箱底的绝招
      4. 有木有保命的法宝
    3. 对手的性格和背景
      1. 龙套or反派
      2. 与主角的矛盾
      3. 是否不死不休、冤魂不散、化敌为友
      4. 来头很大,背后有什么人
      5. 斩杀的后果
      6. 留命的好处
  8. 打斗过程
    1. 比武开始前
      1. 是否对话
      2. 对手说了什么:矛盾、挑衅、大话
      3. 主角说什么或不说
    2. 谁先动手
      1. 对手雷声大雨点小-被秒杀
      2. 对手强,惨胜
      3. 对手弱,主角扮猪
      4. 对手有反扑一下,主角艰难胜
      5. 势均力敌
        1. 拉锯战
        2. 长辈出手
  9. 打斗时的场外
    1. 各自亲友团看法
      1. 令其意外,重新审视
      2. 继续坚持原来的看法,但兴奋、高兴
      3. 改编看法,态度改变
    2. 长辈看法
      1. 维持原判断
      2. 讨论双方招式
        • 从招式中看出什么
      3. 有什么感叹
      4. 打算和计划
    3. 主角怎么看
      1. 意外
      2. 改变策略
    4. 对手怎么看
      1. 意外、震惊、骇然
      2. 要不要出大招
      3. 心理
  10. 打斗之后
    1. 亲友团反应
      1. 吸凉气
      2. 咽口水
      3. 不可能,不相信
      4. 向别人炫耀,自己认识主角,早就知道……
      5. 喜极而泣
    2. 高手长辈反应
      1. 极为震惊
      2. 意料之外,惊讶、疑惑
      3. 意料之中,几个喜几个愁
      4. 另眼相看、有想法、有打算
    3. 对手的反应
      1. 倍受打击
      2. 一蹶不振
      3. 不相信、不甘心、使阴招
      4. 心服口服
      5. 接受事实、努力修炼、回头再战
    4. 主角的行为
      1. 赢了以后继续打击、警告
      2. 赢后离开
      3. 高兴并意外
      4. 意料之中,古井不波
    5. 胜利的收获
      1. 战斗经验
      2. 奖励:法宝、女人、声誉、资格
      3. 等级突破
    6. 胜利后路症
      1. 引来更强的对手
      2. 被人猜忌,提防
      3. 被对手长辈打压,追杀

然后从「不入流码农」的角度审视一遍,除了存在「同义反复」(如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é)的「故事线」功能,那可是按照「专业作家」而不是「软件工程师」的需求提供的。于是不再以这篇「打斗套路」举例。


补充:

对于「支持扩展插件」的效果,可以参考在「作业部落」上传的内容:《(流程图测试)网文「打斗套路」总结注:链接已失效

发表于更新于