所以我在这里有点困惑,前几天我有了第一个面向对象编程的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世界?
如果不是,那么我有什么办法可以实现我想要的目标吗?
感谢。
答案 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);
}
}