【问题标题】:gridworld help-moving critters to open spot网格世界帮助移动小动物到开放点
【发布时间】:2014-03-16 18:54:29
【问题描述】:

好的,我有一个计算机科学项目到期,我需要有关网格世界的帮助。我已经编写了代码,所以我可以单击一个小动物,但我想单击该小动物一次,然后单击网格上的一个空白点将小动物移动到。但它不起作用。我需要让它工作,我不知道我的代码有什么问题。看一看。感谢您的所有帮助

Actor t;

public boolean locationClicked(Location loc)
{
    Grid<Actor> gr = getGrid();
    t = gr.get(loc);
    Actor j;
    //Location second;
    if (t != null) 
    { 
        setMessage("Click on " + t);
        numOfClicks++;
        if(t instanceof BlackCheckers || t instanceof RedCheckers)
        {

            if(numOfClicks==0)
            {
                secondClick(second);
            }

        }
    }
    else
    {            

        setMessage("Click on nothing");

    }      
    return true;   
}
Location second;
public void secondClick(Location second)
{
    this.second=second;
    Grid<Actor> op=getGrid();
    Actor te=op.get(second);
    if(te==null)
    {
        t.moveTo(second);
    }
}

【问题讨论】:

  • “它不起作用”到底是什么意思?能否请您格式化代码的顶部(在Actor 旁边放置4 个空格)?

标签: java bluej gridworld


【解决方案1】:

这超出了我对 Gridworld 的了解,但我发现了一些可能有帮助的东西。


如何拦截鼠标点击和击键

World 类具有拦截鼠标点击和击键的学生友好机制。不需要了解 AWT 事件。

当用户单击网格位置时,会调用WorldlocationClicked 方法。默认情况下,该方法返回false,它告诉框架启动默认操作,即移动选择框并显示构造函数或方法菜单。

要拦截鼠标点击,覆盖locationClicked 方法。执行任何所需的操作并返回true。用户单击的网格位置作为参数传递。典型的操作包括翻转图块、填充空白位置等。

有时,您需要在单击鼠标后询问用户其他信息。最简单的方法是使用JOptionPane

让我们考虑一个常见的情况。在游戏中,用户选择一块。您想询问用户要将作品移动到哪里。您可以等待再次单击鼠标。这意味着, 您的locationClicked 方法需要跟踪点击状态(片段选择与目标选择)。或者您可以列举所有合法目标并致电JOptionPane.showOptionDialog.

当用户按下某个键时,会调用WorldkeyPressed 方法。默认情况下,该方法返回false,它告诉框架启动默认键操作。如果用户点击光标键,则移动选择方块。如果用户按 Enter 键,则显示构造函数或方法菜单。忽略所有其他键。

要拦截击键,请覆盖keyPressed 方法。该方法接收当前位置和击键字符串,以与java.awt.KeyStroke 类使用的相同格式进行编码。示例击键字符串是“INSERT”或“alt shift X”。您的keyPressed 方法应该检查击键字符串。如果字符串与您要拦截的击键匹配,则执行任何所需的操作并返回true。为所有其他击键返回 false。为光标键和 Enter 键返回 false 是个好主意。否则,您的世界将禁用标准操作。


Source (pg 16)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多