当前位置:编程学习 > JAVA >>

自动【打地鼠】游戏的JAVA应用程序制作的思路(给路大神请帮忙)

自动打地鼠的JAVA应用程序

最近接触了一个游戏叫打地鼠



这个游戏在windows的一个窗口中单独运行的。

这个小地鼠在不同的洞穴钻出来,我们要拿锤子不断的去砸他才可以得分,能否通过JAVA来实现一个窗口内自动找图然后模拟鼠标点击这样一个应用程序呢?希望大家给一些思路,看看应该用JAVA中的哪些API来完成这项工作。

而且要求是这个打地鼠游戏的windows窗口不管是当前状态还是最小化,都不影响自动打地鼠程序的运行,也就是支持后台运行吧。

当前遇到一些问题没有什么思路希望各位高手指点一二。

1、操作系统中可能开有不同的windows窗口,可能有计算器、记事本或者其他程序,那么我们如何来准确有效的抓取这个打地鼠的窗口句柄呢?然后只针对这个句柄所在的窗口进行相应的操作?

2、如何在打地鼠游戏窗口内进行目标图片的搜索和比对?是利用图片截取保存以后与目标图片进行对比还是进行窗口区域像素逐行搜索比较好?或者还有其他更好的方法吗?(这个搜索比对的过程中利用哪些API?)

3、图片比对成功后模拟鼠标左键双击相应位置,这个应该如何来实现呢?(利用哪些API程序)

现在头脑比较混乱希望高手给一些思路,是不是JAVA做这样的应用不在行呢? --------------------编程问答-------------------- 你用Java做可以。
但是必须用到 JNI了。
我可以告诉你用什么Win32 API来访问窗口,和窗口截图什么的。

FindWindow 来找到游戏窗口。

模拟点击很简单,mouse_event

这些API你都可以搜到。



比较图片这个麻烦一点,首先你要频繁截图,然后对前后两个图片进行比较。
有不一样的地方,说明有 地鼠 出现【假设背景是完全静止的】


你需要的API很多。
GetDC,
CreateBitmap等等

--------------------编程问答-------------------- LZ好厉害呀,我靠,真的很有用,赞!!!!!!!!!!!!!!!!!!!!!!! --------------------编程问答-------------------- 从游戏中直接获取鼹鼠出现的坐标位置是最好的了,不知道鼹鼠坐标变量所使用的内存地址是不是固定的 --------------------编程问答--------------------
引用 3 楼 dracularking 的回复:
从游戏中直接获取鼹鼠出现的坐标位置是最好的了,不知道鼹鼠坐标变量所使用的内存地址是不是固定的

我也想 问题是这个 真的不好找啊  
问题是不知道从何做起。 --------------------编程问答--------------------
引用 4 楼 mayaren888 的回复:
引用 3 楼 dracularking 的回复:从游戏中直接获取鼹鼠出现的坐标位置是最好的了,不知道鼹鼠坐标变量所使用的内存地址是不是固定的
我也想 问题是这个 真的不好找啊  
问题是不知道从何做起。

可以试着先用游戏修改工具,找到鼹鼠坐标内存地址,或者是土洞编号(相当于坐标)内存地址,得到内存地址后,假如是固定的,就都好办了 --------------------编程问答--------------------
引用 5 楼 dracularking 的回复:
可以试着先用游戏修改工具,找到鼹鼠坐标内存地址,或者是土洞编号(相当于坐标)内存地址,得到内存地址后,假如是固定的,就都……



使用canvas画出来就好了,还简单。

先获取鼠标所标相对canvas左上角的坐标。

然后,在屏幕左下角开始建立xyz坐标系。
z
|
--->x

然后建立土洞和鼹鼠和锤子三个模型。

土洞、鼹鼠与锤子的投影在同一平面xy内。


土洞绘制时:根据土洞在屏幕放置位置不同,缩放模型。

每次,鼹鼠都出现在在土洞的中心点,图形跟土洞缩放相同。

锤子投影在xy平面。

--------------------编程问答-------------------- 或者就是固定点抓色,因为洞穴位置固定,鼹鼠出现的几个位置也固定,抓鼹鼠身上的某点颜色 --------------------编程问答-------------------- 想学习java可以试试做这个,想用现成的直接下载按键精灵。 --------------------编程问答--------------------
引用 8 楼 zqfddqr 的回复:
想学习java可以试试做这个,想用现成的直接下载按键精灵。


还是想用JAVA来做这个程序 
主要就是为了学习JAVA
--------------------编程问答--------------------
引用 9 楼 mayaren888 的回复:
引用 8 楼 zqfddqr 的回复:想学习java可以试试做这个,想用现成的直接下载按键精灵。

还是想用JAVA来做这个程序 
主要就是为了学习JAVA
呵呵 这个学习的心态非常好 但是要完成这个程序可有点难度。 --------------------编程问答-------------------- 我个人觉得有些难啊。 --------------------编程问答-------------------- 这个用C  会方便点,JAVA在这方面无优势
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,