五子棋-java版本

来源:互联网 发布:js将图片上传到服务器 编辑:程序博客网 时间:2024/05/28 15:06

前言

 闲着无聊,写了一个五子棋,跟大家分享一下大概思路。算下来大概花了2、3个小时左右来着。

棋盘效果图

正文

主要流程流程分析代码实现

1、主要流程

显示初始棋盘=》让黑方和白方下棋=》判断输赢=》重新显示棋盘=》重复步骤2……

2、流程分析

显示初始棋盘:棋盘是正方形的,那么就得有行和列,当然行和列是相同的,因此我们首先得定义一个用于 (①存储棋盘规格大小的值) ,有了这个值之后,我们就能绘制初始棋盘了(一个简单的嵌套循环即可显示出来,当然我们还得处理最上面一排和最左侧一排的特殊数据显示问题)。效果图如下:

让黑方和白方下棋:下棋无非就是在绘制棋盘的时候,判断当前位置是否为白方或者黑方下的棋子即可,因此我们需要先将白方和黑方下的棋子分别保存起来,那么我们就得分别定义一个用于 (②存储白方下棋位置的数组) ,以及一个用于 (③存储黑方下棋位置的数组) 。当我们绘制棋盘的时候,只需要在循环内部,通过判断当前位置是否有相同的值存在于这两个数组即可,有就打印对应的图形,没有就还是打印默认的图形。

判断输赢:可能这个程序中,判断输赢就是最困难的一步了。在这里,我为大家提供多种思路,仅供参考!
1、从当前位置向四周查找:
判断 当前位置 和 当前位置的左边 以及 右边 的棋子相连总数(横向查找);
判断 当前位置 和 当前位置的上边 以及 下边 的棋子相连总数(纵向查找);
判断 当前位置 和 当前位置的左上 以及 右下 的棋子相连总数(左上斜右下查找);
判断 当前位置 和 当前位置的左下 以及 右上 的棋子相连总数(左下斜右上查找);
2、直接全局查找(步骤较多,难度系数相对高):
横向查找:先循环每一行每一列,当找到一个棋子时,然后获取当前行当前棋子的右边位置是否有棋子,并且棋子和当前找到的这个棋子是否颜色相同,如果都满足,就继续向后查找,当前行循环完之后,判断数量。
纵向查找:先循环每一列每一行,当找到一个棋子时,然后获取当前列当前棋子的下方位置是否有棋子,并且棋子和当前找到的这个棋子是否颜色相同,如果都满足,就继续向下查找,当前列循环完之后,判断数量。
左上斜右下查找:找到最上面一排的棋点和最左边一排的棋点,然后通过当前的位置来循环相应的次数,当找到一个棋子时,然后获取当前行当前棋子的右下位置是否有棋子,并且棋子和当前找到的这个棋子是否颜色相同,如果都满足,就继续向右下查找,当前斜线方向循环完之后,判断数量。
左下斜右上查找:找到最下面一排的棋点和最左边一排的棋点,然后通过当前的位置来循环相应的次数,当找到一个棋子时,然后获取当前行当前棋子的右上位置是否有棋子,并且棋子和当前找到的这个棋子是否颜色相同,如果都满足,就继续向右下查找,当前斜线方向循环完之后,判断数量。

3、代码实现

代码实现可以前往下载频道下载。代码注释较多,如有疑问,请评论告知。

原创粉丝点击