因此对于我正在做的这个pset(对于Candy Crush克隆),我必须编写一个方法来检查所选点所在的板行中是否存在任何可能的匹配。找到的方法将检查所选点的右侧,并将匹配点数组返回到所选点。在给定代码中,getRowBools
函数应该生成一个带有true
或false
的布尔数组,具体取决于这些点是否与所选点相同。然后,该方法将在所选择的一个之后找到true
s的长度,然后该长度应确定新点阵列的长度。接下来,该方法应该将所有相关点放在新数组中。但是,我不太了解如何以有效的方式修改点值。
public static Point[] buildPossibleMatchRow(Point p, Board b) {
int x = p.x;
int y = p.y;
boolean[] matches = b.getRowBools(new Point(x,y));
int amtcorrectx = 0;
for (int i=0; i < matches.length; i++)
{
if (matches[i]) {
amtcorrectx++;
}
}
Point[] returnVals = new Point[amtcorrectx];
returnVals[0] = p;
for (int i=0; i < returnVals.length; i++)
{
x++;
}
return returnVals;
}
这是我到目前为止的代码,但我确信最后for
循环有问题。有什么我想念的吗?
答案 0 :(得分:0)
我不太明白你的问题,但看看你的代码,你是否意味着要完成这样的事情?
public static Point[] buildPossibleMatchRow(Point p, Board b) {
int x = p.x;
int y = p.y;
boolean[] matches = b.getRowBools(new Point(x,y));
int amountCorrect = 0;
for (int i=0; i < matches.length; i++) {
if (matches[i])
amountCorrect++;
}
Point[] result = new Point[amountCorrect];
for (int i = 0; i < result.length; i++)
result[i] = new Point(x + i, y);
return returnVals;
}