我有点困惑,因为我刚上了我的第一堂Java面向对象编程课,我决定需要多练习,因为我们采用的是“自顶向下”的设计方法,这基本上意味着我们首先编写主程序块,并使用任何方法,然后在新类中编写这些方法的定义。
所以我决定玩一下我在一个大型多人在线游戏中使用的机器人类,我的计划是让我的角色随机从地图到地图,我做的第一件事就是简单地将鼠标移动到我的游戏中“门”的坐标位置,然后点击该门以打开我可以移动到的位置,如果我使用以下代码,它就可以正常工作:
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();"这样的代码应该是可以生效的(但实际上并不能),因为我们所使用的是“Karel the Robot”这个软件,而不是“Robot”类。在这种情况下,使用方法“move();”而不是“robot.move();”是完全可以的。现在我的问题是,我是不是漏了什么,还是说在“真正”的Java世界中这样的用法是“不合法”的?
如果是后者,那么有没有什么办法可以达到我想要的效果呢?
谢谢。