【问题标题】:Cellular automata on a Hex gridHex 网格上的元胞自动机
【发布时间】:2011-08-01 15:43:37
【问题描述】:

我正在学习 java,所以我尝试在 hexgrid 上编写一个基本的元胞自动机。

我想将显示代码与模拟代码分开,以便模拟只处理计算并根据它刷新显示本身。

我试图弄清楚如何正确地做到这一点,但我仍然感到困惑。我在互联网上找到了很多资源,但没有一个提供简单的演练来以面向对象的方式对其进行编码。

现在我不关心实现任何模式,在 x 和 y 轴上进行简单的连续移动就足以检查它是否有效。

所以我做了什么:

  • 带有执行、暂停、清除控件和空白显示 Jpanel 的 GUI

如果有人能给我一个方法或框架或任何关于如何实现这一点的建议,我将不胜感激。

【问题讨论】:

  • 有没有想过使用 Netlogo?
  • 首先让程序在没有任何 GUI 的情况下工作 - 只需将输出显示到终端。一旦你完成了这项工作,围绕它开发一个简单的 GUI 并不难
  • @Bradley:您熟悉并且正在使用 MVC 技术吗?首先要做的是以与 GUI 无关的方式创建模型。构建好之后,构建使用该模型的 GUI 和控制类。编辑:正如阿米尔在我之前所说的那样。 :)
  • @ITroubs 是的,但我需要学习 java,所以重用现有的类不是 imo 的最佳方式
  • @Amir & @Hovercraft 你说得对,我会先尝试运行一个简单的模型。输出应该是一个数组吗?

标签: java oop grid hex


【解决方案1】:

伪代码:

class MyModel {
    private int x;
    private int y;

    public int getX() { return x; }
    public int getY() { return y; }

    public void go() {
        // sart a thread that changes x & y over time
    }
    public void stop() {
        // stop the thread
    }
    public void reset() {
        // reset x & y to their initial values
    }
}

以上是您的模型。您的视图应该监控模型的 x 和 y 值的变化,并据此显示移动。当用户点击“go”按钮等时,您的控制器应该调用模型的“go”方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    相关资源
    最近更新 更多