所以我在这里有点困惑,前几天我上了我的第一个面向对象编程 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/