如何将(board2D:Array <IntArray>)转换为GUI Kotlin / AndroidStuido

时间:2020-09-23 12:09:37

标签: user-interface kotlin logic

我真的需要尝试如何从现有代码创建GUI。 我不知道如何开始。 我现有的代码在控制台日志中创建了一个8x8的文本,其中数字1等于2,可以解决8个皇后难题。 (1是皇后区2是占位符) 实际使用8个TableRows创建了一个GridLayout,其中包含8个ImageView。


fun main() {
    val board2D = Array(8) { IntArray(8) }
    computeQueens(board2D, xQueen = 0, yQueen = 0, numberOfQueens = 0)
}

fun printBoardState(board2D: Array<IntArray>) {
    for (y in 0..7) {
        for (x in 0..7) {
            print("${board2D[y][x]} ")
        }
        println()
    }
    println()
}

fun putQueen(board: Array<IntArray>, xQueen: Int, yQueen: Int) {
    for (x in 0..7) {
        board[yQueen][x] = 2
        for (y in 0..7) {
            board[y][xQueen] = 2
        }
    }
    for (xD in 0..7) {
        for (yD in 0..7) {
            val diagoX = xQueen - xD    //Diagonal oben links unten rechts
            val diagoY = yQueen - yD    //Diagonal oben links unten rechts
            val diago = diagoX + diagoY //Diagonal unten links oben rechts
            if (diagoX == diagoY) {
                board[yD][xD] = 2
            }
            if (diago == 0) {
                board[yD][xD] = 2
            }
        }
    }
    board[yQueen][xQueen] = 1
}

fun getBoardCopy(board: Array<IntArray>): Array<IntArray> {
    return board.map {
        it.copyOf()

    }.toTypedArray()
}

fun computeQueens(
    board2D: Array<IntArray>,
    xQueen: Int,
    yQueen: Int,
    numberOfQueens: Int
): Boolean {
    if (numberOfQueens == 8) {
        printBoardState(board2D)
        return true
    }
    var tempXQueen = xQueen
    for (y in yQueen..7) {
        for (x in tempXQueen..7) {
            if (board2D[y][x] == 0) {
                val board2DCopy = getBoardCopy(board2D)
                putQueen(board2DCopy, x, y)
                val isSuccess = computeQueens(board2DCopy, x, y, numberOfQueens + 1)
                if (isSuccess) {
                    return true
                }
            }
        }
        tempXQueen = 0
    }
    return false
}

我的实际GUI图片:

enter image description here

0 个答案:

没有答案