Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 669|回复: 0

代码:Android 实战项目之五子棋 附源码

[复制链接]

该用户从未签到

发表于 2011-10-23 18:24:29 | 显示全部楼层 |阅读模式
五子棋游戏五子连珠算法实现




1.游戏规则
    五子棋是两个人之间进行的竞技活动,黑方白方规则规则相同,黑棋必须先行,五连子的方向为横、竖、斜,如黑白色任一方先五子连一线则算胜出。



2.五子连珠算法
      在 9 X 9 (这里举例子实际棋盘可以任意大小) 的游戏棋盘中 我们可以把它想象成一个二维数组,黑方下棋子后填充当前点的数组的值1,白方下棋子后填充当点的数组的值2 ,没有下棋子的点在数组中值为0,  黑白双方每走一步 则实际上在给这个二维数组赋值。 所以我们根据这个二维数组的值就可以计算出五子连珠,也可以绘制出棋盘上的黑白棋子。

     玩家点击屏幕后拿到一个 屏幕的 x y 坐标 然后除以棋盘每一格的宽高 就可以得到在二维数组中的索引根据X Y 这 两个索引 就可以知道棋子下在了这个二维数组中的那里。


     现在笔者带大家分析一下五子连珠的算法, 首先要想五颗棋子连成一线必定有8种可能 接下来我们分析一下有那八中可能.



第一种:如图所示 X轴横向 其中横向四颗棋子已经连成一线 左右两边任意下一颗棋子便五子连珠。可以用一个for循环遍历当前X点索引 , 起始点为 X - 4 结束点为X + 4 一共便利 9 次 如果其中5颗棋子连续则五子连珠 否则只要有一个没连上 直接break;




第二种:如图所示 X轴横向 其中左右两边若干棋子 但是都未满足五子连珠 但是如果将中间连上后遍满足
所以在写算法的时候必需以当前棋子索引 前后都要便利5遍 才能确定当前棋子后是否可以五子连珠。算法同上




第三种:如图所示 Y轴纵向 遍历的时候须要从 Y - 4 到 Y + 4  





第四种:如图所示 Y轴纵向 同理X轴





第五种:如图所示  遍历的时候须要从(X -4) (Y - 4) 到 (X +4) (Y + 4)  




第六种:如图所示  算法同上




第七种:如图所示  遍历的时候须要从(X + 4) (Y + 4) 到 (X - 4) (Y + 4)  





第八种:如图所示  算法同上  

   


    这样五子连珠的算法就介绍完了 下面附上我的源码下载地址 目前我没有加上AI 有兴趣的朋友我们可以一起研究研究 。
FiveChess.rar (641.52 KB, 下载次数: 604)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-10 14:02 , Processed in 0.332334 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表