2012-12-06 124 views
0

可能重复:
GameLogic, x in a row game爪哇:checkPositionRow

checkPositionRow的描述:

**** checkPositionRow 公共静态布尔checkPositionRow(烧焦[] []一, int row, int col, int l) 检查指定的单元格是否包含相同字符的单元格的水平连续序列的一部分。单元格的序列需要长度为l。

参数:

  • a - char类型的2维矩形阵列。

  • row - 行有问题

    细胞
  • col - 列问题

  • l细胞 - 序列 返回的所需长度: 真 - 如果所述细胞是部分长度至少为1的水平序列的长度;假 - 否则。****

无法让此游戏工作,需要游戏才能返回true,如果它们连续5个或更多。这是我尝试(不工作,只是返回true,所有的时间,但我需要它返回false当序列小于5):

public static boolean checkPositionRow(char[][] a, int row, int col, int l){ 
    int counter = 1; 

    for (int i=0; i<a.length; i++) { 
    if(a[row][i] == a[row][i+1]) { 
     counter++; 

     if(counter >= 5){ 
     return true; 
     }     
    } 
    } 

    return false; 
} 

我在做什么错?帮帮我!

+1

你在做一个匹配5场比赛,你可以检查?这可能是更简单的方法。 – Zutty

+1

@amit好点。看起来像一个大学班级已被赋予一项任务:-) –

+0

@DuncanJones:该方法的名称:'checkPositionRow()'名称看起来很熟悉... – amit

回答

0
if(a[row][i] == a[row][i+1]){ 
    ... 
}else{ 
    //reset counter 
    counter = 1; 
} 

应该i<a.length需要被i<a.length -1其他a[row][i+1]能给出界异常。 a[row].length正确的长度

if(counter >= l){ 
    //l = required length 
    return true; 
} 

的重写,同时

public static boolean checkPositionRow(char[][] grid, int row, int col, int requiredLength) { 
    int counter = 0; 
    int index = 0; 
    char[] charRow = grid[row]; 
    char charToLookFor = grid[row][col]; 
    while (index < charRow.length && counter < requiredLength) { 
    if (charToLookFor == charRow[index]) { 
     counter++; 
    } else { 
     counter = 0; 
    } 
    index++; 
    } 
    return counter == requiredLength; 
} 

如果长度行大于或等于所需长度

public static boolean checkPositionRow(char[][] grid, int row, int col, int requiredLength) { 
    int counter = 0; 
    char[] charRow = grid[row]; 
    if (charRow.length >= requiredLength) { 
     int index = 0; 
     char charToLookFor = grid[row][col]; 
     while (index < charRow.length && counter < requiredLength) { 
     if (charToLookFor == charRow[index]) { 
      counter++; 
     } else { 
      counter = 0; 
     } 
     index++; 
     } 
    } 
    return counter == requiredLength; 
    } 
+0

这不会提供正确的答案,如果您正在寻找位置' (0,4)',在数组'[X,X,X,0,X]'中使用'l == 3'。请注意,建议的解决方案将产生不正确的“真实”。有两个正确的解决方案在[这个线程]中描述(http://stackoverflow.com/questions/13692902/gamelogic-x-in-a-row-game) – amit

+0

第一部分显示了从问题代码中的一些问题 – Err