gridworld帮助移动生物打开现场

时间:2014-03-16 18:54:29

标签: java bluej gridworld

好吧,我有一个计算机科学项目,我需要帮助网格世界。我已经编写了代码,所以我可以点击一个生物,但我想点击一次生物,然后点击网格上的一个开放点来移动生物。但它不起作用。我需要让这个工作,我不知道我的代码有什么问题。看一看。谢谢你的帮助

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);
    }
}

1 个答案:

答案 0 :(得分:0)

这超出了我对Gridworld的了解,但我找到了可能有用的东西。


如何拦截鼠标点击和击键

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

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

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

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

让我们考虑一下常见情况。在游戏中,用户选择一块。你想问一下用户想要移动这件作品的位置。您可以等待另一次鼠标单击。那意味着, 您的JOptionPane方法需要跟踪点击状态(片段选择与目标选择)。或者,您可以枚举所有合法目标并致电locationClicked

当用户点击某个键时,会调用JOptionPane.showOptionDialog.的{​​{1}}方法。默认情况下,该方法返回keyPressed,它告诉框架启动默认密钥操作。如果用户点击光标键,则移动选择方块。如果用户按Enter键,则显示构造函数或方法菜单。所有其他键都被忽略。

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


Source (pg 16)