五子棋算法判断输赢
来源:互联网 发布:可米小子诅咒 知乎 编辑:程序博客网 时间:2024/05/01 02:26
五子棋相信大部分人都玩过,至少应该听说过。
简述一下规则:当在棋盘的横行或竖行或斜行(左斜与右斜)有五个及以上连续的棋子的时候,则为赢。
分析一下五子棋的算法,当下一个棋子的时候(对应相应的棋盘应该有一个坐标),应该判断下的棋子的横行,横行或竖行或斜行(左斜与右斜)是否满足连续棋子的个数大于等于5个,每次下一个棋子的时候都应该有所判断,每次都应该对4个大的方向(横行,竖行,左斜,右斜)进行遍历算法。
如下图 :
图中黑棋已经有3颗连续的,加上右边一颗(中间有一个还没下,为了陈诉方便,我把它命名为s),显然如果现在归黑棋下的话,s为最佳位置。人很好判断,只是对应计算机的话,我们应该怎么使用算法让计算机明白放在s位置能够赢。
放入S位置后,应该设置一个记数标志count判断某一个方向的的棋子数是否大于等5,即count>=5是否成立。图中的四个大的方向,每次遍历每个方向前,应该将count置1;
而且对应米一个具体的方向,比如横行,严谨的来说遍历的时候还是应该遍历两个方向的,一个是s位置的左边,遍历一遍,记录下连续棋的个数,然后回到S点,再进行右边的遍历,左右的count值相加,判断是否大于等于5;这样说来,细一点的话应该为8个方向,两个相对。
初始的时候
黑棋的坐标位置的值我们默认为1
白棋的坐标位置的值默认为2;
还没有下棋子的位置我们默认为0;
public boolean CheckWin(int xIndex, int yIndex) {int max = 0;int tempXIndex = xIndex;int tempYIndex = yIndex;// 三维数组记录横向,纵向,左斜,右斜的移动int[][][] dir = new int[][][] {// 横向{ { -1, 0 }, { 1, 0 } },// 竖着{ { 0, -1 }, { 0, 1 } },// 左斜{ { -1, -1 }, { 1, 1 } },// 右斜{ { 1, -1 }, { -1, 1 } } };for (int i = 0; i < 4; i++) {count = 1; //j为0,1分别为棋子的两边方向,比如对于横向的时候,j=0,表示下棋位子的左边,j=1的时候表示右边 for (int j = 0; j < 2; j++) {flag = true; /** while语句中为一直向某一个方向遍历 有相同颜色的棋子的时候,Count++ 否则置flag为false,结束该该方向的遍历 **/ while (flag) {tempXIndex = tempXIndex + dir[i][j][0];tempYIndex = tempYIndex + dir[i][j][1]; if ((a[tempXIndex][tempYIndex] == a[xIndex][yIndex])) {count++;System.out.println(count);} elseflag = false;} tempXIndex = xIndex;tempYIndex = yIndex;}if (count >= 5) {max = 1;break;} elsemax = 0;} if (max == 1)return true;elsereturn false;}
0 0
- 五子棋算法判断输赢
- java五子棋判断输赢算法
- 五子棋判断输赢C
- JAVA判断五子棋输赢
- winform 五子棋 判断输赢
- 五子棋 判断输赢的函数
- java-----五子棋小游戏(三)-----判断输赢
- JAVA 五子棋 判断输赢的代码实现
- 五子棋研究 判断输赢条件,及不复杂的AI算法 2个 。
- 今天用COCOS2DX写了个五子棋,记录下判断输赢的算法
- android游戏开发之我的小小游戏1——五子棋游戏2之判断输赢
- 五子棋算法--禁手的判断
- 判断五子棋获胜方的一个算法
- 一个五子棋判断获胜的算法
- 2017-8-4java 人机猜拳(输赢判断) ,算法优化
- 输赢
- 输赢
- 输赢
- Java使用数组
- JAVA ——华为
- NOI 2015 程序自动分析
- Android单排上王者系列之RecyclerView初识
- udp与tcp通信代码
- 五子棋算法判断输赢
- 嵌入式C学习笔记(二) 编译器-GCC的工作过程
- php中的break,continue,return,exit,die等跳出或终止循环笔记
- POJ 3784 Running Median
- EC-JET喷码机回收管无回收
- equals和==的区别
- HTTP协议
- 5.2.6 I/O核心子系统
- js第二节