Я разрабатываю игру. Первоначально я использовал логическое значение при декалировании массивов, позднее выяснилось, что вместо использования логического значения я должен использовать int для хранения состояния игры, когда я заменил логическое значение на int. В моем операторе if отображается исключение несоответствия типов и оператор && не определен для логического типа (типов) аргумента, 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
. Вы не можете использовать целочисленное значение, как вы используете логическое значение. - person Seelenvirtuose   schedule 10.04.2014int
, это ваш старый или новый код? - person Tim   schedule 10.04.2014boolean[][]
, а теперьint[][]
. А это - конечно - не работает. Описанная им ошибка, скорее всего, находится в строках, где объявляются и инициализируются булевы переменные left и up. - person Seelenvirtuose   schedule 10.04.2014dots
должен оставатьсяboolean
. Вам нужно будет создать еще один двумерный массив,int[][] boxes
, который вы будете использовать для отслеживания того, какой игрок владеет ящиком. Имейте в виду, массивdots
на самом деле просто хранит информацию о пользовательском интерфейсе.boxes
будет отслеживать информацию о состоянии игры. То есть состояние игры действительно зависит только от нарисованных сторон и принадлежащих ящиков. Точки - это колокольчики и свистки. - person Mike M.   schedule 10.04.2014dots
и сосредоточиться на сторонах и блоках, а также на том, как вы хотите отслеживать их состояние. Кроме того, вам нужно будет изменить методonTouchEvent()
, чтобы найти ближайшую сторону вместо ближайшей точки, но это простая модификация. Если стороны должны принадлежать игроку, вам нужно отслеживать их аналогично ящикам, то есть с помощьюint
s. - person Mike M.   schedule 10.04.2014