接到一個工作任務(wù),需要實現(xiàn)一個能夠下圍棋的App应民,對手是機器。
初步討論夕吻,選擇單獨做一個iPad版本诲锹,開發(fā)語言我選擇了 Swift。盡管 Swift 還在演進中涉馅,等新版的 iOS 和 XCode 發(fā)布后归园,會升級到第4版,但至少我可以在這個間隙來掌握 Swift 的主要語法稚矿。同時考慮到庸诱,如果招人的話,會Swift語言本身也是一個過濾條件晤揣,有能力掌握或者自學(xué)的桥爽,水平不會太差。
既然要做圍棋昧识,那么先要了解一下圍棋的基本知識钠四。拿來騰訊圍棋(野狐)玩了幾把,居然第一把執(zhí)黑把對方給吃完了跪楞。頓時干勁十足缀去,當然侣灶,后來幾把都輸?shù)靡凰浚欢▌葑匀怀蕴潯?/p>
野狐上初級玩家是可以選擇小棋盤的缕碎,因此先從認識棋盤下手褥影。
根據(jù) wiki 上圍棋的介紹,標準棋盤有縱橫19根黑線阎曹,相交的點用來放棋子伪阶。棋子分為黑白兩方,執(zhí)黑先行处嫌,每次輪流放一個棋子在交叉點上栅贴。
為了交流和記憶,棋盤上可以標記坐標熏迹,最常見的是從黑方視角觸發(fā)檐薯,按照左手系坐標從左下角開始標記,x軸方向用英文字母表示注暗,從A開始坛缕,y軸方向用數(shù)字表示,從1開始捆昏。由于計算機字體的緣故赚楚,x軸可以跳過字母I,以防止和數(shù)字1搞混骗卜。也有其他坐標法宠页,不作展開。
同時為了方便定位寇仓,在標準棋盤上举户,第4根、第10根和第16根(19-4+1)橫線遍烦,和第4根俭嘁、第10根和第16根縱線交叉形成的9個點,叫做星服猪,會有個黑點進行標記供填,中間的那個黑點叫做天元。
棋盤是可以縮小的罢猪,標準棋盤是19x19捕虽,也有9x9、13x13坡脐,以及15x15、17x17等房揭,星的位置對應(yīng)調(diào)整备闲,天元保持在棋盤中央晌端。值得一提的是,9x9的線是第3根而不是第四根恬砂。
棋譜有一個標準格式 SGF咧纠,官方網(wǎng)站:http://www.red-bean.com/sgf/,還沒來得及深入了解泻骤。
圍棋術(shù)語中英文:http://senseis.xmp.net/?ChineseGoTerms
圍棋下棋時漆羔,除了在交叉點輪流放棋子外,會有一些規(guī)則狱掂,比如可以把圍起來的對方棋子吃掉(移除棋子)演痒,以及有些位置是不能下的(比如打劫、沒有氣或者不可自殺)趋惨。
有了這些信息鸟顺,棋盤可以開始具體設(shè)計了。