房天下 > 房天下问答 > 业主生活 > 其他
  • JAVA五子棋程序代码分析(3)

    public boolean Game_win_1(int x,int y) //判断输赢 横{int x1,y1,t=1;x1=x;y1=y;for (int i=1;i<5 ;i++ ){ if (x1>15) { break; } if (intGame_Body[x1+i][y1]==intGame_Body[x][y]) { t+=1; } else { break; }}for (int i=1;i<5 ;i++ ){ if (x1<1) { break; } if(intGame_Body[x1-i][y1]==intGame_Body[x][y]) { t+=1; } else { break; }}if (t>4){ return true;}else{ return false;}}public boolean Game_win_2(int x,int y) //判断输赢 竖{int x1,y1,t=1;x1=x;y1=y;for (int i=1;i<5 ;i++ ){ if (x1>15) { break; } if (intGame_Body[x1][y1+i]==intGame_Body[x][y]) { t+=1; } else { break; }}for (int i=1;i<5 ;i++ ){ if (x1<1) { break; } if(intGame_Body[x1][y1-i]==intGame_Body[x][y]) { t+=1; } else { break; }}if (t>4){ return true;}else{ return false;}}public boolean Game_win_3(int x,int y) //判断输赢 左斜{int x1,y1,t=1;x1=x;y1=y;for (int i=1;i<5 ;i++ ){ if (x1>15) { break; } if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y]) { t+=1; } else { break; }}for (int i=1;i<5 ;i++ ){ if (x1<1) { break; } if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y]) { t+=1; } else { break; }}if (t>4){ return true;}else{ return false;}}public boolean Game_win_4(int x,int y) //判断输赢 左斜{int x1,y1,t=1;x1=x;y1=y;for (int i=1;i<5 ;i++ ){ if (x1>15) { break; } if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y]) { t+=1; } else { break; }}for (int i=1;i<5 ;i++ ){ if (x1<1) { break; } if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y]) { t+=1; } else { break; }}if (t>4){ return true;}else{ return false;}}}请解释的详细点。(1)(2)(3)都解答完整的,我会把所有的积分都打过去,外加100积分

    提问者:CHENANA

    发布于2011-02-10

共1个回答
  • stores 丨Lv 4
    这一段的代码基本上是重复的,只是稍微有些不用而已。原来的代码中有些错误已经顺便纠正了下。楼主还有什么问题的话+Q 406937523吧~一般晚上我都在,隐身~public boolean Game_win_1(int x,int y) //判断输赢 横 { int x1,y1,t=1; //t是跟当前x,y坐标处的棋子相连的相同颜色棋子个数x1=x; //赋初值,x,y坐标,实际上这两个变量很没有存在的必要y1=y; for (int i=1;i<5 ;i++ ) //连续的5个棋子就赢了,所以往x增大的方向最多需要找4个就行了{ if (x1+i>15) //如果超出棋盘的右边界注意这里本来的代码是错的{ break; //就不用继续找下去了} if (intGame_Body[x1+i][y1]==intGame_Body[x][y]) //如果这个棋子跟当前棋子颜色相同{ t+=1; //则让计数器t增加一} else //否则{ break; //就不用继续找下去了,接下来的棋子肯定不是连续的了} } for (int i=1;i<5 ;i++ ) //同样,往x减小的方向找,最多只需要找4个{ if (x1-i<1) //如果超过坐边界{ break; //则不用继续找下去} if(intGame_Body[x1-i][y1]==intGame_Body[x][y]) //如果这个棋子跟当前棋子颜色相同{ t+=1; //则让计数器t增加一} else //否则{ break; //就不用继续找下去了,接下来的棋子肯定不是连续的了} } if (t>4) //如果连续的棋子个数大于4个{ return true; //返回赢了} else { return false; //返回还没赢呢} } //接下来的三个函数跟第一个几乎一样public boolean Game_win_2(int x,int y) //判断输赢 竖 { int x1,y1,t=1; x1=x; y1=y; for (int i=1;i<5 ;i++ ) { if (y1+i>15) //注意这里本来的代码是错的{ break; } if (intGame_Body[x1][y1+i]==intGame_Body[x][y]) //y方向上增加{ t+=1; } else { break; } } for (int i=1;i<5 ;i++ ) { if (y1-i<1) //注意这里本来的代码是错的{ break; } if(intGame_Body[x1][y1-i]==intGame_Body[x][y]) //y方向上减小{ t+=1; } else { break; } } if (t>4) { return true; } else { return false; } } public boolean Game_win_3(int x,int y) //判断输赢 右斜 { int x1,y1,t=1; x1=x; y1=y; for (int i=1;i<5 ;i++ ) { if (x1+i>15 || y1-i<1) //注意这里本来的代码是错的{ break; } if (intGame_Body[x1+i][y1-i]==intGame_Body[x][y]) //往右上方向去,此时x增大y减小{ t+=1; } else { break; } } for (int i=1;i<5 ;i++ ) { if (x1-i<1 || y1+i>15) //注意这里本来的代码是错的{ break; } if(intGame_Body[x1-i][y1+i]==intGame_Body[x][y]) //往左下方向去,此时x减小y增大{ t+=1; } else { break; } } if (t>4) { return true; } else { return false; } } public boolean Game_win_4(int x,int y) //判断输赢 左斜 { int x1,y1,t=1; x1=x; y1=y; for (int i=1;i<5 ;i++ ) { if (x1+i>15 || y1+i>15) //注意这里本来的代码是错的{ break; } if (intGame_Body[x1+i][y1+i]==intGame_Body[x][y]) //往右下方向去,此时x增大y增大{ t+=1; } else { break; } } for (int i=1;i<5 ;i++ ) { if (x1-i<1 || y1-i<1) //注意这里本来的代码是错的{ break; } if(intGame_Body[x1-i][y1-i]==intGame_Body[x][y]) //往左上方向去,此时x减小y减小{ t+=1; } else { break; } } if (t>4) { return true; } else { return false; } } }
    +11 2011-02-10 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。