APP下载

基于Socket的藏族七方棋的设计与实现

2018-10-25公保杰安见才让

计算机时代 2018年9期

公保杰 安见才让

摘 要: 七方棋是藏区广为流传的传统棋类游戏,是藏族文化宝库中一颗璀璨的明珠。随着信息时代到来,许多传统游戏被引入到网络中,成为人们主要的娱乐方式。采用C#开发了具有网络对弈功能的藏族七方棋游戏软件,该软件具有网络对弈、网络聊天、悔棋、观战、保存棋局等功能。经过局域网测试,对弈规则准确,软件运行稳定,基本满足对弈要求。网络对弈的实现对藏棋的普及,发展和传承和具有积极意义。

关键词: 藏棋; 方棋; 七方棋; 棋类游戏

中图分类号: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 引言

藏族七方棋具有藏族独特的内涵和民族文化特征,深受藏族人民的喜爱。随着计算机网络时代的到来,各种游戏以新形式呈现在大众的视线,极大提高了用户的体验,但藏棋的信息化、网络化形式缓慢,虽然有部分文献探讨了藏棋的计算机应用研究,但具有网络对弈功能的寥寥无几,藏族七方棋更是几近于无[1]。本文通过实地考察,研究了藏族七方棋的历史与对弈规则,并开发了藏族七方棋网络对弈软件,通过大量测试软件能够正常运行,但是在通信可靠性和用户体验方面有待进一步提高。

1 国内方棋棋种的介绍

方棋在我国有几百年的历史,它几乎遍布西部各省,它虽规则简单,但形式变化很快,攻守双方的实力总在变化之中。所以经常下棋的人经验多,就容易获胜,实属易学难精的优秀棋种[2]。国内方棋主要分布在青海、宁夏、新疆等,但棋型和规则上大有不同。棋盘主要以14*14、7*8、7*7为主流[3],如图1所示。

藏族七方棋是流传于藏区的对弈棋类,其对弈规则与上述地区的方棋有所差异,是藏族先辈们对西北地区方棋的改良,继承了方棋行棋规则的核心,同时融入了藏民族的其他棋种的不同行棋特点和本民族的文化习俗,是藏民族文化开放、智慧的展现[4]。

2 藏族七方棋对弈规则

棋盘以7*7纵横线组成,共四十九个棋点。先手方25枚棋子,后手方24枚,以两色区分敌我。对弈过程分为布局、开局、战斗三个阶段。

2.1 布局

布局开始时黑棋先下一子,然后白棋下一子,对弈双方依次将己子放入空棋点,棋子只能放置在线与线的交叉点上,将手上的棋子放完才开始行子。布棋开始时双方尽可能成方,成方就是相邻四子围成正方形[6],与此同时也要阻止对方成方布局。

2.2 开局

双方布局完成之后,双方根据布局过程中成方或成枪的个数按以下情况提取一定数量的棋子。

⑴ 若在布棋结束后,双方均未成方,则由白方先提取一子,然后由黑方提取一子,之后转入战斗阶段。

⑵ 若兩家均布棋成方,则由先成方家先行提子,并按成方数量决定相应提子数。

⑶ 若只一家成方,则由成方家按成方数提取棋子,未成方家提取一子。

2.3 战斗

布局和开局完成之后,便进入战斗阶段,开始移动己棋,战斗阶段包括以下三种方式。

移子:棋子向紧邻的空交叉点移动一格。移子过程中只要形成方(四枚棋子组成一个紧邻相连的小正方形)就可按形成方的个数任意提取对方的棋子,移子时最多能形成两个方。当移子过程中形成枪(七枚棋子以纵、横方向连成直线)时,则可提取对方任意两个棋子。

跳子:有单跳和连跳两种方式,当己方棋子的紧邻交叉点上有一个对方的棋子,而且与对方棋子紧邻的点是空交叉点时就可以跳过对方的这个棋子并把它吃掉。跳子过程中当满足连续跳子条件时,可以连跳并吃掉己方行走路线上所有对方棋子。连跳时沿路线跳过的个数可按己方形式的优劣而定,也可以不跳。跳子完成后如果形成方或枪则按上述规则进行提子操作。

飞子:当一方棋子个数等于或小于七枚棋子时,棋子不受一步一格的限制,可以随意落在空棋位处。飞子时形成方或枪则按上述规则进行提子操作。

战斗阶段是对弈双方大显棋力的阶段,每一步都是在移子和跳子的过程中,看谁成方的速度快、成方多,获胜的机会就越大。特别是形成褡裢阵、枪阵等赢棋阵型时对棋局的输赢影响很大。如图2所示。战斗阶段当一方棋子数少于等于7时,多子方未形成两个“褡裢”阵型或赢棋阵型,多子方负,少子方赢。在对弈中一方棋子数达到3时,多子方胜,少子方负。

3 Socket网络通信及传输格式

网络对弈时数据的通信和传输格式是前期开发的重要工作,本软件采Socket进行网络通信,Socket是TCP/IP网络环境里进行开发的最为通用的API[5]。

3.1 网络通信过程

采用Socket对本软件开发时,服务器端和客户端使用Socket的方法略有不同。服务器端Socket的主要任务是端口的绑定、建立TCP连接、对端口的监听,接受来自客户端的连接请求并建立连接、收发数据等。而客户端则向服务器端提出请求,服务器端接受请求后就可以进行数据的收发。

3.2 数据传输格式

在两人对弈过程中,通过Socket进行通信时,双方接受和发送数据时应该规定好统一的传输格式,本软件规定的传输格式是:“操作符”+“房间号”+“角色号”+“内容”。

4 软件的设计与实现

根据藏族七方棋的规则及网络对弈的需求分析,软件的总体设计包括客户端和服务器端。服务器端主要任务是对弈的客户端的连接及收发数据,并在游戏开始之前设置客户端环境参数,比如:房间数和人数的设定。客户端则主要负责棋盘、棋子的绘制及棋子操作,并和服务器端进行实时数据通信。如图3所示。

4.1 棋盘表示

七方棋的棋盘设计采用C#中的GDI进行绘图,并定义m_Board[7,7]的二维数组表示棋盘中的棋子的状态。同时m_Board[7,7]数组指向表示棋子类型和位置等相关信息的Chess结构体。

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 软件测试

软件在局域网环境下进行了大量测试,在测试中,虽然刚开始出现了一些问题,比如:网络延迟、角色不同步、规则之间的冲突等问题,但经过不断的修改和调试,该软件已满足网络对弈的要求,实现规则正确。如图4所示。

6 结束语

随着信息技术飞速发展,许多藏族民间游戏未跟上时代的步伐,逐渐被后人遗忘,所以藏族棋类游戏的信息化和网络化,对藏棋文化的传承和保护起到至关重要的作用。本软件是基于网络的对弈软件,用户通过网络可以远程进行对弈,提高了用户体验。软件对新手提供了藏族方棋下棋规则和观战模式,方便新手快速入门。通过测试软件运行稳定,下棋规则准确,达到了预期的效果。下一步工作就是对软件进一步完善的同时根据对弈后保存的棋谱开展藏族方棋人机博弈方面的研究,让藏族棋类游戏以全新的形象展现在大众面前。

参考文献(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] 仁增多杰,安见才让.“褡裢”藏棋的设计与实现[J].信息与电脑(理论版),2014.8:106-107

[6] 郭晓倡,郭江平.远程围棋对弈软件的设计与开发[J].电脑编程技巧与维护,2010:26-28