У меня возникли проблемы с итерацией моего массива логических значений. Проблема в том, что у меня есть четыре позиции, которые должны активировать мое условие if, но оно обнаруживает только одну. Я думаю, это потому, что я перебираю мысли в плохом смысле. Вот мой код, чтобы вы могли понять мою проблему:
Декларация массивов:
var columns = BooleanArray(Constants.WIDTH){ false }
var lines = BooleanArray(Constants.HEIGHT){false}
Здесь я проверяю только то, в каких положениях я должен включить истинное состояние, и, как вы можете видеть, я углубляюсь в матрицу:
fun addNewIPiece(positionX:Int,positionY:Int){
val matrixPositionX = positionX/Constants.WIDTH_BLOCK
val matrixPositionY = positionY/Constants.HEIGHT_BLOCK
columns[matrixPositionX] = true
for(i in 0..4){
lines[matrixPositionY+i] = true
}
}
Здесь я перебираю и столбцы, и линии, и рисую некоторые блоки, но в некоторой степени получаю только одно совпадение (проверьте ниже кода):
fun drawMap(monoBlock: MonoBlock,canvas: Canvas){
for(columnsList in columns ){
for (linesList in lines){
if (columnsList and linesList) {
Log.d("CoincidenceX",columns.indexOf(columnsList).toString())
Log.d("CoincidenceY",lines.indexOf(linesList).toString()) monoBlock.draw(canvas,columns.indexOf(columnsList),lines.indexOf(linesList))
}
}
}
}
А вот и отладка:
D/CoincidenceY: 87
D/CoincidenceX: 20
D/CoincidenceY: 87
D/CoincidenceX: 20
D/CoincidenceY: 87 ...........
Значит, кто-нибудь может понять, откуда появилась моя ошибка? Я думаю, это так, как я повторяю, но я не уверен.
Заранее спасибо, спросите, есть ли у вас вопрос.