读书人

初涉黑白棋之容易双人对战

发布时间: 2012-10-06 17:34:01 作者: rapoo

初涉黑白棋之简单双人对战


??????????黑白棋,又称翻转棋,还有个说法叫奥赛罗棋,具体得名我并未去考

证。下棋方式很简单,是在游戏中通过相互翻转对方的棋子,最后以棋盘

上谁的棋子多来判断胜负。
???? ?第一次接触到黑白棋是高四复读时。那时由于学校离家较远,为了方

便和家里联系,本人得到了生平第一部移动交通工具——一部与家中座机绑

定的小灵通。而小灵通上可怜的三个游戏,也成了无聊时瞎捣鼓的东西。

这三个游戏,一是贪吃蛇,而是打地鼠,这两样由于本人的手指实在是笨

拙,硬是反应不过来而放弃。于是经常玩的,也只有剩下的那个黑白棋了

。虽然没有刻意去了解规则,可玩多了也自然上手了,稍微还掌握了一点

小小的规律,以至到后面几乎每次都能赢。(现在看来那个机器算法还是

比较烂的……)说起来,小灵通上的这个游戏,竟陪我走过了那段最难熬

的岁月。(高考的孩子伤不起啊!第一年没考上接着去复读的更伤不起啊

有木有……)或许是有这种情愫在,当龙哥让我们选择项目时,我毫不犹

豫选择了黑白棋。(完了才发现整个小组除我之外大家做的都是五子棋…

…)
??? ? 废话不多说了,现在来说黑白棋的程序。首先是布置界面,方法与五

子棋无异,在参考了书上的代码之后很快便画出了棋盘,并在棋盘中心布

好了初始的四个棋子。
初涉黑白棋之容易双人对战
?
??????接下来就是下子的问题了,这时才发现,事情没有开始想象的那么简

单。黑白棋下子并不像五子棋那样,只要有空置的位置就行,而是需要判

定,只有当所在点直线方向上有可以翻转的对方棋子以及己方棋子相夹时

才能下,并且下过之后还要翻转中间所夹的异色棋子。这里便涉及到两个

方面,判断下子和改变颜色。
???? ?先说判断一个点是否能下的问题,这里先设了一个boolean型的二维

数组,命名为ifcan,用于记录每个格子是否可下的信息。这里单独用一

个方法来写以便反复调用。当然,在给某处赋值之前一定要遍历,在这里

的话,就需要遍历该点周围横竖斜八个方向。由于遍历所得的信息之后改

变颜色还要用到,于是单独分出了一个遍历的方法counts(),代码如下:

有点嫉妒

读书人网 >编程

热点推荐