我的愿望是为游戏创建一个bot,在游戏规则的约束下,将信息发送到web服务器。我的第一个问题是找到游戏窗口,然后找到它的名字。我一直在尝试使用辅助技术,但并不完全适应。根据我有限的理解,我需要添加一个类路径,或者一些将两个项目设置在同一个虚拟机中的东西。
我现在正在使用netbeans,当我使用:(这是我的责任)
public void topLevelWindowCreated(Window w) {
String name = w.getAccessibleContext().getAccessibleName();
System.out.println("Names of toplevel windows "+name);
if (!name.equals("Puzzle Pirates"))
// Only if we're running alongside a Window named "Puzzle Pirates"
return;
window = w;
createGUI();
frame.setVisible(true);
}
我将得到我创建的窗口的名称,但不是游戏的名称。
资源:游戏-海盗拼图www.puzzlepirates.com(下载版)代码示例:http://java.sun.com/javase/technologies/accessibility/docs/jaccess - 1.1 -/- examples/explorer/explorer.java
希望你能指点我
不,这不是Netbeans的错。
类路径位意味着你需要在bot库可用的情况下发行《Puzzle Pirates》。这意味着你不能在单独的Java进程中启动PP和bot,如果你从Netbeans内部运行bot,这可能会发生。
如果我理解的样例代码注释正确,当你把你的机器人的类名到awt。属性,它应该在Puzzle Pirates(或任何其他Java应用程序)启动时自动加载。为了开发bot,你需要做的是将《Puzzle Pirates》包含在你的Netbeans项目中,并开始游戏,而不是一些测试窗口。
您总是可以使用反射实例化puzzle pirates来从您的程序中加载puzzle pirates,从而在相同的java进程中允许您挂接到puzzle pirates并获取任何必要的信息。