公保杰 安見才讓
摘 要: 七方棋是藏區(qū)廣為流傳的傳統(tǒng)棋類游戲,是藏族文化寶庫中一顆璀璨的明珠。隨著信息時代到來,許多傳統(tǒng)游戲被引入到網(wǎng)絡中,成為人們主要的娛樂方式。采用C#開發(fā)了具有網(wǎng)絡對弈功能的藏族七方棋游戲軟件,該軟件具有網(wǎng)絡對弈、網(wǎng)絡聊天、悔棋、觀戰(zhàn)、保存棋局等功能。經(jīng)過局域網(wǎng)測試,對弈規(guī)則準確,軟件運行穩(wěn)定,基本滿足對弈要求。網(wǎng)絡對弈的實現(xiàn)對藏棋的普及,發(fā)展和傳承和具有積極意義。
關(guān)鍵詞: 藏棋; 方棋; 七方棋; 棋類游戲
中圖分類號:TP319 文獻標志碼:A 文章編號:1006-8228(2018)09-28-03
Abstract: Tibetan seven-square chess is a popular Tibetan traditional board game, it is a shining pearl in the treasure-house of Tibetan culture. With the rapid development of computer and the Internet, many traditional games were introduced into the network, and become the main form of entertainment. In this paper, c# is used to develop the software of Tibetan seven-square chess network game, the software has the functions of single-player game, network game, network chat, back moves, watching and so on. The implementation of Internet version of the Tibetan seven-square chess is of positive significance to the popularization, development and inheritance of Tibetan chess.
Key words: Tibetan chess; square chess; seven-square chess; board game
0 引言
藏族七方棋具有藏族獨特的內(nèi)涵和民族文化特征,深受藏族人民的喜愛。隨著計算機網(wǎng)絡時代的到來,各種游戲以新形式呈現(xiàn)在大眾的視線,極大提高了用戶的體驗,但藏棋的信息化、網(wǎng)絡化形式緩慢,雖然有部分文獻探討了藏棋的計算機應用研究,但具有網(wǎng)絡對弈功能的寥寥無幾,藏族七方棋更是幾近于無[1]。本文通過實地考察,研究了藏族七方棋的歷史與對弈規(guī)則,并開發(fā)了藏族七方棋網(wǎng)絡對弈軟件,通過大量測試軟件能夠正常運行,但是在通信可靠性和用戶體驗方面有待進一步提高。
1 國內(nèi)方棋棋種的介紹
方棋在我國有幾百年的歷史,它幾乎遍布西部各省,它雖規(guī)則簡單,但形式變化很快,攻守雙方的實力總在變化之中。所以經(jīng)常下棋的人經(jīng)驗多,就容易獲勝,實屬易學難精的優(yōu)秀棋種[2]。國內(nèi)方棋主要分布在青海、寧夏、新疆等,但棋型和規(guī)則上大有不同。棋盤主要以14*14、7*8、7*7為主流[3],如圖1所示。
藏族七方棋是流傳于藏區(qū)的對弈棋類,其對弈規(guī)則與上述地區(qū)的方棋有所差異,是藏族先輩們對西北地區(qū)方棋的改良,繼承了方棋行棋規(guī)則的核心,同時融入了藏民族的其他棋種的不同行棋特點和本民族的文化習俗,是藏民族文化開放、智慧的展現(xiàn)[4]。
2 藏族七方棋對弈規(guī)則
棋盤以7*7縱橫線組成,共四十九個棋點。先手方25枚棋子,后手方24枚,以兩色區(qū)分敵我。對弈過程分為布局、開局、戰(zhàn)斗三個階段。
2.1 布局
布局開始時黑棋先下一子,然后白棋下一子,對弈雙方依次將己子放入空棋點,棋子只能放置在線與線的交叉點上,將手上的棋子放完才開始行子。布棋開始時雙方盡可能成方,成方就是相鄰四子圍成正方形[6],與此同時也要阻止對方成方布局。
2.2 開局
雙方布局完成之后,雙方根據(jù)布局過程中成方或成槍的個數(shù)按以下情況提取一定數(shù)量的棋子。
⑴ 若在布棋結(jié)束后,雙方均未成方,則由白方先提取一子,然后由黑方提取一子,之后轉(zhuǎn)入戰(zhàn)斗階段。
⑵ 若兩家均布棋成方,則由先成方家先行提子,并按成方數(shù)量決定相應提子數(shù)。
⑶ 若只一家成方,則由成方家按成方數(shù)提取棋子,未成方家提取一子。
2.3 戰(zhàn)斗
布局和開局完成之后,便進入戰(zhàn)斗階段,開始移動己棋,戰(zhàn)斗階段包括以下三種方式。
移子:棋子向緊鄰的空交叉點移動一格。移子過程中只要形成方(四枚棋子組成一個緊鄰相連的小正方形)就可按形成方的個數(shù)任意提取對方的棋子,移子時最多能形成兩個方。當移子過程中形成槍(七枚棋子以縱、橫方向連成直線)時,則可提取對方任意兩個棋子。
跳子:有單跳和連跳兩種方式,當己方棋子的緊鄰交叉點上有一個對方的棋子,而且與對方棋子緊鄰的點是空交叉點時就可以跳過對方的這個棋子并把它吃掉。跳子過程中當滿足連續(xù)跳子條件時,可以連跳并吃掉己方行走路線上所有對方棋子。連跳時沿路線跳過的個數(shù)可按己方形式的優(yōu)劣而定,也可以不跳。跳子完成后如果形成方或槍則按上述規(guī)則進行提子操作。
飛子:當一方棋子個數(shù)等于或小于七枚棋子時,棋子不受一步一格的限制,可以隨意落在空棋位處。飛子時形成方或槍則按上述規(guī)則進行提子操作。
戰(zhàn)斗階段是對弈雙方大顯棋力的階段,每一步都是在移子和跳子的過程中,看誰成方的速度快、成方多,獲勝的機會就越大。特別是形成褡褳陣、槍陣等贏棋陣型時對棋局的輸贏影響很大。如圖2所示。戰(zhàn)斗階段當一方棋子數(shù)少于等于7時,多子方未形成兩個“褡褳”陣型或贏棋陣型,多子方負,少子方贏。在對弈中一方棋子數(shù)達到3時,多子方勝,少子方負。
3 Socket網(wǎng)絡通信及傳輸格式
網(wǎng)絡對弈時數(shù)據(jù)的通信和傳輸格式是前期開發(fā)的重要工作,本軟件采Socket進行網(wǎng)絡通信,Socket是TCP/IP網(wǎng)絡環(huán)境里進行開發(fā)的最為通用的API[5]。
3.1 網(wǎng)絡通信過程
采用Socket對本軟件開發(fā)時,服務器端和客戶端使用Socket的方法略有不同。服務器端Socket的主要任務是端口的綁定、建立TCP連接、對端口的監(jiān)聽,接受來自客戶端的連接請求并建立連接、收發(fā)數(shù)據(jù)等。而客戶端則向服務器端提出請求,服務器端接受請求后就可以進行數(shù)據(jù)的收發(fā)。
3.2 數(shù)據(jù)傳輸格式
在兩人對弈過程中,通過Socket進行通信時,雙方接受和發(fā)送數(shù)據(jù)時應該規(guī)定好統(tǒng)一的傳輸格式,本軟件規(guī)定的傳輸格式是:“操作符”+“房間號”+“角色號”+“內(nèi)容”。
4 軟件的設計與實現(xiàn)
根據(jù)藏族七方棋的規(guī)則及網(wǎng)絡對弈的需求分析,軟件的總體設計包括客戶端和服務器端。服務器端主要任務是對弈的客戶端的連接及收發(fā)數(shù)據(jù),并在游戲開始之前設置客戶端環(huán)境參數(shù),比如:房間數(shù)和人數(shù)的設定??蛻舳藙t主要負責棋盤、棋子的繪制及棋子操作,并和服務器端進行實時數(shù)據(jù)通信。如圖3所示。
4.1 棋盤表示
七方棋的棋盤設計采用C#中的GDI進行繪圖,并定義m_Board[7,7]的二維數(shù)組表示棋盤中的棋子的狀態(tài)。同時m_Board[7,7]數(shù)組指向表示棋子類型和位置等相關(guān)信息的Chess結(jié)構(gòu)體。
Public struct Chess
{
int Empty=0, //空子
int Black=1, //黑子
int White=2, //白子
int posX 棋子的橫坐標
int posY 棋子的縱坐標
}
4.2 棋子的繪制
棋子的繪制是由Graphics完成的。以黑棋為例,先利用Rectangle()確定棋子的大小,然后用FillEllipse()方法填充一個實心圓。代碼如下:
rect.X=Convert.ToInt32(margin_left+i*gap-chessSize);
rect.Y=Convert.ToInt32(margin_top+j*gap-chessSize);
rect.Width=Convert.ToInt32(chessSize*2);
rect.Height=Convert.ToInt32(chessSize*2);
g.FillEllipse(Brushes.Black, rect);
5 軟件測試
軟件在局域網(wǎng)環(huán)境下進行了大量測試,在測試中,雖然剛開始出現(xiàn)了一些問題,比如:網(wǎng)絡延遲、角色不同步、規(guī)則之間的沖突等問題,但經(jīng)過不斷的修改和調(diào)試,該軟件已滿足網(wǎng)絡對弈的要求,實現(xiàn)規(guī)則正確。如圖4所示。
6 結(jié)束語
隨著信息技術(shù)飛速發(fā)展,許多藏族民間游戲未跟上時代的步伐,逐漸被后人遺忘,所以藏族棋類游戲的信息化和網(wǎng)絡化,對藏棋文化的傳承和保護起到至關(guān)重要的作用。本軟件是基于網(wǎng)絡的對弈軟件,用戶通過網(wǎng)絡可以遠程進行對弈,提高了用戶體驗。軟件對新手提供了藏族方棋下棋規(guī)則和觀戰(zhàn)模式,方便新手快速入門。通過測試軟件運行穩(wěn)定,下棋規(guī)則準確,達到了預期的效果。下一步工作就是對軟件進一步完善的同時根據(jù)對弈后保存的棋譜開展藏族方棋人機博弈方面的研究,讓藏族棋類游戲以全新的形象展現(xiàn)在大眾面前。
參考文獻(References):
[1] GENG Dui. On the discovery of Tibetan Chess (Mimang)and related traditional Tibetan chesses[J]. Journal of Tibetuniversity: Chinese edition,2003.18(3):44-48
[2] LIU Qiang. The status and promotion value oftraditionalTibetan chess[J].Contemporary sports technology,2012.2(27):83-84
[3] LI Xiali,WU Licheng,LI Yongji.Tibetan JIU computergame research based on chess form[J].CAAI Transactions on Intelligent Systems,2018.
[4] 劉強.藏棋“久棋”源考[J].西藏研究,2017.12(6):105-109
[5] 仁增多杰,安見才讓.“褡褳”藏棋的設計與實現(xiàn)[J].信息與電腦(理論版),2014.8:106-107
[6] 郭曉倡,郭江平.遠程圍棋對弈軟件的設計與開發(fā)[J].電腦編程技巧與維護,2010:26-28