作者carlcarl (carl)
看板java
標題[問題] "播放"圍棋棋譜的問題
時間Mon Aug 4 01:11:22 2008
請問一下
我是想寫個JavaApplet 來播放圍棋棋譜
檔案格式 就以.sgf為主
雖然還沒到這個進度 不過還是想問一下:
判斷"氣"的話 怎麼判斷才好?
一塊棋如果氣都被沒了 那就代表要被提掉
然後每一手(步) 都要做氣的判斷.....
我的話大概會先設個二維陣列叫做main
空的代表0 黑代表1 白代表2 3表示已經尋訪過的
判斷要不要提子的方法就是用兩個遞迴的程式(一個是黑 一個是白)
(先假設是黑)
先設一個廣域bool變數為false
另外複製上面那個二維陣列叫做copy
從copy第一格開始 判斷 如果是0,2,3的話跳過
1的話 就丟遞迴 從四個方向開始跑
-------------------------------------
如果變數為true 就return
1就繼續遞迴 並設為3
2 和 3就return
0的話 設變數為true 並return
--------------------------------------
跑完第一格的之後 如果變數為true
就再跑一次遞迴 將這塊都設為0
接著移到下一格再重複上面的步驟...
跑完這361格之後
將copy 覆蓋到原來的陣列這樣
我在想速度會不會很慢啊= =a
因為還要再畫圖形...........
還是有其他什麼比較快的方法??@@
另外 還有什麼需要注意的嗎
打劫的話 因為只有播放 所以應該沒什麼差@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.244.193.84
推 H45:有看過 Jago 的原始碼嗎? 08/04 10:09
→ carlcarl:剛剛看了一下 還真是......看不懂 orz 08/04 13:10
推 H45:是啦,註解有點少,只能慢慢追.... 08/04 13:19
推 etrexetrex:每一手棋只要判斷 會不會包住他上下左右的對手就好吧? 08/04 19:28
→ carlcarl:嗯 好像有道理耶 這樣就只需要對四個方向做遞迴找就好了 08/04 19:40
推 sss2500:感覺每手都遞迴搜尋的話可能速度上會有問題,有沒有考慮過 08/06 11:17
推 sss2500:每個落子都有個屬性叫"氣"...然後新落子會參考鄰近己方的 08/06 11:19
推 sss2500:氣數.然後同步更新~ 怕同步數量多的話還有其他解決方法XD 08/06 11:22