五子棋 判断输赢的函数
/*********************************************
//刚写了个控制台的五子棋游戏,发现判断输赢花了我不少时间,特意贴出来.
//如果大家有更好的方法,欢迎共享.如果发现有错误,感谢帮忙指出来.有好多重复的代码.
//方法:
// 每读入一个点
// 通过判断垂直,水平,主对角线,斜对角线四个方向来判断输赢
//参数:
//map:存放棋盘元素的二维数组
//x,y:最后下的一个旗子的坐标
//num:设定连续多少个旗子就为赢
**************************************************/
bool is_win(char map[][COL],int x,int y,int num)
{int count = 0;int winflag = 1;//第一个点不用再次读取char cur ;//记录当前所下的棋int i,j;//判断当前所下的棋是哪种.字符 'O' '@'代表棋子cur = map[x][y] == 'O' ? 'O' : '@';
////垂直方向判断//往上读取num个点, y不变,x--for(i = x-1,j = y; i >= 0 && count++ < num; i --)//读取num次,或者遇到边界停止{if(map[i][j] == cur) winflag++;else break;//如果不是,就不是连续相同的棋子}//往下读取num个点,y不变,x++count = 0;//读取次数清零for(i = x + 1,j = y; i < ROW && count ++ < num; i ++ ){if(map[i][j] == cur) winflag++;else break;//如果不是,就不是连续相同的棋子}count = 0;//读取次数清零if( winflag >= num )//垂直方向读取完毕,判断输赢,赢返回真return true;elsewinflag = 1;//水平判断//往右方向,x不变,y++for(i = x,j = y + 1; j < COL && count ++ < num ; j ++ ){if(map[i][j] == cur) winflag++;else break;//如果不是,就不是连续相同的棋子}count = 0;//往左方向,x不变,y--for(i = x, j = y - 1; j >= 0 && count++ < num ; j --){if(map[i][j] == cur) winflag++;else break;//如果不是,就不是连续相同的棋子}count = 0;//水平方向读取完毕,判读输赢if( winflag >= num )//垂直方向读取完毕,判断输赢,赢返回真return true;elsewinflag = 1;
/////主对角线方向判断//往右下方向,x++,y++for(i = x + 1,j = y + 1; i < ROW && j < 3 && count ++ < num ; i ++ ,j ++){if(map[i][j] == cur) winflag++;else break;//如果不是,就不是连续相同的棋子}count = 0;//往左上方向,x--,y--for(i = x - 1,j = y - 1; i >= 0 && j >= 0 && count++ < num ; i -- ,j --){if(map[i][j] == cur) winflag++;else break;//如果不是,就不是连续相同的棋子}count = 0;//主对角线读取完毕,判读输赢if( winflag >= num )//垂直方向读取完毕,判断输赢,赢返回真return true;elsewinflag = 1;
/////斜对角线方向判断//往右上,x--,y++for(i = x -1,j = y + 1; i >= 0 && j < COL && count++ < num; i --,j++){if(map[i][j] == cur) winflag++;else break;//如果不是,就不是连续相同的棋子}count = 0;//往左下方向,x++,y--for(i = x + 1,j = y -1; i < ROW && y >= 0 && count++ < num; i ++,j--){if(map[i][j] == cur) winflag++;else break;//如果不是,就不是连续相同的棋子}count = 0;//斜对角方向读取完毕,判读输赢if( winflag >= num )//垂直方向读取完毕,判断输赢,赢返回真return true;elsewinflag = 1;
///所有方向判断完毕,没出现胜负return false;
}
五子棋 判断输赢的函数相关推荐
- java五子棋判断_JAVA 五子棋 判断输赢的代码实现
//定义棋盘大小,宽w,高h int w = 11; int h = w; //用一个二维数组保存棋盘数据,1代表红棋,2代表黑棋 int[][] chess = new int[h][w]; //定 ...
- java五子棋判断输赢算法
用一个二维数组先将棋盘存储,已下的白棋标为1,已下的黑棋标为2,未下的棋全部为0. 此时,先来判断横向输赢,即当横向有五个1或五个2连在一起即判断为赢. 同理,竖向的就是将y1改变,x1不变. 先向右 ...
- 简易五子棋(包含开始、双人对战、简易AI、悔棋、认输、判断输赢)不含禁手
简易五子棋 先上效果图 一.问题分析 五子棋游戏分析: 五子棋作为较为普遍且简易的娱乐游戏,受到众多人的热爱,且五子棋AI也是一个较为容易实现的AI.下面我们先来分析游戏规则.(哈哈,虽然大家都知道, ...
- JAVA中计算五子棋平局的算法_输入五子棋棋盘判断输赢或平局—程序设计(C语言)...
输入五子棋棋盘判断输赢或平局-程序设计(C语言) 输入五子棋棋盘判断输赢或平局-程序设计(C语言) 输入五子棋棋盘判断输赢或平局-程序设计(C语言) ??做这道题实在没有思路参考了这位作者的代码: h ...
- [教你做小游戏] 《五子棋》怎么判断输赢?你能5分钟交出代码吗?
我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权.我独立开发了<联机桌游合集>,是个网页,可以很方便的跟朋友联机 ...
- Java程序验证五子棋先手必胜_五子棋的判断输赢规则 -- java编程(简单优化完整版)...
五子棋的判断输赢规则代码 -- 完整优化版 一.前言 之前浏览过很多网上的方法,但总找不到比较完整,也get不到其他大神的思路,就直接画图分析,分析了之后就有了如下的代码,当然还想到更加优化的一种,只 ...
- 五子棋判输赢方法一 :
可以很容易的看出五子棋连城5子即为获胜,其中一共有八个方向需要去计算,如下图所示: 分别为:东西南北,东北,东南,西南,西北八个方向: (1)定义一个 int count用来定义是否有5个相同颜色的棋 ...
- ACMNO.23 C语言-素数判定 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime
题目描述 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息. 输入 一个数 输出 如果是素数输出prime 如果不是输出not prime 样例输入 97 样例输出 prime 来源/ ...
- boundcolumn 根据值进行判断_Excel使用函数进行条件判断的方法步骤
Excel中的函数具体该如何进行判断数据的条件是否达到要求呢?下面是学习关于excel使用函数进行条件判断的教程,希望阅读过后对你有所启发! excel使用函数进行条件判断的教程 函数条件判断步骤1: ...
最新文章
- JAVA的String的实现
- 正则表达式及其在python上的应用
- 云图说|小云妹带你揭秘数据复制服务DRS四大功能
- python大数据开发工程师_大数据开发工程师的职责
- JavaScript逻辑运算符
- 【算法】欧拉图,欧拉回路,Eular Circuit,随机生成欧拉图,搜索欧拉回路
- redis缓存队列+MySQL +php任务脚本定时批量入库
- 老子《道德经》第三章
- 使用 RESTful 的方式开发 Web应用
- 微信小程序音量调节插件
- 大学教师与大学学生的彼此期望
- hadoop reducer不执行问题及解决
- doctrine2 mysql_php – Doctrine2和MySQL分区
- Linux下使用Netfilter框架编写内核模块(统计协议层ping特定地址丢包数)
- html复习第六天 京东首页布局(导航栏/左侧)
- win7 linux ssh key,Windows下创建SSH Key并登录Linux服务器
- PC后台管理( 基于图形化界面自动安装教程)
- mysql 数据库里查询语句中不等于的两种写法
- 那些年我们在python掉进的坑系列之一pandas的to_sql
- 解读企业领域热词——BYOD
热门文章
- 如何免登录批量下载特定用户的微博高清大图?
- JAVA中DNS缓存设置
- HTTP 网站升级到 HTTPS 。
- 泰拉瑞亚无限刷怪服务器,泰拉瑞亚刷怪场怎么做_高效刷怪场地建造_3DM单机
- On the Comparison of Gauge Freedom Handling in Optimization-based Visual-Inertial State Estimation
- layui表格行合并
- 使用devstack安装部署OpenStack(据详细手把手教学)
- Lerp 实现匀速运动
- 注意力机制——Non-local Networks(NLNet)
- vs2015 CMake Recast库编译方式