javafx框架tornadofx实战-舒尔特2

2020-06-08 18:08:57 浏览数 (2)

代码语言:javascript复制
 // 刷新网格
    private fun refreshGrid() {
        timeUsed.set(format(0))
        isRun.set(false)
        resultList.clear()
        val n = nproperty.value
        r.clear()
        suerte.clear()
        correctResult.clear()
        isRun.set(false)
        aniTimer.stop()
        if (n * n > content.value.length) {
            information("超出内容长度")
            return
        }
        (1..n * n).map {
            suerte.add(content.value[it - 1].toString())
//            suerte.add("$it")
        }
        correctResult.addAll(suerte)
        suerte.shuffle()
        val iter = suerte.iterator()
        (0 until n).map { i ->
            (0 until n).map { j ->
                r.add(button(iter.next()) {
                    setPrefSize(r.prefHeight / n, r.prefHeight / n)
                    action {
                        if (resultList.size < 2) {//当第一次点击时,开始计时
                            isRun.set(true)
                            startTime.set(System.currentTimeMillis())
                        }
                        if (!resultList.contains(this.text) && correctResult[resultList.size] == this.text) resultList.add(this.text)//将每次点击的数字添加到结果列表中
                        textFill = if (resultList.size > 1 && correctResult[resultList.size - 1] == this.text) {//点击后更改字体颜色
                            Color.BLUE
                        } else {
                            Color.RED
                        }
                        if (resultList.size == n * n) isRun.set(false)

                        if (isRun.value) {
                            aniTimer.start()
                        } else {
                            aniTimer.stop()
                        }
                        style {
                            backgroundColor  = c("#99CC00")
                            fontSize = 26.px
                        }
                        if (resultList.joinToString() == correctResult.joinToString()) information("恭喜!成功完成本局")

                    }
                    style {
                        borderColor  = box(c("red"))
                        borderWidth  = box(1.px)
                        fontSize = 26.px
                    }
                }, i, j)
            }
        }
    }

0 人点赞