【发布时间】:2016-01-20 08:54:40
【问题描述】:
所以我在这里有点困惑,前几天我有我的第一个面向对象编程 java 课程,我决定我需要多练习,因为我们采用“自上而下”设计,基本上意味着我们首先使用我们想要的任何方法编写主程序块,然后在新类中编写这些方法的定义。
所以我决定在我玩的 MMO 游戏中使用机器人类,基本上我的计划是让我的角色随机从一个地图移动到另一个地图,我做的第一件事就是简单的鼠标移动到坐标我的游戏中有一个“门”,然后单击该门以打开我可以移动到的位置,如果我使用此代码,它可以正常工作:
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);
}
}
但是,既然我说过我想练习 Top-Down 设计,我必须让我的 main 方法更简洁,所以我尝试了以下方法:
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 世界中实际上并不“合法”?
如果不是,我有什么办法可以实现我想要的吗?
谢谢。
【问题讨论】:
-
在第一个示例中,您在机器人上调用了 mouseMove。在第二个中,您希望此方法位于“Gater”中,这不是您的示例
-
卡雷尔是谁?除此之外,您应该使用 IDE 进行编程并使用称为“重构/提取方法...”的功能。这将创建一个可重用的方法,但保持您的代码完整。
-
您已经完全移除了机器人。您只是在导入该类,但不再创建它的对象。
-
谢谢你们的回答,伙计们,我仍然不能 +1 你,但一旦我达到足够的声誉,我会的。