首页 文章 精选 留言 我的

精选列表

搜索[LLM辅助],共9898篇文章
优秀的个人博客,低调大师

JAVA实现跳一跳辅助程序之虎啸龙吟

前序: 今天有幸,看到2位博主的文章,在此表示感谢。自己也动手实现了一下。 实现原理 请参考博主 https://www.cnblogs.com/dongkuo/p/8285162.html 另感谢博主http://www.cnblogs.com/litblank/p/8267526.html 提供的基础部分代码,免去了我自己再写一边的麻烦。 由于第一篇是python 实现,楼主是JAVA出生,想通过java实现,刚好在评论中看到了 第二位博主的java实现连接,但是自己用博主的代码,测试发现效果并不理想,获取的位置点不对。。。可能是打开方式不对~~~0.0 遂根据第一位博主的思路,重新实现了一下,亲测3张图,基本都是ok 的,下面就看看代码部分的实现。 代码实现: 1 package code; 2 3 import java.awt.AWTException; 4 import java.awt.Graphics2D; 5 import java.awt.Transparency; 6 import java.awt.image.BufferedImage; 7 import java.io.File; 8 import java.io.IOException; 9 import java.io.InputStreamReader; 10 import java.io.LineNumberReader; 11 import java.util.Map; 12 import java.util.Map.Entry; 13 import java.util.TreeMap; 14 import javax.imageio.ImageIO; 15 16 public class Jump { 17 //存放图片的路径 18 static String file1 = "C:\\Users\\JJJ\\Desktop\\jump3.jpg"; 19 //始 扫描行,针对不同的手机分辨率可能不一样,需要修改,此处建议手工测量下坐上角跳跃步数的数字位置,估算出起始行 楼主的手机是se 像素是 1156*640 20 static int start_y = 200; 21 static boolean istest = false; 22 static int background_x = 10; //定义默认的背景色,一定是不会出现其他物体的位置 23 static int background_y = 580; 24 25 public static void main(String[] args) throws AWTException, InterruptedException, IOException { 26 istest = true; 27 28 29 System.out.println("开始:计算" + file1); 30 if (istest) { 31 cmd_java("cmd /c start adb.bat ", "C:\\Users\\JJJ\\Downloads\\cofface_adb\\cofface_adb_windows_v5.1");//批处理文件 32 } 33 BufferedImage bi = (BufferedImage) ImageIO.read(new File(file1)); 34 Map<Integer, Integer> treemap = new TreeMap<Integer, Integer>(); 35 // 获取图像的宽度和高度 36 int width = bi.getWidth(); 37 int height = bi.getHeight(); 38 //小人中心点坐标 39 int poix = 0; 40 int poiy = 0; 41 //目标物体的最顶点X轴 和左边或右边的Y轴 42 int mubiaopoix1 = 0; 43 int mubiaopoiy2 = 0; 44 //目标中心点坐标 45 int mubiaopoix = 0; 46 int mubiaopoiy = 0; 47 BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 48 Graphics2D g2d = img.createGraphics(); 49 // 设置画布为透明 50 img = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT); 51 // 扫描图片,获取小人的底部中心坐标 52 for (int i = start_y; i < height; i++) { 53 for (int j = 0; j < width; j++) {// 行扫描 54 int dip = bi.getRGB(j, i); 55 int p = dip; 56 int red = 0xff & (p >> 16); 57 int green = 0xff & (p >> 8); 58 int blue = 0xff & p; 59 // 目标人图形 60 if (i < (height / 1.5)) 61 { 62 if ((red > 53 && red < 59) && (green > 57 && green < 61) && (blue > 59 && blue < 103)) 63 { // 获取小人坐标,从中取除Y值最大的一个 64 treemap.put(i, j); 65 } 66 } 67 } 68 } 69 //获取最后的小人底部坐标 ,此处使用treemap 直接排好序,循环获取Y轴值最大的一个 70 for (Entry<Integer, Integer> entry : treemap.entrySet()) 71 { 72 poiy = entry.getKey(); 73 poix = entry.getValue(); 74 } 75 //开始扫描目标物体的最上和最左坐标 ,扫描的Y最大值为当前小人的Y值 76 treemap.clear(); //清除前面的记录,准备存放目标物体的坐标 77 RGB rgb = null; 78 boolean frist = true; 79 RGB rgb_0 = pixToRgb(bi, background_x, background_y); //默认的背景色 80 for (int y = start_y; y < poiy; y++) { 81 int x = 0; 82 if (poix < width /2) //此处特别说明下,如果小人的坐标在整个屏幕的左边,则目标物体一定在右边,遂起始x轴从小人之后开始加20开始循环,反之则不用 83 { 84 x = poix + 20; 85 } 86 else 87 { 88 x = 20; 89 } 90 for (; x < width - 20; x++) {// 行扫描 91 int dip = bi.getRGB(x, y); 92 int p = dip; 93 RGB rgb_1 = pixToRgb(bi, x, y); 94 if(frist && rgbCz(rgb_0,rgb_1,10)) //如果不相同则说明找到了第一个点 95 { 96 mubiaopoix1 = x; 97 rgb = rgb_1; 98 frist = false; 99 continue; 100 } 101 if (!frist && rgbBcz(rgb,rgb_1,10)) 102 { 103 treemap.put(x, y); //存放所有当前台面的像素点坐标,然后从中选出X值最小的一个, 104 } 105 } 106 } 107 //获取目标物体的坐标,如果是在右半边,则获取最后一个值的Y轴,如果是在左边,则获取第一个 108 if (poix > width / 2) 109 { 110 for (Entry<Integer, Integer> entry : treemap.entrySet()) 111 { 112 mubiaopoiy2 = entry.getValue(); 113 break; 114 } 115 } 116 else 117 { 118 for (Entry<Integer, Integer> entry : treemap.entrySet()) 119 { 120 mubiaopoiy2 = entry.getValue(); 121 } 122 } 123 //通过获取的2个点坐标计算出中心点位置 124 mubiaopoix = mubiaopoix1; 125 mubiaopoiy = mubiaopoiy2; 126 //计算 小人与目标人物的距离 127 int total = (mubiaopoix - poix) * (mubiaopoix - poix) + (mubiaopoiy - poiy) * (mubiaopoiy - poiy); 128 double length = (double) Math.sqrt(total); 129 double time = length * 1.35; //时间系数 130 System.out.println("小人的坐标为:" + poix + "," + poiy); 131 System.out.println("目标物体的坐标为:" + mubiaopoix + "," + mubiaopoiy); 132 System.out.println("需要按压屏幕的时间为:" + time + "毫秒"); 133 } 134 153 154 static InputStreamReader ir = null; 155 static LineNumberReader input = null; 156 157 public static void cmd_java(String cmd) throws IOException { 158 Process process = Runtime.getRuntime().exec(cmd, null, new File("C:\\Users\\chenyd\\adb")); 159 ir = new InputStreamReader(process.getInputStream()); 160 input = new LineNumberReader(ir); 161 while (input.readLine() != null) { 162 } 163 input.close(); 164 ir.close(); 165 } 166 167 public static void cmd_java(String cmd, String url) throws IOException { 168 Process process = Runtime.getRuntime().exec(cmd, null, new File(url)); 169 ir = new InputStreamReader(process.getInputStream()); 170 input = new LineNumberReader(ir); 171 while (input.readLine() != null) { 172 System.out.println(11); 173 } 174 input.close(); 175 ir.close(); 176 } 177 178 /** 179 * 颜色的差值不在范围内 180 */ 181 public static boolean rgbCz(RGB rgb_1, RGB rgb_2, int fd_rgb) { 182 if (Math.abs(rgb_1.getRed() - rgb_2.getRed()) > fd_rgb && Math.abs(rgb_1.getGreen() - rgb_2.getGreen()) > fd_rgb 183 && Math.abs(rgb_1.getBlue() - rgb_2.getBlue()) > fd_rgb) { 184 return true; 185 } 186 return false; 187 } 188 189 /** 190 * 颜色的差值在范围内 191 */ 192 public static boolean rgbBcz(RGB rgb_1, RGB rgb_2, int fd_rgb) { 193 if (Math.abs(rgb_1.getRed() - rgb_2.getRed()) < fd_rgb && Math.abs(rgb_1.getGreen() - rgb_2.getGreen()) < fd_rgb 194 && Math.abs(rgb_1.getBlue() - rgb_2.getBlue()) < fd_rgb) { 195 return true; 196 } 197 return false; 198 } 199 200 public static RGB pixToRgb(BufferedImage bi, int j, int i) { 201 try { 202 int dip = bi.getRGB(j, i); 203 int p = dip; 204 int red = 0xff & (p >> 16); 205 int green = 0xff & (p >> 8); 206 int blue = 0xff & p; 207 return new RGB(j, i, red, green, blue); 208 } catch (Exception e) { 209 210 } 211 return null; 212 } 213 214 } 215 216 class RGB { 217 218 public RGB() { 219 } 220 221 public RGB(int x, int y, int red, int green, int blue) { 222 super(); 223 X = x; 224 Y = y; 225 this.red = red; 226 this.green = green; 227 this.blue = blue; 228 } 229 230 public int X; 231 public int Y; 232 public int red; 233 public int green; 234 public int blue; 235 236 public int getRed() { 237 return red; 238 } 239 240 public void setRed(int red) { 241 this.red = red; 242 } 243 244 public int getGreen() { 245 return green; 246 } 247 248 public void setGreen(int green) { 249 this.green = green; 250 } 251 252 public int getBlue() { 253 return blue; 254 } 255 256 public void setBlue(int blue) { 257 this.blue = blue; 258 } 259 260 public int getX() { 261 return X; 262 } 263 264 public void setX(int x) { 265 X = x; 266 } 267 268 public int getY() { 269 return Y; 270 } 271 272 public void setY(int y) { 273 Y = y; 274 } 275 276 } 由于楼主目前没有安卓设备,还无法带上adb实验,目前只是通过手动截取图片,和测量距离计算了3张,总体比较下来,还算是正确的。 第一张图片 计算结果如图: 第二张图片 计算结果如图: 第三张图片 计算结果如图: 后续再搞个安卓设备试试~ give me the ball!

优秀的个人博客,低调大师

信息化医疗发展还需智能医护去辅助完成

随着信息化时代的来临,越来多的智能产品出现在我们眼前,尤其是在医疗仪器这一方面,也从传统的固定式转变成便携式,使检测越来越便捷。市场上的便携式的可穿戴智能产品,到人工智能化机器人,无一不是在体现人工智能和信息化的完美结合。其中智能医疗则是发展的侧重点,医疗环境的转变,更好的改善就医将是社会和人们最希望的,相信未来的医疗会变得非常的便捷,就像我们逛商场一样的轻松,无负担! 那么先来了解智慧医疗是由智慧医院系统、区域卫生系统、以及家庭健康系统这三部分组成。其中智能医护作为最重要组成部分,它不只是简单的医疗设备,更好的理解为是一种将先进计算机技术、通信及信息处理技术等应用于医疗过程的新型智能医护管理系统。 智能医护的应用主要有智能医护对讲,包括患者能时时和医护人员沟通、还有病房探视的语音对讲、手术室对讲广播、门诊排队、信息发布与宣教、一键式报警监控对讲、公共广播等等,这些都是智能医护便携式医疗仪器设备,更好的去及时联系患者与医护之间的信息沟通。 智能医护设备的建设,在一个医院是非常重要的,也是医院在布局整体信息化建设方案时的重要环节。因为可以实现医疗服务的智能化和优质化,这样可以使医护人员与病人间的互动交流变得更加方便,也减轻医护人员的工作强度及提高其工作效率,从而到达了提升病患的满意度与就医环境,享受便捷有序的就医环境。 结合一些医院的综合需求,在现在的医疗体系下利用先进的物联网技术与信息化达成智慧医疗体系,为患者更好的就医环境,医院的医疗资源更好的利用,共同打造一个利用先进的互联网技术、信息化、智能化的现代医疗体系,真正的实现患者与医护人员、医院之间的良好互动。从而建立一个良好的医患服务氛围,使得患者在看病、就医期间更加的简易化! 本文由朗锐慧康编辑整理(http://www.lrioh.com)(http://www.lrist.com),转载请注明出处。

优秀的个人博客,低调大师

辅助企业IT进化的路上 数人云的不变与多变

如果讲开源的发展史可能要说上几天,但在基础设施层还是有一些分水岭技术。在使用开源技术上,企业最开始集中在Puppet、Ansible等配置管理工具,实现批处理功能,云计算出现后,OpenStack、KVM等技术得以发展,在数据量不断攀升后,Hadoop、Spark这些分布式计算框架也成为企业的实施目标。 尤其是容器技术出现后,企业不仅仅使用OpenStack来管理虚拟机上的应用,还在管理容器中开始考虑Mesos和Kubernetes来管理应用,他们的出现是对之前IT部门工作方式的变革,进一步简化了工作流程。 最近阿里云与Docker的合作给Docker在中国市场的发展更多的信心,数人云也会秉持以应用为中心解决IT变革,利用基于Mesos的数人云操作系统帮助企业降低IT基础设施门槛,在这个过程中正积极使用Docker相关技术让自身更加多变。 走好开源Mesos这条路 我们再来具体聊一聊Docker中的几个编排工具Mesos、Kubernetes、Swarm。它们分别从2013-2015年之间被提出,数人云CTO肖德时表示,这些技术想要实现的目标基本相似,都是解决数据中心操作系统调度这件事。 数人云CTO肖德时 数人云选择Mesos其实也没有特殊原因,在2014年创业之初Mesos是当时在传统企业应用中相对成熟的技术,像Apple、Twitter、去哪网、爱奇艺、小米等都在使用。 2016年数人云完成了一次产品的迭代,数人云操作系统2.0实现了应用管理、监控告警&日志查询、应用编排&应用目录、持续集成&镜像构建四大功能。近期3.0产品也将要发布,除了功能上改进外,最重要是将一些开源组建进行重构更加可控。 “容器只是解决企业运行时的状态,但是在实现的过程中企业需要做很多改造。”肖德时说,在和很多客户交流时它们的改造会深入到逻辑,也就是微服务层面,之后才是我们的产品要怎么在改造后的环境中应用。 数人云会一直沿着Mesos技术栈进行研发,在基础设施之后就是大数据,如何快速的将大数据容器化部署到操作系统中支撑整个业务。企业IT基础设施分为开发测试环境和生产环境两部分,肖德时认为,在做完持续集成和持续交付(CI/CD)应用生命周期相关的业务后,数人云将开始大数据业务的延伸。 Crane快速搭建DevOps环境 Docker 1.12 版最大的性能之一是Swarm模式,在Docker 1.12(RC)版发布之前几周,Docker发布了SwarmKit作为编排分布式系统的开源项目。所以也就有了Swarm和SwarmKit两个版本,旧版Swarm是参考Mesos、Kubernetes做的一个开发框架,另外基于管理集群的方便性,原有Swarm集群和Docker本身是两个组件,基于融合的想法又出现了SwarmKit。 数人云的核心技术是Docker,本着自我学习和让开发者更快速体验Docker新版本功能的态度,数人云也有了用Docker最新技术做点什么的想法。 所以数人云投入工程师用了一个月时间,在今年9月6日发布了基于最新SwarmKit的容器管理面板Crane,这也是国内首个基于SwarmKit套件的容器管理工具。Crane可以帮助开发者快速搭建DevOps环境,体验Docker的最新功能,一条命令在几分钟内即可完成安装。 Crane做的是怎么把不同设备上的容器通过一个面板管理好,数人云在设计时也参考了Docker管理面板。当然这并不是一个简单Copy的过程,而是用开源SwarmKit实现了同样的功能并回馈给社区。 Crane可以说是低调上线,这和商业化的数人云操作系统形成了鲜明的对比。肖德时说,Crane目前只是一个工具并非产品,是完全免费的,未来也会保持开源的状态,而且Crane的使用者和数人云操作系统也有所区别,主要针对开发者而非企业用户,当然两者也会有一些互动,毕竟底层技术是相通的。 该项目遵守Apache 2 License,可在https://github.com/Dataman-Cloud/crane浏览、下载代码。目前,其在GitHub上的Star数超过500,Star的数量也反应了开源项目在GitHub上的热度。最近Crane还做了两次小版本更新,支持像Mac系统等一些特性,在社区也得到了很好的反馈。 数人云的变化 虽然Crane并非商业化产品,但可以说这是数人云的一次变化。在客户层面数人云还会继续保持轻量级PaaS的方向,解决多租户、操作系统、资源分配这些事。 数人云现在既有企业版产品数人云操作系统,还有多个开源项目。除了容器管理面板Crane,数人云还开源了Mesos调度器Swan,用于Mesos环境应用管理。Marathon和Aurora是大家所熟知的Mesos框架,通过开源Swan,数人云将最新研发成果与社区共享,为开发者提供了一个新的选择。 在数人云操作系统的应用上未来也会越来越多地伴随微服务的改造,上交所就是其中一个典型案例,所以数人云未来更重要的是探讨如何配合改造后的企业深度应用。运营商、金融是数人云目前主攻的行业,未来还会拓展电商、直播这些行业,这是从传统企业慢慢转向互联网企业提供服务的变化。 最近数人云还参考Google SRE理念与复旦大学达成合作正式开课。SRE目前已成为一个涵盖运维理念、思路、组织架构、和具体实践的完整体系,而且SRE也是DevOps思想在运维领域的具体实践。这不仅可以传递SRE的理念,还可以用过数人云操作系统帮助国内客户落地DevOps最佳实践。 原文发布时间为:2017-7-14 本文作者:王聪彬 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册