当前位置:   article > 正文

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

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;
		  
	  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
//从本地文件读取目标图片
	  public BufferedImage getBfImageFromPath(String keyImagePath) {
   
		           BufferedImage bfImage = null;
		           try {
   
		               bfImage = ImageIO.read(new File(keyImagePath));
		           } catch (IOException e) {
   
		               e.printStackTrace();
		           }
		           return bfImage;
		       }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
//     判断屏幕截图上目标图范围内的全部点是否全部和小图的点一一对应
	  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;
		       }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
 //查到图片的中心位置并赋值给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];
		               }
		           }
		       }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

     public static void Zhuntu(){
   
		  String keyImagePath0 = &
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/490027
推荐阅读
相关标签
  

闽ICP备14008679号