java - 网格世界帮助将小动物移动到空位

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

最佳答案

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

<小时/>

如何拦截鼠标点击和按键

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

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

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

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

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

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

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

<小时/>

Source (pg 16)

关于java - 网格世界帮助将小动物移动到空位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22441317/

相关文章:

java - 使用 KeyEvent 时遇到问题

java - 将字符网格添加到 jPanel

java - 数组中的捷径?

java - 如何防止通过鼠标单击更改选项卡

java - 如何将 MS Access 数据库连接到 Java Applet

java - 如何将命令行输入文件中的行打印到命令行输出文件?

java - Gridworld 在列表中查找最近的位置

java - 考虑从 Java 迁移的基本 C++ 方面

java - 为 'this' 访问发出空检查?

Java arraylist 不兼容类型错误