※ 引述《fish770130 (夕提)》之銘言:
: 第一個字為該步欲行棋的兵種,7種棋子代表0-7,共7碼
: 第二個字為該子所在的路:1-9(若同一路有兩顆同樣的棋子,則改成前後),共11碼
: 第三個字為兵種(第一個字)的移動方式,只有「進、退、平」三種可能,共3碼
: 第四個字為一數字:(1-9)共9碼
: 若兵種為斜向移動型,則此數字代表要進到哪一路,或要退到哪一路。
: 若兵種為直橫向移動型,則分兩種情況:
: 若移動方式為「進」或「退」,則此數字代表「縱向」移動的距離。
: 若為「平」,則此數字代表要平「移」到哪一路。
: 所以我們可以把暗號簡化成一個7碼+11碼+3碼+9碼的暗號
: 如果再搭配二進位表示例如:011(象)-0111(七)-00(進)-1001(九)
: 如此一來每移動一次棋只需要忍受13次震動即可下子
這種方法太複雜了
棋盤上同一個位置只會有一個棋子(除非是軍儀這種可以疊的)
那只要用位置->位置來代表就能知道要移動棋子到哪邊
加上非暗棋的棋盤初始棋子都是固定的 只要一路追蹤路徑
把每一動的Snapshot重疊起來計算
就可以知道現在某個位置是哪一顆棋子
以西洋棋來說:
https://i.imgur.com/OhWKkEm.png
是一個8x8的棋盤
如果使用使用二進位表達位置(橫,直)->(橫,直)
勢必需要(2^3,2^3)->(2^3,2^3)的位數
總共十二位 動一次要震動12下 實在太多了
但如果能辨識三種震動方式 0,1,2
就會變成三進位 每一個位數可以縮短為(3^2,3^2)
那只需要震動8次就可以表達從A位置到B位置
對照表:
a b c d e f g h i
1 2 3 4 5 6 7 8 9
00 01 02 10 11 12 20 21 22
像是我要從a1移動到b3
只需要 00(a) 00(1) 01(b) 02(3)
就能知道要把a1的棋子移動到b3
從12下減少到8下震動
也能減輕棋手的負擔
不過西洋棋還算簡單的
像中國象棋棋盤是9*10 上面的三進位不夠用了 需要多一位
而圍棋則是19*19 肯定需要更複雜的震動代碼
具體怎麼做 我不想繼續思考了