【发布时间】:2020-11-07 20:33:40
【问题描述】:
我目前正在尝试使用 TornadoFX 在 Kotlin 中开发一个小棋盘游戏,主要用于练习目的。但我目前正在努力将这些碎片添加到董事会中。我尝试了许多对我来说似乎合乎逻辑的不同方法,但每次它都给我一个错误消息或根本不工作。因此,当我没有想法或可能的解决方案时,我现在在 stackoverflow 上寻求帮助(有史以来第一次 :-))。
从控制器向棋盘添加棋子的最佳方式或最惯用的方式是什么?我还应该提到我之前没有真正使用过 JavaFX,所以我正在从头开始学习 TornadoFX。
这是我的板子视图:
class BoardView : View("BoardView")
{
private val numberOfCells = 8
private val cellSize = 100.0
private val controller: BoardController by inject()
override val root = pane {
prefHeight = cellSize * numberOfCells
prefWidth = cellSize * numberOfCells
gridpane {
for (y in 0 until numberOfCells)
{
row {
for (x in 0 until numberOfCells)
{
if ((x + y) % 2 == 0)
{
add(ChessCell(cellSize, true, x, y))
}
else
{
add(ChessCell(cellSize, false, x, y))
}
}
}
}
}
}
}
我的碎片片段:
class Stone(light: Boolean, x: Double, y: Double): Fragment()
{
private val colorLight = c("E4E4E4")
private val colorDark = c("1B1B1B")
override val root = pane {
circle {
fill = if (light)
{
colorLight
}
else
{
colorDark
}
radius = 30.0
centerY = y
centerX = x
}
}
}
最后是我的控制器类:
class BoardController(): Controller()
{
private val board: BoardView by inject()
fun startGame()
{
// How to place a Stone (aka piece) from here?
}
}
非常感谢任何帮助
【问题讨论】:
-
欢迎您!对不起,但你问的不是我们这里的事。请查看intro tour 中的on topic 和how to ask。 “告诉我如何解决这个编码问题?”与 Stack Overflow 无关。您必须诚实地尝试解决方案,然后询问有关您的实施的具体问题。 Stack Overflow 并非旨在取代现有教程或文档,也不是为您完成研究、设计或编码工作的方式。
-
@Steve 抱歉,但即使在查看了链接之后,我仍然没有发现我的问题有任何问题。我也不想外包我的研究。 TornadoFX 文档非常基础,不是很深入,而且我还没有在网络上找到其他有类似问题的人。我不是在这里要求完美的工作代码,关于 TornadoFX 的什么方法和/或概念的一点提示或提示,我应该看看谁就可以了。我不会在这里问我是否还有其他想法或解决方案......
-
类比——人们在这里回答最基本的 R 问题。我不明白为什么这个 Q 有什么不同。我承认:这很深奥。