User interface 如何将(board2D:Array<;IntArray>;)转换为GUI Kotlin/AndroidStuido
我真的需要尝试如何从我现有的代码创建GUI。 我不知道如何开始。 我现有的代码在控制台日志中创建了一个8x8的文本,数字为1/2,解决了8皇后难题。(1是皇后2是占位符) 实际创建了一个包含8个ImageView的8个TableRows的GridLayoutUser interface 如何将(board2D:Array<;IntArray>;)转换为GUI Kotlin/AndroidStuido,user-interface,kotlin,logic,User Interface,Kotlin,Logic,我真的需要尝试如何从我现有的代码创建GUI。 我不知道如何开始。 我现有的代码在控制台日志中创建了一个8x8的文本,数字为1/2,解决了8皇后难题。(1是皇后2是占位符) 实际创建了一个包含8个ImageView的8个TableRows的GridLayout fun main() { val board2D = Array(8) { IntArray(8) } computeQueens(board2D, xQueen = 0, yQueen = 0, numberOfQuee
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
}
主要内容(){
val board2D=数组(8){IntArray(8)}
computeQueens(board2D,xQueen=0,yQueen=0,numberOfQueens=0)
}
有趣的printBoardState(board2D:Array){
对于(0..7中的y){
对于(0..7中的x){
打印(${board2D[y][x]})
}
println()
}
println()
}
趣味putQueen(棋盘:阵列,xQueen:Int,yQueen:Int){
对于(0..7中的x){
董事会[yQueen][x]=2
对于(0..7中的y){
董事会[y][xQueen]=2
}
}
用于(0..7中的xD){
对于(0..7中的yD){
val diagoX=xQueen-xD//未连接的对角oben链路
val diagoY=yQueen-yD//未连接的对角oben链路
val diago=diagoX+diagoY//对角未连接连接oben rechts
if(diagoX==diagoY){
板[yD][xD]=2
}
如果(diago==0){
板[yD][xD]=2
}
}
}
董事会[yQueen][xQueen]=1
}
趣味getBoardCopy(板:阵列):阵列{
返回板.map{
it.copyOf()
}.toTypedArray()
}
有趣的电脑皇后(
board2D:数组,
xQueen:Int,
yQueen:Int,
皇后数:Int
):布尔值{
如果(numberOfQueens==8){
printBoardState(board2D)
返回真值
}
var tempXQueen=xQueen
对于(y中的y皇后..7){
适用于(tempXQueen..7中的x){
if(board2D[y][x]==0){
val board2DCopy=getBoardCopy(board2D)
putQueen(董事会复印件,x,y)
val isSuccess=computeQueens(Board2Copy,x,y,numberOfQueens+1)
如果(isSuccess){
返回真值
}
}
}
tempXQueen=0
}
返回错误
}
我的实际GUI的图片: