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

时间:2015-10-21 11:18:55

标签: java oop methods

所以我在这里有点困惑,前几天我有了第一个面向对象编程的java课程,我决定要练习很多,因为我们选择" Top-Down&# 34;设计,这基本上意味着我们首先使用我们想要的任何方法编写主程序块,然后在新类中编写这些方法的定义。

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

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();"本来应该有用(但事实并非如此),因为我们正在与#34; Karel the Robot"使用方法" move();"而不是" robot.move();"完全没问题,现在我的问题是,我实际上是在遗漏某些东西,或者它实际上并不是“合法的”#34;在"真实" java世界?

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

感谢。

1 个答案:

答案 0 :(得分:1)

在第二次尝试中,您尝试从Robot类调用Gater类的方法,而不提供Robot对象。

您必须创建一个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);
    }

}