社区
Java SE
帖子详情
求如何判断五指棋胜负的算法
cindyAng
2005-02-05 01:47:45
求如何判断五指棋胜负的算法
...全文
326
11
打赏
收藏
求如何判断五指棋胜负的算法
求如何判断五指棋胜负的算法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dzeng81
2005-03-06
打赏
举报
回复
值得研究!
eLtON2
2005-02-10
打赏
举报
回复
是PLAYER VS PLAYEER的时候不是AI。是转自J2MEDEV的贴
eLtON2
2005-02-10
打赏
举报
回复
手机上每次在玩家着棋(按下5)时,判断棋局的输赢,然后用一个 Alert 显示哪一方赢了以及当前的比分,返回后开始新的一局。判断的逻辑是,在当前所下的棋子的0/180度、90/270度、45/225度、135/315度四个方向上分别往两头按照由近至远的顺序判断各5个棋子是否是当前下棋方的棋子,如果是则累加到一个变量上,如果在到达5之前出现“否”的情况,则中止在这一方向或这一角度的判断,变量归1(应为当前棋子肯定是当前下棋方下完的棋子)并进行下一个方向或角度。在判断是否是当前方时,用当前 isPlayer1 变量和棋子对象的 isPlayer1 变量进行比交。源代码如下:
int player1win,player2win;
protected synchronized void keyPressed(int keyCode) {
...
else if (action == Canvas.FIRE) {
if(chesses[selectedY][selectedX]==null){
chesses[selectedY][selectedX]=new Chesses(this.isPlayer1);
if(checkWin()){
String winner;
if(isPlayer1){
winner="白方胜利";
player1win++;
}
else{
winner="红方胜利";
player2win++;
}
try{
Thread.sleep(3000);
}catch(Exception e){
}
Alert winAlert=new Alert("",
winner+"\n白方 "+player1win+" : "+player2win+" 红方",
null,AlertType.INFO);
winAlert.setTimeout(Alert.FOREVER);
Display.getDisplay(gobang).setCurrent(winAlert,this);
init();
repaint();
}
this.isPlayer1=!this.isPlayer1;//切换下棋方(FROMJ2MEDEV。COM)
}
}
repaint();
}
private boolean checkWin(){
int num=1;
if(num<5){
num=1;
for(int i=1;i<=4;i++){
if(isPlayer1(selectedX-i,selectedY)){
num++;
}
else break;
}
for(int i=1;i<=4;i++){
if(isPlayer1(selectedX+i,selectedY)){
num++;
}
else break;
}
}
if(num<5){
num=1;
for(int i=1;i<=4;i++){
if(isPlayer1(selectedX,selectedY-i)){
num++;
}
else break;
}
for(int i=1;i<=4;i++){
if(isPlayer1(selectedX,selectedY+i))
num++;
else break;
}
}
if(num<5){
num=1;
for(int i=1;i<=4;i++){
if(isPlayer1(selectedX-i,selectedY-i))
num++;
else break;
}
for(int i=1;i<=4;i++){
if(isPlayer1(selectedX+i,selectedY+i))
num++;
else break;
}
}
if(num<5){
num=1;
for(int i=1;i<=4;i++){
if(isPlayer1(selectedX+i,selectedY-i))
num++;
else break;
}
for(int i=1;i<=4;i++){
if(isPlayer1(selectedX-i,selectedY+i))
num++;
else break;
}
}
if(num>=5)
return true;
else
return false;
}
private boolean isPlayer1(int y,int x){
if(x<=15 && x>=0 && y<=15 && y>=0 && chesses[x][y]!=null){
if(chesses[x][y].isPlayer1==this.isPlayer1)
return true;
else
return false;
}
else return false;
}
老高高高
2005-02-09
打赏
举报
回复
应该有不少书上有的吧 觉得五子棋好多人做的
czlc
2005-02-09
打赏
举报
回复
根据棋子在数组的位置,然后除去一些违例的条件。
shuneng
2005-02-07
打赏
举报
回复
应该有不少书上有的吧 觉得五子棋好多人做的
batfree
2005-02-06
打赏
举报
回复
qingshansima(司马青衫) 说的很正确,就是这样判断的。如果是问AI的话,可能有不少种,我记得有一期的开发高手上面有一个程序实现,查查看吧
efei
2005-02-05
打赏
举报
回复
五子棋嘛,自然要五个子
判断胜负我想应该不是问题吧,你是不是问AI算法呀
qingshansima
2005-02-05
打赏
举报
回复
取落子点当作基准,然后检验经过这个点的横向、纵向和两个对角线方向有没有五子连成一条线的。
xitianjile
2005-02-05
打赏
举报
回复
没有!
sywind
2005-02-05
打赏
举报
回复
应该是有5个子连成一条线就胜利了吧?
(源码)基于C++的五子
棋
胜负
判断
算法
策略.zip
# 基于C++的五子
棋
胜负
判断
算法
策略 ## 项目简介 五子
棋
是一款经典的
棋
类游戏,玩家通过各种策略在
棋
盘上放置
棋
子,形成连续的直线以获得胜利。本项目的目标是设计并实现一个基于C++语言的五子
棋
游戏
胜负
判断
算法
策略。该策略旨在通过高效的
算法
判断
游戏中某一玩家是否获胜。 ## 项目的主要特性和功能 ### 主要特性 1. 高效的
胜负
判断
算法
通过特定的
算法
策略,实现对
棋
盘上的
棋
子进行快速而准确的
胜负
判断
。 2. 对称性优化利用
棋
盘对称性,减少遍历方向,提高
算法
效率。 3. 实时记录
棋
子颜色和落子位置基于实时记录的数据进行
胜负
判断
,简化
算法
复杂度。 ### 功能概述 1.
判断
某一玩家是否获胜。 2. 提供灵活的
棋
盘方向遍历策略。 3. 提供优化后的
胜负
判断
算法
实现。 ## 安装使用步骤 ### 假设用户已经下载了本项目的源码文件 #### 1. 解压源码文件 用户需要将下载的源码文件解压至本地文件夹。
五子
棋
的核心
算法
(介绍五子
棋
程序的数据结构、评分规则、
胜负
判断
方法和搜索
算法
过程)
五子
棋
是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子
棋
程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子
棋
程序的数据结构、评分规则、
胜负
判断
方法和搜索
算法
过程。
五子
棋
AI
算法
-极大极小值搜索
算法
代码实现
五子
棋
AI
算法
-极大极小值搜索
算法
代码实现;适合学习机器学习
算法
的初学者,学完后会对极大极小值搜索
算法
( Alpha Beta 剪枝
算法
。)有更深的理解。
五子
棋
(
算法
比较强悍)
很好很强大的五子
棋
算法
数据结构-五子
棋
核心
算法
五子
棋
是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子
棋
程序,采用了博弈树的方法,应用了剪枝和最大最小树原理进行搜索发现最好的下子位置。介绍五子
棋
程序的数据结构、评分规则、
胜负
判断
方法和搜索
算法
过程。
Java SE
62,627
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章