对于java初学者来说,编写打地鼠java游戏源代码这个游戏难吗

&&&&打地鼠类小游戏的JAVA程序
&打地鼠类小游戏的JAVA程序
一个很简易的打地鼠类游戏,需要调用的三张图片在image包中,运行时修改包路径。不过在运行过程中有一个小bug目前还没解决。
若举报审核通过,可奖励20下载分
被举报人:
maodoudajie
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
打地鼠类小游戏的JAVA程序
所需积分:1
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
打地鼠类小游戏的JAVA程序
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员自动【打地鼠】游戏的JAVA应用程序制作的思路(给路大神请帮忙) - 开源中国社区
当前访客身份:游客 [
当前位置:
自动打地鼠的JAVA应用程序
最近接触了一个游戏叫打地鼠
这个游戏在windows的一个窗口中单独运行的。
这个小地鼠在不同的洞穴钻出来,我们要拿锤子不断的去砸他才可以得分,能否通过JAVA来实现一个窗口内自动找图然后模拟鼠标点击这样一个应用程序呢?希望大家给一些思路,看看应该用JAVA中的哪些API来完成这项工作。
而且要求是这个打地鼠游戏的windows窗口不管是当前状态还是最小化,都不影响自动打地鼠程序的运行,也就是支持后台运行吧。
当前遇到一些问题没有什么思路希望各位高手指点一二。
1、操作系统中可能开有不同的windows窗口,可能有计算器、记事本或者其他程序,那么我们如何来准确有效的抓取这个打地鼠的窗口句柄呢?然后只针对这个句柄所在的窗口进行相应的操作?
2、如何在打地鼠游戏窗口内进行目标图片的搜索和比对?是利用图片截取保存以后与目标图片进行对比还是进行窗口区域像素逐行搜索比较好?或者还有其他更好的方法吗?(这个搜索比对的过程中利用哪些API?)
3、图片比对成功后模拟鼠标左键双击相应位置,这个应该如何来实现呢?(利用哪些API程序)
现在头脑比较混乱希望高手给一些思路,是不是JAVA做这样的应用不在行呢?
共有6个答案
<span class="a_vote_num" id="a_vote_num_
错误,这里根本不需要取像素值。取像素值是为了获得地鼠的位置,其实这方法太正统了。
最简单的方法就是取得窗口后,直接发送鼠标点击消息,鼠标的位置不能是一个点,而是很多点 ,这些点每隔一段距离,但是要覆盖整个窗口。
--- 共有 3 条评论 ---
: 如果这样做的话 那就失去这个软件的意义了,还是想通过智能判断来完成这个程序的制作
(3年前)&nbsp&
他说就 是一秒 点击 N个点 不间段的点....不需要找到老鼠坐标
(3年前)&nbsp&
不太明白您的思路,获取像素点是为了判断屏幕什么位置存在这个地鼠,如果存在类似的像素点
那么 我们就用鼠标加上一定的偏移量来点击 屏幕中的某个位置。我的理解是这样的
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
引用来自“小耶果”的答案 就冲这图文并茂,就回答一下吧:-)
1.FindWindow等API,根据窗口标题获取窗口Handle(还有很多类似函数)
2.直接检测像素边界轮廓,但不限于这个方法,有很多.但我从图片上来看,硕鼠的颜色像素明显区别于背景,可以做直接的颜色判断.或者改变思路,如果榔头挥空锤不扣分的话,就8个洞都连续自动点击好了.(洞是固定相对坐标,很好定位).
3.PostMessage(WM_LBUTTONDOWN & WM_LBUTTONUP)或Mouse_Event API(模拟鼠标点击,窗口不能最小化且你也不能操作鼠标).推荐前者,不受游戏窗口状态影响.但是有一点,有些游戏是不处理Windows的鼠标消息(比如使用DirectX Input Api),这时就只能后者了.具体还是自己实践一下.
看画面这个游戏似乎是Flash制作的? 十分感谢您的回答,如果这个游戏我开了很多个窗口 那么窗口标题的名字是一样的话 应该如何进行区分呢?有没有可以修改窗口标题的函数?然后我通过查询相同窗口标题的进程ID号 &以后 把 这不同的ID+原始窗口标题 &这样就很容易能区分出来 对哪个句柄的窗口进行操作了。
打地鼠游戏 5642
打地鼠游戏 6486
打地鼠游戏 5363
我只是打一个比方 &每个窗口名称不同了 而且有唯一标识 这样是不是就能很好的对单独某一个窗口进行操作了?
我只是一个设想 具体行不行还希望您多多指点
--- 共有 6 条评论 ---
另外你想通过"外挂"来学Java,你选错练手的题材了.
(3年前)&nbsp&
: 我的意思是你的"外挂"用CreateProcess来启动游戏就能方便的知道ProcessID.而用户双击鼠标来启动游戏这种方式则要通过枚举窗口了.
(3年前)&nbsp&
: 问题是如何来判断这个游戏启动是通过Createprocess来启动的呢?
(3年前)&nbsp&
如果是做外挂,游戏是通过用户双击,你可以EnumWindow来取出所有Process Instance,然后后续处理...
(3年前)&nbsp&
如果前提是通过CreateProcess来启动游戏程序,那么就可以获取ProcessID,至于如何通过ProcessID获取主窗口的Handle,网上搜搜,有很多这样的文章.
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
用java做这一类的东西的确是有些麻烦了。模拟点击的话可以用robot类,也可以用windows API相关的函数,第一个问题:区分窗口的话,用窗口的 标题和类名一般就可以区分。后面的两个问题接触不多,不敢多说。做外挂之类的东西,用按键精灵之类的东西个人感觉方便的多
--- 共有 1 条评论 ---
是啊 都说什么VB VC++
做这类的东西比较容易一些
问题是 这不是就想学JAVA吗? 通过一个问题能学习掌握很多方面的知识
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
就冲这图文并茂,就回答一下吧:-)
1.FindWindow等API,根据窗口标题获取窗口Handle(还有很多类似函数)
2.直接检测像素边界轮廓,但不限于这个方法,有很多.但我从图片上来看,硕鼠的颜色像素明显区别于背景,可以做直接的颜色判断.或者改变思路,如果榔头挥空锤不扣分的话,就8个洞都连续自动点击好了.(洞是固定相对坐标,很好定位).
3.PostMessage(WM_LBUTTONDOWN & WM_LBUTTONUP)或Mouse_Event API(模拟鼠标点击,窗口不能最小化且你也不能操作鼠标).推荐前者,不受游戏窗口状态影响.但是有一点,有些游戏是不处理Windows的鼠标消息(比如使用DirectX Input Api),这时就只能后者了.具体还是自己实践一下.
看画面这个游戏似乎是Flash制作的?
--- 共有 5 条评论 ---
: 谢谢您能耐心的回复我这些对我有用的信息 给与我很大的帮助
我这几天按照您说的这个思路弄弄看看 有什么疑问 再向您讨教
(3年前)&nbsp&
: 我所有的假设都是用C/C++来实现,当然Java也可以,只是我对Java写桌面应用不熟.
(3年前)&nbsp&
: 您有这方面的实例程序代码吗? 类似的就可以。还有要实现这个应用程序必须用JN1吗?
(3年前)&nbsp&
简单的方法是:先截取每个老鼠的图片,然后对于每个老鼠的图片做颜色取样,比如左上,左下,右上,右下,中间各取一个颜色点.保存.判断时比对颜色点,(可以缩小比对范围,比如从最左上老鼠洞开始到最右下老鼠洞结束)比对,一旦找到第一个符合要求的点,再根据坐标偏移比对余下四个.
接下来你也就知道了.
(3年前)&nbsp&
忘记说了 我这个截图 有一些不全面 这个打地鼠的游戏每次从不同鼠洞中钻出来的老鼠颜色和样式还有区别,这是我很郁闷的一点。难道要保存很多个地鼠的BMP图片进行判断?
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
双击应该使用robot类
如果全屏或左上角对齐应该只需要轮询 几个坐标的 颜色就可以了.
--- 共有 1 条评论 ---
您说的这种 屏幕左上角对齐的话
是不是指只能前台操作这个窗口?一旦这个窗口最小化了 就不能进行图像的判断了?
(3年前)&nbsp&
<span class="a_vote_num" id="a_vote_num_
更多开发者职位上
有什么技术问题吗?
我不明白的其它问题
类似的话题给我的 打地鼠 源码加上注释,因为是新手看起源码来很费劲
[问题点数:60分,结帖人u]
给我的 打地鼠 源码加上注释,因为是新手看起源码来很费劲
[问题点数:60分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。JAVA实验报告18-“打地鼠”游戏程序设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JAVA实验报告18-“打地鼠”游戏程序设计
上传于||文档简介
&&“&#8203;打&#8203;地&#8203;鼠&#8203;”&#8203;游&#8203;戏&#8203;程&#8203;序&#8203;设&#8203;计
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
你可能喜欢打地鼠_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:434,285贴子:
打地鼠收藏
快试试吧,可以对自己使用挽尊卡咯~◆◆
谁有简单的打地鼠代码发出来学习一下
import&&&& java.awt.*;&&&import&&&& javax.swing.*;&&&import&&&& java.awt.event.*;&&&&&& class&&&& KillMouse{&&&public&&&& static&&&& void&&&& main(String[]&&&& args)&&&{&&&new&&&& Mouse();&&&}&&&};&&&class&&&& Mouse&&&& extends&&&& JFrame&&&& implements&&&& MouseListener&&&& ,ActionListener&&&{&&&Timer&&&&&&&int&&&& public IJLabel&&&&& lb1; JLabel&&& img1;JLabel&&&& img[]&&&& =&&&& new&&& JLabel[8];&&&int&&&& m_status[]&&&& =&&&& new&&&& int[8];&&public int px=0,py=55;public&&&& Mouse()&&&{&&&& super( "打地鼠游戏");&&&Container&&& c&&&& =&&&& getContentPane();this.setResizable(false);c.setLayout(null);&&lb1&&&& =&&&& new&&& JLabel( "恭喜您得分:0 ");&&&lb1.setFont(new&&&& Font( "宋体 ",Font.BOLD,16));&&&lb1.setSize(200,30);&&&lb1.setLocation(5,5);c.add(lb1); ImageIcon&&&& icon1&&&& =&&&& new&&&& ImageIcon( "mouse.jpg ");&&&& //注意图片要和class文件在一个目录下 for(int&&&& i=0;i &4;i++)&&&{&&&img[i]&&&& =&&&& new&&&& JLabel(icon1);img[i].setSize(90,90);&&&img[i].setLocation(50+i*100,80);img[i].setVisible(false);&&&img[i].addMouseListener(this);&&&c.add(img[i]);&&&m_status[i]&&&& =&&&& 0;&&&}&&&for(int&&&& i=4;i &8;i++)&&&{&&&img[i]&&&& =&&&& new&&& JLabel(icon1);&&&img[i].setSize(90,90);&&&img[i].setLocation(50+(i-4)*100,200);img[i].setVisible(false);&&&img[i].addMouseListener(this);&&&
c.add(img[i]);&&&m_status[i]&&&& =&&&& 0; &&&} bg=Toolkit.getDefaultToolkit().getImage("src//background.jpg");//getLayeredPane().setLayout(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(500,400);&&&&&setVisible(true);score&&&& =&&&& 0;&&&timer&&&& =&&&& new&&&& Timer(300,this);&&&timer.start();} public void paint(Graphics g){super.paint(g);g.drawImage(bg, px, py, this);}public&&&& void&&&& actionPerformed(ActionEvent&&&& e)&&&{&&&int&&&& i,j,k;&&&int&&&& rlist[]={0,1,2,3,4,5,6,7};&&&if(e.getSource()==timer)&&&{&&&j=(int)(Math.random()*8);&&&&&&&&&img[j].setVisible(true);&&for(k=0;k&3;k++) {&&i=(int)(Math.random()*8);&&&img[i].setVisible(false);&&}&&&for(i=0;i &8;i++)&&&{&&&if(m_status[rlist[i]]==0)&&&{&&&m_status[rlist[i]]=1;&&&img[rlist[i]].setVisible(false);&&&}&&&}&&&}}&&public&&&& void&&&& mouseClicked(MouseEvent&&&& e)&&&{&&&}&&&public&&&& void&&&& mouseReleased(MouseEvent&&&& e)&&&{&&&}&&&public&&&& void&&&& mouseEntered(MouseEvent&&&& e)&&&{&&&}&&&public&&&& void&&&& mouseExited(MouseEvent&&&& e)&&&{&&&}&&&public&&&& void&&&& mousePressed(MouseEvent&&&& e)&&&{&&&for&&&& (int&&&& i=0;i &8&&&& ;i++&&&& )&&&{&&&if(e.getSource()==img[i])&&&{&&&score+=10;&&&lb1.setText( "恭喜您得分: "+score);&&&img[i].setVisible(false);&&&m_status[i]&&&& =&&&& 0;&&&}&&&}&&&}&&&} 地鼠图片网上找一个,放C盘根目录!!记得改名!!!
快试试吧,可以对自己使用挽尊卡咯~◆◆
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 java打地鼠游戏 的文章

 

随机推荐