Java gridworld帮助动物移动到开阔的地方

Java gridworld帮助动物移动到开阔的地方,java,bluej,gridworld,Java,Bluej,Gridworld,好的,我有一个计算机科学的项目,我需要网格世界的帮助。我已经编写了代码,所以我可以点击一个生物,但我想点击一次,然后点击网格上的一个开放点,将生物移动到。但它不起作用。我需要让它工作,我不知道我的代码出了什么问题。看一看。谢谢你的帮助 Actor t; public boolean locationClicked(Location loc) { Grid<Actor> gr = getGrid(); t = gr.get(loc); Actor j;

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

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 t;
公共布尔位置单击(位置loc)
{
Grid gr=getGrid();
t=gr.get(loc);
演员j;
//位置第二;
如果(t!=null)
{ 
设置消息(“单击”+t);
NUMOF++;
if(黑方格的t实例| |红方格的t实例)
{
如果(numOfClicks==0)
{
第二次点击(第二次);
}
}
}
其他的
{            
setMessage(“不点击任何内容”);
}      
返回true;
}
位置第二;
第二次单击公共无效(位置第二)
{
这个。秒=秒;
Grid op=getGrid();
Actor te=op.get(秒);
if(te==null)
{
t、 移动到(第二);
}
}

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


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

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

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

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

让我们考虑一个共同的情况。在游戏中,用户选择一个棋子。您需要询问用户希望将工件移动到何处。您可以等待再次单击鼠标。也就是说, 您的
locationClicked
方法需要跟踪单击状态(工件选择与目标选择)。或者您可以枚举所有合法目标并调用
JOptionPane.showOptionDialog.

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

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


你说的“它不起作用”到底是什么意思?另外,您是否可以格式化代码的顶部(在
Actor
旁边的4个空格中)?