社区
Java SE
帖子详情
求如何判断五指棋胜负的算法
cindyAng
2005-02-05 01:47:45
求如何判断五指棋胜负的算法
...全文
309
11
打赏
收藏
求如何判断五指棋胜负的算法
求如何判断五指棋胜负的算法
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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个子连成一条线就胜利了吧?
五子
棋
的核心
算法
(介绍五子
棋
程序的数据结构、评分规则、
胜负
判断
方法和搜索
算法
过程)
五子
棋
是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个人机对下的五子
棋
程序,采用了博弈树的...介绍五子
棋
程序的数据结构、评分规则、
胜负
判断
方法和搜索
算法
过程。
五子
棋
AI
算法
-极大极小值搜索
算法
代码实现
2. JavaScript逻辑:JavaScript负责处理游戏逻辑,包括落子、
判断
胜负
、调用AI
算法
进行决策等。在五子
棋
AI的实现中,JavaScript将调用极大极小值搜索
算法
并执行Alpha Beta剪枝,生成最优落子位置。 3. 用户交互:...
五子
棋
(
算法
比较强悍)
3. **
胜负
判断
**:这是
算法
的重点。五子
棋
的胜利条件是连成五子。因此,需要对每一步
棋
进行遍历,检查所有可能的连线方向(横、竖、斜),看是否有五颗同色
棋
子相连。这个过程可以通过滑动窗口或深度优先搜索(DFS)...
数据结构-五子
棋
核心
算法
本文将深入探讨如何设计和实现一个人机对战的五子
棋
程序,重点阐述其核心
算法
,包括数据结构、评分规则、
胜负
判断
和搜索策略。 一、数据结构设计 五子
棋
程序的数据结构是实现
算法
的基础。首先,用链表`...
Python基于目标检测的五子
棋
胜负
判断
.zip
在本项目"Python基于目标检测的五子
棋
胜负
判断
.zip"中,主要涉及的是利用Python编程语言和目标检测技术来实现对五子
棋
棋
盘状态的自动分析,从而
判断
游戏的
胜负
情况。以下是对这个项目的详细解读: 1. **Python编程...
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章