第27章 围棋-第3/4页



    总得了解一下什么是围棋吧。

    围棋,是蓝星天朝的传统棋种,是一种策略型双人对抗棋类游戏,属于琴棋书画四艺之一,是一种较为复杂的智力博弈活动。

    圣盘大陆同样有围棋,名称可能会略有不同,比如厚照宗的元老们习惯叫它黑白棋。

    但两个世界的围棋,棋具和下法高度相似。

    围棋的棋盘,盘面有纵横各十九条等距离、垂直交叉的平行线(19x19),共构成361个交叉点。

    盘面上标有九个小圆点,称为“星位”,中央的星位又称“天元”。

    使用的棋子分黑白两色,可称为黑子、白子,棋子的数量以黑白子各180个为宜。

    围棋的下法,是双方各执一色棋子,黑子先行,交互落子,每次只许落一子。棋子需落在棋盘的点上。

    围棋讲究气,一个棋子在棋盘上,与它直线紧邻的空点就是这个棋子的气。

    棋子直线紧邻的点上,如果有同色棋子存在,则他们便连成一个整体。

    如果所有的气均为对方所占据,便呈无气状态。无气状态的棋子不能在棋盘上存在。

    把无气之子提出盘外的手段叫提子,落子后,对方棋子无气,应立即提取。

    落子后,若该子会立即成为无气状态,又不能提取对方棋子时,则应禁止落下,为禁着点。

    围棋的计算胜负(按数子规则),先将双方死子全部清理出盘外,然后对一方的活棋(包括活棋围住的点)以子为单位进行计数,最终子多者胜出。

    其中为了抵消黑方先手的优势,黑方需要进行贴子,需贴出三又四分之三子。简言之,黑方至少185点数以上方为获胜,反之白方胜。

    有口诀如下:

    棋之盘,方十九,三百六十一叉点。

    黑白子,黑先走,黑胜要过一八五。

    交叉口,气相连,气尽棋亡最自然。

    遇打劫,停一手,防止全局形再现。

    ......

    对于张应郗来说,他的任务就是把这些规则转换成程序语言展现出来。

    他需要用代码画出棋盘,用二位数组存储棋盘位置,然后画棋子,对点位的三种状态定义枚举常量,即空位、黑子、白子。

    再使用适配器模式监听用户的触屏事件,对于落子的触屏实现方式,他想到两种实现思路。

    一种方式是触屏单击落子,屏幕下方再准备一个确认按钮,用户点位上单击落子后,点确认按钮落子无悔。

    另一种方式是触屏双击落子,用户在屏幕的点位上单击落子,再单击其他位置,可以改变落子,只有双击才会真正落子,落子无悔。

    他本想把两种方式都做出来,到时候让用户自己选择落子方式,但本着最小化开发原则,还是直接设置死了落子原则,直接采用触屏双击落子方式。

    按照执黑先行,轮流落子规则,让程序判定当前触屏的棋手和落子状态。比如用户甲落子后,屏幕提示用户乙操作。

    这里面数判断棋子的气较为繁琐,不仅要判断单个棋子的气,还要计算相连己方棋子的气,对已经计算过棋子的位置也需要记录,这样后面避免重复计算。

    对于一些禁着点,也需要进行判断,不能让棋子落在里面。

    界面的话,中间一个棋盘,下方布置几个按钮,有“开始”、“悔棋”、“过一手”、“认输”、“提子”,“结束”。...
    本章未完,请点击下一页继续阅读!