java 五子棋怎么判断输赢。。

java五子棋怎么判断输赢。。是用数组么。怎么个用法,怎么找起始点,。。迷茫,没头绪,强人救救,狂谢了。可以的话来个代码加详解,,求救ing... java 五子棋怎么判断输赢。。
是用数组么。 怎么个用法,
怎么找起始点,。。 迷茫, 没头绪,
强人救救,狂谢了。 可以的话来个代码加详解,, 求救ing
展开
 我来答
朝奈纯02
2010-08-18 · TA获得超过458个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:225万
展开全部
只说说思路吧,要想给你有效地代码所耗费的时间太多。

肯定用数组,二维数组,要从横竖斜三个方向判断。

这里假设数组为arr[][]
并假定,数组中的某个元素值为0表示没有棋子,1表示有黑子,2表示有白子
调用result(),返回0表示没有人赢,返回1表示黑方赢,2表示白方赢

private int result(){
int i,j,flag=1;
//先判断横向
for(i=0;i<arr.length();i++){
for(j=0;j<arr[i].length()-1;j++){
if(arr[i][j]==arr[i][j+1]){
flag+=1;
if(flag==5){
return a[i][j];
}
}else{
flag=1;
}
}
}
//再判断竖向
flag=1;
for(j=0;j<arr[1].length();j++){
for(i=0;i<arr[i].length()-1;i++){
if(arr[i][j]==arr[i][j+1]){
flag++;
if(flag==5){
return a[i][j];
}
}else{
flag=1;
}
}
}
//斜的:
flag=1;
//遍历所有格
for(i=0;i<arr.length();i++){
for(j=0;j<arr[i].length()-1;j++){
//从当前格开始,往右下角查找
int m=i,n=j;
while(m<arr.length()&&n<arr[1].length()){
if(arr[m][n]==arr[++m][++n]){
flag++;
if(flag==5){
return a[m][n];
}
}else{
flag=1;
}
}
//从当前格开始,往左下角查找
int m=i,n=j;
while(m<arr.length()&&n<arr[1].length()){
if(arr[m][n]==arr[++m][--n]){
flag++;
if(flag==5){
return a[m][n];
}
}else{
flag=1;
}
}
}
}

}
cainiaolaoniao
推荐于2016-06-19 · TA获得超过359个赞
知道答主
回答量:309
采纳率:0%
帮助的人:192万
展开全部
没用过JAVA,说个思路希望对你有帮助
准备两个变量 一个 黑赢变量 一个白赢变量
为棋盘上每个点准备一个变量 叫点变量
该变量空为0 下白棋加1 下黑棋加2
看看拥有超过4个点的线(包括斜线)有多少个 作为外循环次数

外循环的工作
要6次重置起始点的位置,和内循环次数,和内循环里面的起始点内存地址
以及距离一下个点的内存地址的距离,每循环一次是加还是减也要知道
规律会变化6次
内循环的工作
1.测试点
如果为0则把黑赢和白赢变量清0
如果为1把白赢变量加1黑赢变量清0
如果为2把黑赢变量加1白赢变量清0
2.测试黑赢和白赢变量是否为5 哪个为5就是哪个赢了 结束循环

3.根据外循环提供的规律调整指向点变量的指针,和距离一下个点变量在内存里的距离

判断当前点周围也可以,不过涉及到边界问题,
我觉得那样更复杂
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
歪瑞顾K
2010-08-18 · TA获得超过2906个赞
知道大有可为答主
回答量:2731
采纳率:33%
帮助的人:2266万
展开全部
循环棋盘上每个下了子的点,判断它横竖斜线方向是否有5个子挨着。
如果有,则OK。。。

用一个2维boolean数组,有子的是true,无子的是false.

这有多难??

由于是双方都有子,则用类 Boolean,或者其他任意类型,反正是可以有三个标志的都可以,空,敌方,我方。

用枚举当然是最合适的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f80d78f93
2010-08-18 · TA获得超过125个赞
知道答主
回答量:192
采纳率:0%
帮助的人:162万
展开全部
我是学Pascal的,但是大体思想可以给你说说。
每次落字判断这个子颜色并向8个方向延伸,如果延伸到5个则赢。如果眼神到5个之前就遇到不同颜色的子则直接退出这个方向的延伸。
时间复杂度最多O(40)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yqsqq
2010-08-18 · TA获得超过103个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:170万
展开全部
用一位数组模拟二维数组,存储各点的位置,然后直接写个算法判断遍历后的数组是否符合输赢条件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式