java - 从另一个类混淆调用方法(机器人类)

标签 java oop methods

所以我在这里有点困惑,前几天我上了我的第一个面向对象编程 java 课,我决定我需要大量练习,因为我们采用的是“自上而下”的设计,基本上意味着我们首先使用我们想要的任何方法编写主程序 block ,然后将这些方法的定义写在一个新类中。

所以我决定在我玩的 MMO 游戏中使用机器人类,基本上我的计划是让我的角色随机地从一个 map 移动到另一个 map ,我做的第一件事就是简单地将鼠标移动到坐标我的游戏中有一个“门”,然后单击该门以打开我可以移动到的位置,如果我使用此代码,它可以正常工作:

import java.awt.Robot;
import java.awt.event.InputEvent;

    public class Move {

      public static void main(String[] args) throws Exception {

            Robot sW = new Robot();

            Thread.sleep(2000);
            sW.mouseMove(262,105);
            Thread.sleep(500);
            sW.mousePress( InputEvent.BUTTON1_MASK );
            sW.mouseRelease( InputEvent.BUTTON1_MASK );
            Thread.sleep(5000);



      }
    }

然而,正如我所说,我想练习自上而下的设计,我必须让我的主要方法更简洁,所以我尝试了以下方法:

package test;

public class Test {

    public static void main (String [] args){

        Gater sW = new Gater();

        sW.moveToGate();
    }

}

package test;

import java.awt.event.InputEvent;
import java.awt.Robot;

public class Gater {

    public void moveToGate(){

        Thread.sleep(2000);
        mouseMove(262,105);
        Thread.sleep(500);
        mousePress( InputEvent.BUTTON1_MASK );
        mouseRelease( InputEvent.BUTTON1_MASK );
        Thread.sleep(5000);
    }

}

现在根据我从类里面收集到的信息,类似于“mouseMove();”应该有效(但它没有),因为我们使用“move();”方法与“Karel the Robot”一起工作。而不是“robot.move();”完全没问题,现在我的问题是,我是否真的遗漏了什么,或者在“真实”的 Java 世界中它实际上并不“合法”?

如果不是,我有什么办法可以实现我想要的吗?

谢谢。

最佳答案

在第二次尝试中,您尝试调用 Robot 的方法来自 Gater 的类(class)不提供 Robot 的类(class)对象。

您必须创建一个 Robot 实例:

public class Gater {

    public void moveToGate(){
        Robot robot = new Robot ();
        Thread.sleep(2000);
        robot.mouseMove(262,105);
        Thread.sleep(500);
        robot.mousePress( InputEvent.BUTTON1_MASK );
        robot.mouseRelease( InputEvent.BUTTON1_MASK );
        Thread.sleep(5000);
    }

}

关于java - 从另一个类混淆调用方法(机器人类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33257975/

相关文章:

java - 从 JSP 中的类中调用 application.getRealPath()

java - 在java中格式化2位小数

c# - 如何在类似颠覆的系统中更好地并发处理命令?

javascript - 如何返回数组中没有重复项的数组?

java - 如何使用 SVN 和 Maven 获取内部版本号?

java - 带参数的单例类

c++ - 面向对象设计问题,里氏代换原则

python - 属性错误 : 'str' object has no attribute 'policy'

c++ - 指针指针方法 C++

ios - 应用检查更新