用java的robot类以及Gui 制作一个游戏(阴阳师)脚本

**

用java的robot类以及Gui 制作一个游戏(阴阳师)脚本

**

  由于阴阳师这个游戏肝度太大,就决定写一个脚本来模拟玩家的重复性操作.所以我就决定用java中的robot类中的一些方法来模拟鼠标点击,移动等功能,具体方法见下图.
 因为一个好看的界面能让人看着更加的舒服,所以就决定用java中的GUI来设计一个操作界面,功能更能很好的展现方便使用.

具体思路

 脚本的一个难题就是如何防止被封号,我的看法是使脚本的操作更加符合人的操作:禁止点击鼠标速度过快,过多,禁止点击同一位置,禁止每一次点击鼠标按下释放时间一致;
  而另一个难题就是如何让鼠标点击该点的位置,判断什么时候结束是么时候点击开始,这里不能用记录每一个操作的坐标,这样不仅不方便还可能出错.所以我用了从一个大图片中找到小图片并且返回中心坐标的这个思路(借鉴大佬).
 废话不多说,看图看代码

功能

魂土,日轮,逢魔,痴卷,地域鬼王,日常任务功能正在开发

脚本运行图

 目前功能就这么多,此外还增加了脚本置顶功能,可以持续关注运行状态
目前就添加了这些功能,此外我还增加了脚本置顶功能

代码

查图功能:

//全屏截图
	  public BufferedImage getFullScreenShot() {
   
		  BufferedImage bfImage = null;
		        try {
   
		            Robot robot = new Robot();
                    bfImage = robot.createScreenCapture(new Rectangle(x, y, width, height));
	    	           } catch (AWTException e) {
   
	               e.printStackTrace();
		           }
		           return bfImage;
		  
	  }
//从本地文件读取目标图片
	  public BufferedImage getBfImageFromPath(String keyImagePath) {
   
		           BufferedImage bfImage = null;
		           try {
   
		               bfImage = ImageIO.read(new File(keyImagePath));
		           } catch (IOException e) {
   
		               e.printStackTrace();
		           }
		           return bfImage;
		       }
//     判断屏幕截图上目标图范围内的全部点是否全部和小图的点一一对应
	  public boolean isMatchAll(int y, int x) {
   
		           int bigpY = 0;
		           int bigpX = 0;
		           int judeg= 0;
		           for(int smallpY=0; smallerY<keyImgHeight; smallpY++) {
   
		               bigpY = y+smallpY;
		               for(int smallpX=0; smallpX<keyImgWidth; smallpX++) {
   
		                   bigpX = x+smallerX;
		                   if(biggerY>=scrShotImgHeight || bigpX>=scrShotImgWidth) {
   
		                       return false;
		                   }
		                   xor = keyImageRGBData[smallpY][smallpX]^screenShotImageRGBData[bigpY][bigpX];
		                   if(judeg!=0) {
   
		                       return false;
		                   }
		              }
		               bigpX = x;
		           }
		           return true;
		       }
 //查到图片的中心位置并赋值给a,b
	  public void printFindData() {
   
		           for(int y=0; y<keyImgHeight/2; y++) {
   
		               for(int x=0; x<keyImgWidth/2; x++) {
   
		                  if(x==keyImgWidth/2-1&&y==keyImgHeight/2-1)
		                   a=this.findImgData[y][x][0];b=this.findImgData[y][x][1];
		               }
		           }
		       }

魂土功能部分代码:
就是用循环嵌套一直重复
其他功能也是类似

     public static void Zhuntu(){
   
		  String keyImagePath0 = "image\\dingwei.png";
	      test demo0 
  • 21
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 51
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值