【发布时间】:2014-05-23 16:21:37
【问题描述】:
我正在开发游戏,最初我在标记数组时使用布尔值,后来它表明我应该使用 int 而不是使用 boolean 来存储游戏状态, 当我用 int 替换 boolean 时,我的 if 语句显示 type mismatch exception 和 The operator && is undefined for the argument type(s) boolean, int。这是我的 if 语句代码。
int [][] dots
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawPaint(pBack);
for (int y = 0; y < numRows; y++)
{
canvas.drawLine(xStep, yCoords[y], numColumns * xStep, yCoords[y], pDot);
for (int x = 0; x < numColumns; x++)
{
if (y == 0)
{
canvas.drawLine(xCoords[x], yStep, xCoords[x], numRows * yStep, pDot);
}
if (dots[x][y])
{
boolean left = x > 0 && dots[x - 1][y];
boolean up = y > 0 && dots[x][y - 1];
if (left)
{
canvas.drawLine(xCoords[x], yCoords[y], xCoords[x - 1], yCoords[y], pLine);
}
if (up)
{
canvas.drawLine(xCoords[x], yCoords[y], xCoords[x], yCoords[y - 1], pLine);
}
if (left && up && dots[x - 1][y - 1])
{
canvas.drawCircle(xCoords[x] - xStep / 2, yCoords[y] - yStep / 2, 10, pLine);
}
}
}
}
for (int y = 0; y < numRows; y++)
{
for (int x = 0; x < numColumns; x++)
{
canvas.drawCircle(xCoords[x], yCoords[y], 20, pDot);
if (dots[x][y])
{
canvas.drawCircle(xCoords[x], yCoords[y], 15, pLine);
}
}
}
if (firstDotX != -1)
{
canvas.drawCircle(xCoords[firstDotX], yCoords[firstDotY], 25, pSelect);
}
}
【问题讨论】:
-
嗯。
int不是boolean。不能像使用布尔值那样使用整数值。 -
我没有看到
ints,这是您的旧代码还是新代码? -
@TimCastelijns 我猜,dots 变量(或者它是一个字段?)之前是
boolean[][],现在是int[][]。而这——当然——是行不通的。他描述的错误很可能出现在声明和初始化布尔变量 left 和 up 的行中。 -
当然,我们可以猜测。但我们不知道,这就是我问的原因:-)
-
那么我建议你暂时彻底摆脱
dots,专注于边和框,以及你想如何跟踪它们的状态。此外,您将需要更改onTouchEvent()方法以找到最近的一侧,而不是最近的点,但这是一个简单的修改。如果边是由玩家“拥有”的,那么您将需要以类似于框的方式跟踪它们,即使用ints。
标签: java if-statement int boolean type-mismatch