棋谱欣赏(无论围棋还是象棋)时,提供一个滚动条,以便用户随时观看任何一步时的局面。但是,如果棋谱包含了分支走法,如何表达呢?
首先想到的是,滚动条是不够用了,必须用Treeview!
但是,这样的棋谱有2类信息:顺序走子和某局面下的多种分支走法,如何分部表达呢?
想到2种表达模式:
模式1:
Init:state {$+$} 初始局面 {@ CMXSJSXMC _P_____P_ _________ B_B_B_B_B ...@} {!R!}/{!B!} {# 注释[\n]注释 #}
├1:xyxy {# 注释[\n]注释 #}
├2:xyxy {# 注释[\n]注释 #}
├3:xyxy {# 注释[\n]注释 #}
├4:xyxy {# 注释[\n]注释 #}
├5:xyxy {# 注释[\n]注释 #}
│├5-1:state # 分支之一 {$+$} {# 注释[\n]注释 #}
││├6:xyxy {# 注释[\n]注释 #}
││├7:xyxy {# 注释[\n]注释 #}
│││├7-1:state # 分支之一 {$+$} {# 注释[\n]注释 #}
││││├8:xyxy {# 注释[\n]注释 #}
││││├9:xyxy {# 注释[\n]注释 #}
││││├10:xyxy {# 注释[\n]注释 #}
││││├11:xyxy {# 注释[\n]注释 #}
││││└7-1:state # 分支结束 {$-$} {# 注释[\n]注释 #}
│││└7-2:state # 分支之一 {$+$} {# 注释[\n]注释 #}
│││ ├8:xyxy {# 注释[\n]注释 #}
│││ ├9:xyxy {# 注释[\n]注释 #}
│││ │├9-1:state # 分支之一 {$+$} {# 注释[\n]注释 #}
│││ ││├10:xyxy {# 注释[\n]注释 #}
│││ ││├11:xyxy {# 注释[\n]注释 #}
│││ ││└9-1:state # 分支结束 {$-$} {# 注释[\n]注释 #}
│││ │└9-2:state # 分支之一 {$+$} {# 注释[\n]注释 #}
│││ │ ├10:xyxy {# 注释[\n]注释 #}
│││ │ ├11:xyxy {# 注释[\n]注释 #}
│││ │ ├12:xyxy {# 注释[\n]注释 #}
│││ │ └9-2:state # 分支结束 {$-$} {# 注释[\n]注释 #}
│││ └7-2:state # 分支结束 {$-$} {# 注释[\n]注释 #}
││├8:xyxy {# 注释[\n]注释 #}
││└5-1:state # 分支结束 {$-$} {# 注释[\n]注释 #}
│├5-2:state # 分支之一 {$+$} {# 注释[\n]注释 #}
││├6:xyxy {# 注释[\n]注释 #}
││├7:xyxy {# 注释[\n]注释 #}
││└5-2:state # 分支结束 {$-$} {# 注释[\n]注释 #}
│└5-3:state # 分支之一 {$+$} {# 注释[\n]注释 #}
│ ├6:xyxy {# 注释[\n]注释 #}
│ ├7:xyxy {# 注释[\n]注释 #}
│ ├8:xyxy {# 注释[\n]注释 #}
│ ├9:xyxy {# 注释[\n]注释 #}
│ └5-3:state # 分支结束 {$-$} {# 注释[\n]注释 #}
├6:xyxy {# 注释[\n]注释 #}
├7:xyxy {# 注释[\n]注释 #}
├8:xyxy {# 注释[\n]注释 #}
├9:xyxy {# 注释[\n]注释 #}
├10:xyxy {# 注释[\n]注释 #}
└Init:结束 {$-$} {# 注释[\n]注释 #}
(“结束 {$-$}”节点好像可以不要)
它的缺点是,分支会把顺序走法挤到很远的下方(收缩产生分支的节点,倒是可以很容易隐藏那些分支)
模式2:
初始:局面,说明,对弈双方
└第1步
└第2步
└第3步
└第4步
├第5步
│└第6步
│ └第7步
│ └第8步
│ └第9步
│ └第10步
│ └第11步
│ └第12步
├如果走在a
│├第5步
││└第6步
││ └第7步
│└如果走在a
│ └第6步
│ └第7步
├如果走在b
│└第5步
│ └第6步
│ ├第7步
│ └如果走在a
│ └第7步
│ └第8步
└如果走在c
└第5步
└第6步
└第7步
它的缺点是,顺序走法会把分支挤到很远的下方(收缩产生分支的节点,倒是可以很容易隐藏那些后续的顺序走法)