| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1855 人关注过本帖
标题:急 java 国际象棋问题 求助 先谢了
只看楼主 加入收藏
ymmy
Rank: 2
等 级:论坛游民
帖 子:15
专家分:19
注 册:2010-5-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
急 java 国际象棋问题 求助 先谢了
国际象棋的马,按L型走,从一个给定的位置走,走遍每个格子,走的那个方法用树写!哪位高手帮帮忙。谢谢了!
搜索更多相关主题的帖子: 国际象棋 java 
2010-05-28 20:49
ymmy
Rank: 2
等 级:论坛游民
帖 子:15
专家分:19
注 册:2010-5-28
收藏
得分:0 
哎。。。。
2010-05-30 10:28
qq342991688
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:25
专家分:106
注 册:2010-5-30
收藏
得分:5 
算法是走下一步出路最少的第格子
2010-05-30 13:15
爱OO你
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:30
专家分:181
注 册:2010-4-13
收藏
得分:5 

没时间写啊!
就说说大概的意思了!
    就是建立一个数组作为象棋盘的二维棋点的坐标,马在棋盘上的走形(即一个算法),建一个循环(作为一个子函数来进行调用),在棋盘内走出从给定点所能走的所有的可能,选定另一点继续循环走下去,且不能重复,
一;对对所走的总步数与棋盘坐标书相比,判断是否重复
在走的路中,选出规定步数内没走完所有的坐标的,

二;对每步走的路径与前面所走的路对比,判断是否有重复
对所走的可行的路分别建立数组(用Vector的好点),在数组中实现选择
同时采用多线程,并用异常处理,以免死循环

在加上相应的输出,和GUI界面就行了

在这是基本的编辑思想,希望大家编写出来啊!!!
与大家分享!!

我就是我
2010-05-31 12:52
malff1
Rank: 1
等 级:新手上路
帖 子:2
专家分:5
注 册:2010-5-30
收藏
得分:5 
以下是引用爱OO你在2010-5-31 12:52:06的发言:


没时间写啊!
就说说大概的意思了!
    就是建立一个数组作为象棋盘的二维棋点的坐标,马在棋盘上的走形(即一个算法),建一个循环(作为一个子函数来进行调用),在棋盘内走出从给定点所能走的所有的可能,选定另一点继续循环走下去,且不能重复,
一;对对所走的总步数与棋盘坐标书相比,判断是否重复
在走的路中,选出规定步数内没走完所有的坐标的,

二;对每步走的路径与前面所走的路对比,判断是否有重复
对所走的可行的路分别建立数组(用Vector的好点),在数组中实现选择
同时采用多线程,并用异常处理,以免死循环

在加上相应的输出,和GUI界面就行了

在这是基本的编辑思想,希望大家编写出来啊!!!
与大家分享!!
顶起
2010-06-02 13:07
pigpigpigxk
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:26
专家分:109
注 册:2010-5-27
收藏
得分:5 
    就是建立一个数组作为象棋盘的二维棋点的坐标,马在棋盘上的走形(即一个算法),建一个循环(作为一个子函数来进行调用),在棋盘内走出从给定点所能走的所有的可能,选定另一点继续循环走下去,且不能重复,
一;对对所走的总步数与棋盘坐标书相比,判断是否重复
在走的路中,选出规定步数内没走完所有的坐标的,
二;对每步走的路径与前面所走的路对比,判断是否有重复
对所走的可行的路分别建立数组(用Vector的好点),在数组中实现选择
同时采用多线程,并用异常处理,以免死循环
在加上相应的输出,和GUI界面就行了
马要走到某些位置,是需要重复走回到一些位置的,即在总路径中,一些坐标是有重复出现的。你这样的判断不成立。关键是如何避免马走死循环的方法。一个十多步的死循环路径,如何判断是否重复?

要找到最短路径的算法应该很难吧。不知道要用些什么数学方法?

如果不要最短路径,可以用这种方法:
将总路径分成很多小段,每段都是当前位置到一个空格的最短路径。
即先判断当前位置A到下一任意可能位置(B1,B2...Bn)是否有空格。有则选任意一个,以这点为当前位置重新开始寻找。没有空格则找这些可能位置(Bn)的下一步(C1,C2...Cn)有没有空格,一直循环到找到一个空格为止。然后重新开始找这个位置到一个空格的最短路径,一直到穷尽所有空格。要注意的是每次找到的最短路径必定没有重复的坐标。比如一条路径A->B2->C3->Dn, Dn的可能选择中必须和A,B2,C3进行判断,相同则剔除。



[ 本帖最后由 pigpigpigxk 于 2010-6-2 19:44 编辑 ]
2010-06-02 19:36
爱OO你
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:30
专家分:181
注 册:2010-4-13
收藏
得分:0 

      楼上的说
马要走到某些位置,是需要重复走回到一些位置的,即在总路径中,一些坐标是有重复出现的。
      这是不会的,比如说对于一个网格4*4的,
                  O    O    O    O    O
                  
                  O    O    O    O    O
     
                  O    O    O    0    O
      
          (0,0)O    O    O    O    O
按马走日,马从(0,0)到(2,1),得路径,同样可以用分三步去走,(0,0)〉(1,2),(1,2)〉(3,3),(3,3)>(2,1),正好是一个平行四边形的四个角点。

再一点是:对每走一步,其下一步所有可能走的路径,都会走一遍的,这种重复的工作人做不来得要程序来做,我们只要附加条件就可以得到我们所要的了,
程序不难做的。
   根据搂住的意思,从一个给定的位置走,走遍每个格子,肯定是一遍走完,不需要重复了,其实仔细想一下,重复就是我们所要避免的死循环,所以,我们只要
二;对每步走的路径与前面所走的路对比,判断是否有重复
(坐标对比)就可以了,
   别想的太难了,是机器作循环走,不是你,让程序走就可以,加限制条件即得到结果了!!!


我就是我
2010-06-03 12:52
qq342991688
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:25
专家分:106
注 册:2010-5-30
收藏
得分:0 
你们慢慢循环吧
2010-06-03 16:50
pigpigpigxk
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:26
专家分:109
注 册:2010-5-27
收藏
得分:0 
马要走到某些位置,是需要重复走回到一些位置的,即在总路径中,一些坐标是有重复出现的。
      这是不会的,比如说对于一个网格4*4的,
                  O    O    O    O    O
                 
                  O    O    O    O    O
   
                  O    O    O    0    O
     
          (0,0)O    O    O    O    O
按马走日,马从(0,0)到(2,1),得路径,同样可以用分三步去走,(0,0)〉(1,2),(1,2)〉(3,3),(3,3)> (2,1),正好是一个平行四边形的四个角点。
再一点是:对每走一步,其下一步所有可能走的路径,都会走一遍的,这种重复的工作人做不来得要程序来做,我们只要附加条件就可以得到我们所要的了,
程序不难做的。
   根据搂住的意思,从一个给定的位置走,走遍每个格子,肯定是一遍走完,不需要重复了,其实仔细想一下,重复就是我们所要避免的死循环,所以,我们只要
二;对每步走的路径与前面所走的路对比,判断是否有重复 (坐标对比)就可以了,
   别想的太难了,是机器作循环走,不是你,让程序走就可以,加限制条件即得到结果了!!!
从一个给定的位置,可以是(0,1)或其他,你如何能够证明总路径中没有重复的坐标就可以完成?如果不能够证明,你的想法是建立在猜测的基础上。把程序写出来测试一下吧!
2010-06-03 18:33
源本英明C
Rank: 3Rank: 3
来 自:日本
等 级:论坛游侠
帖 子:113
专家分:154
注 册:2010-5-14
收藏
得分:0 
都是厉害人物

柔术:打败对手的最好方法就是心狠手辣,因为对手不会给你太多机会,如果他够厉害!
2010-06-07 08:49
快速回复:急 java 国际象棋问题 求助 先谢了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025007 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved