COC部落冲突自动找鱼 python脚本

        众所周知,最近COC被腾讯收购了,又整了一波活,花里胡哨的兵种都不认识了,这件事我不做评价吧。

        图个新鲜感,高中几个哥们突然又玩起了部落冲突,打🐟一时爽,一直打🐟一直爽,但是找🐟经常要耗费好多时间,那就用脚本啊!自己找🐟是不可能的,但是用脚本挂容易封号;怎么说,只要思想不滑坡,总会有解决方法的是吧。

        扒拉了一下午资料,终于找到了志同道合的哥们:

         这想法简直和我一拍即合!原文链接放在下面,大家可以先看看这哥们的思路:

Python部落冲突自动搜索对手 - 简书 (jianshu.com)

        仔细看了一下,实现原理也不难,所以就自己捣鼓了一下,顺便帮哥们改进了一下,比如说按键的位置换成了随机点,以及操作的间隙也改成随机数,总之最重要的原则:一定不能封号

        个人喜欢用JupyterNotebook多一点,所以写成了ipynb文件。

 首先是环境的要求:

(为了照顾小白,我就直接上傻瓜式教程了,最后有代码的简单说明)

  • 首先是python环境的配置,推荐直接用Ancaonda配置环境,Python版本是3.6,版本应该问题不大,安装Anaconda可以参考: 

anaconda安装-超详细版_plasma-deeplearning的博客-CSDN博客_anaconda安装教程https://blog.csdn.net/in546/article/details/117400839

首先按照上面的链接安装好Anaconda,然后直接在开始菜单栏找到Anaconda3(64-bit)->Anaconda Promopt

 然后复制粘贴下面三句话,搞定。

pip install pillow -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

pip install opencv-contrib-python -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

pip install pywin32 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

  • 接着是adb和Tesseract的配的配置,这里对设备的操作还是基于adb,所以IOS玩家可以走了;这里需要在手机上进行一定的设置,即打开设备的USB调试然后对于资源的识别我没用百度AI的文字识别,而是直接使用了开源的OCR识别引擎Tesseract,这样就可以实现本地直接识别,不用上传到百度AI那么麻烦,不过识别起来呆呆的(可以把 2 识别成 e 也是我没想到的),哎~想起cv那些图像识别的大作业,真是有苦说不出。

手机设置 

       先把我打包好的资源包下载下来,大概100MB

 https://cowtransfer.com/s/345f72f5bd2645 点击链接查看 [ COC.zip ] 

        下好后解压缩到你喜欢的位置,里面应该有下面四个东西:

 简单说明一下,第一个文件夹是adb调试工具;第二个文件夹是用来图像识别的;第三个文件夹是用来暂时存放截图的,工作的时候可以看看这个文件夹里内容的变化;最后一个是源代码。      

  • 最后配置一下环境变量,下面给出win10的操作,这步很简单,win11百度一下应该就会。

首先去到电脑设置界面搜索“环境变量”---编辑系统环境变量

然后进入环境变量 

 在系统变量找到Path,选中点编辑

 新建以下三个环境变量,第一行和第三行要换成自己电脑的文件夹路径,

具体路径就是刚刚那两个文件夹的路径

D:\Desktop\COC\platform-tools

%Android%

D:\Desktop\coc\tesseract

 接下来就无脑按几个确定就好了,这样子环境就配置好了。

然后修改一些参数:

有一定代码基础的伙伴可以看看最后面附加的思路,自己修改,小白直接改下面几个参数就好:


首先要打开源代码,找到Jupyter Notebok

 打开后把coc.ipynb文件Upload进工作区

在工作区里找到coc.ipynb文件,单击打开


  • 首先是一些超参数的设置,包括文件路径,这里的path要换成自己的COC文件夹位置;然后是等待时间的设置,大概是搜到对手的时间,要不然容易截图到云,可以自己定;然后是鱼的设置,这里我就简单的金币+圣水>150K,大家可以按照自己的要求来改,可能要用到一些基础的python语法,都很基础,是鱼就返回True。

  • 然后是修改ScreenCapturer类里的按钮位置,尝试过几台设备好像坐标多多少少都有点偏差,不知道COC程序员是怎么拉伸的,咱就自己再量一下算了,具体就是改random.uniform(,)里面的数字,分别是左界限和右界限:

      


  具体提取像素坐标的方法有很多,这里用PS,其他方法可以百度一下,PS的具体做法就是先把图片reshape成100×100像素(1000×1000也行,按比例换算就好了,不要等比缩放),然后读取像素,具体就是下面两张图:

首先打开信息版

然后用选择工具滑到你想要像素坐标的位置,右边就有像素坐标

代码里面的四个按钮坐标都要换,要不然会点不到按钮


  • 然后还要改一下资源的位置,在 PicScanner类里,找不到就Ctrl+F,搜索im.crop;这里需要把资源的位置坐标量出来 。

最后展示一下工作效果:

上面的改完就差不多好啦,然后就开心的找🐟吧~(记得在手机上打开COC并且回到大本营)

运行所有Cell

系统会在指定文件夹里生成两张图片和一个txt文件,然后找到🐟了就会响一声同时弹窗提醒:

但....

 激动的心!颤动的手!

啊这...你管这叫🐟

???听我说,谢谢你。

算了,毕竟是AI,就这样凑合着用吧~

基于权限问题,该方法还是只适用于安卓平台

也不能说100%不会被抓,但感觉被抓的可能性不大,毕竟电脑啥也没干,就一个劲地按下一个

最后祝每一个部落人都能天天打大鱼,肥到滴油的那种~ 


附上代码的简单说明:

        大概解释一下,首先是超参数的设置,这里要把路径改成本地的绝对路径,不能用相对路径(应该不能吧,可能有解决办法,我不知道,我只是一个代码能力不过七行的小白)然后就是搜索时长和鱼的判定,这个可以自己设定:

# 复制TRANS_PIC_PATH的路径来粘贴,只能用绝对路径,因为要调用cmd
path =  r'D:\Desktop\COC'  # 改成自己的pathpic_path = path + r'\TRANS_PIC_PATH'
adb_path =path + r'\platform-tools\adb.exe'
tesseract_path = path + r'\tesseract\tesseract.exe'
# 搜索对手预估时长[t_min,t_max]随机生成一个数字。单位毫秒
t_min = 5000
t_max = 6000#自己设置是🐟的条件,我就单纯金币+圣水>150K算🐟了
def is_fish(gold,water,oil):if gold+water>1500000:return Trueelse:return False

        然后是参考上面那篇博客的思路,创建了三个类。
        首先是ScreenCapturer类,主要作用是截屏传到电脑同时定义一些在手机上的操作。

from time import sleep
import random
import osclass ScreenCapturer: #获取截图,同时定义一些在手机上的操作phoneResolution = []    # 手机分辨率def __init__(self,andriod="",trans=""):if andriod!="" and trans != "":# 判断是否为默认参数self.ANDRIOD_PIC_PATH = andriodself.TRANS_PIC_PATH = transdef getPhoneScreen(self):# 获取屏幕截图os.system(adb_path+' shell screencap -p /sdcard/screenshot.png')def transPhoneScreen(self):# 将截图传输至电脑command = adb_path+' pull /sdcard/screenshot.png '+pic_path+'\screenshot.png'os.system(command)# 模拟点击某一位置def pointOnPhone(self,x=0.0,y=0.0):strX = str(x)strY = str(y)command = adb_path+" shell input tap " + strX + " " + strYos.system(command)pass# 获取屏幕分辨率def getPhoneResolution(self):# 获取命令行的打印值r = os.popen(adb_path+" shell dumpsys window displays")text = str(r.read())# 查找init=字符串,其后为手机分辨率情况beginC = text.find("init=")# 获取其后的10个字符line = text[beginC+5:beginC+15]resolution = line.split("x")self.phoneResolution.append(float(resolution[0]))self.phoneResolution.append(float(resolution[1]))r.close()pass# 点击进攻按钮def pointAttackBtn(self):# 保留两位小数x = random.uniform(0.021,0.098) * self.phoneResolution[1]y = random.uniform(0.838,0.964) * self.phoneResolution[0]self.pointOnPhone(x,y)print("点击-进攻-按钮")# 点击搜索对手按钮def pointSearchAttacker(self):# 保留两位小数x = random.uniform(0.652,0.83) * self.phoneResolution[1]y = random.uniform(0.543,0.69) * self.phoneResolution[0]self.pointOnPhone(x, y)print("点击-搜索对手-按钮")# 点击搜索下一个按钮def pointNextAttacker(self):# 保留两位小数x = random.uniform(0.853,0.975) * self.phoneResolution[1]y = random.uniform(0.714,0.8) * self.phoneResolution[0]self.pointOnPhone(x, y)print("点击-搜索下一个-按钮")# 点击结束战斗按钮def pointEndAttack(self):# 保留两位小数x = random.uniform(0.02,0.1) * self.phoneResolution[1]y = random.uniform(0.769,0.8) * self.phoneResolution[0]self.pointOnPhone(x, y)print("点击-结束战斗-按钮")

         这里的x和y都改成了范围,避免太呆被抓。

         然后是PicScanner类,作用就是识别截图到的图片,对图像做一些变化,比如说灰度处理和二值化处理,提高识别精度,然后把它转成文字,传进一个数组里。

from PIL import Image
from io import open
import cv2
import numpy as np
import reclass PicScanner: #从截图识别资源def __init__(self,path=""):if path!="":self.filePath = pathdef get_file_content(self,filePath):with open(filePath, mode='rb') as f:return f.read()def cutPicToSource(self):  # 将截图裁剪至仅剩资源的部分,方便于图片识别im = Image.open(pic_path+'\screenshot.png', 'r')if im:width, height = im.sizeimg = im.crop((0.045 * width, 0.105 * height, 0.135 * width, 0.225 * height)) #裁剪img = cv2.cvtColor(np.array(img), cv2.COLOR_RGBA2BGRA) #PIL->npimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY); #灰度处理ret,img=cv2.threshold(img, 230, 255, cv2.THRESH_BINARY); #二值化处理cv2.imwrite(pic_path+'\sourse.png',img)def readPicNum(self): #图像识别,即图像转文字,所用包为tesseract,也可以换成其他的包command = tesseract_path+' '+pic_path+'\sourse.png '+pic_path+'\sourse -l eng'os.system(command)f=open(pic_path+'\sourse.txt', encoding='gbk')txt=[]i = 0;for line in f:txt.append(line.strip())string = ''.join(ch for ch in txt[i] if ch.isalnum())string = string.replace(" ",'') #删掉多余的空格#AI的蜜汁识别string = string.replace("S",'5')string = string.replace("O",'0')string = string.replace("I",'1')string = string.replace("l",'1')string = string.replace("e",'2')#可能识别出各种奇奇怪怪的单词,识别不出直接不要,找选下一个🐟try:txt[i] = int(string)except:return []i = i+1return txt

        最后就是autoFind类,就是集成了上面两个类,然后用while循环一直找🐟,找到的话提醒你

import win32con, win32api
import winsoundclass autoFind:# 对象实例scanner = PicScanner()capture = ScreenCapturer()# 设置的搜索资源值source = {}def setSourceValue(self,gold,water,oil):self.source['gold'] = goldself.source['water'] = waterself.source['oil'] = oildef beginFind(self):self.capture.getPhoneResolution() # 获取屏幕分辨率self.capture.pointAttackBtn() # 点击进攻按钮sleep(1)print('\n----------------------------------------------------')self.capture.pointSearchAttacker() # 点击搜索对手按钮sleep(random.randint(t_min,t_max)/1000)while(1): #无限循环,直到找到🐟# 获取屏幕截图并判断资源print("...........识别中..........")self.capture.getPhoneScreen() #截图self.capture.transPhoneScreen() #传图片到电脑self.scanner.cutPicToSource() #截取资源words = self.scanner.readPicNum() #读取资源if len(words) == 3 and words[0]<2000000 and words[1]<2000000 and words[2]<20000:#出错了返回空数组,有时候会多识别一位数字,超过200K的直接不要,下一个gold = words[0]water = words[1]oil = words[2]if is_fish(gold,water,oil): #找到🐟退出循环print('找到🐟了,工作结束。')self.findFish(str(gold), str(water), str(oil))break#打印一下找到的🐟资源,不肥不要print("资源:")print('金币:',gold,'  圣水:',water,'  黑油:',oil)print('\n----------------------------------------------------')self.capture.pointNextAttacker() #下一个sleep(random.randint(t_min,t_max)/1000) #等2-3s,防止截图到搜索对手界面的白云else:print('识别出错')print('\n----------------------------------------------------')self.capture.pointNextAttacker() #下一个sleep(random.randint(t_min,t_max)/1000) #等2-3s,防止截图到搜索对手界面的白云# 找到🐟后进行提醒def findFish(self,gold,water,oil):winsound.Beep(440, 300) #声音提醒#消息栏提醒win32api.MessageBox(0,'金币:'+gold+", 圣水:"+water+",  黑油:"+oil, '!!!发现大鱼!!!', win32con.MB_OK)def restart(self):self.capture.pointEndAttack() #结束战斗

        接下来就可以开心地找🐟啦~

find = autoFind() #初始化对象try:find.beginFind() #找🐟
except:print("识别出错,重新搜索") #可能遇到奇奇怪怪的BUG,原因懒得找了,直接重开find.restart()sleep(2)find.beginFind()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25155.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码故事:汉德的救赎

我叫汉德(Handle),是一段程序代码,出生在日食之城埃地特(Editor)。 我诞生于伟大而荣耀的瑟维斯家族(Service),我们家族的格言是:“瑟维斯永不倒下。(Services never crash down.)”。 信仰 我们家族的信仰,哦,不对,应该是所有代码家族的信仰都是普瑞格兰姆神…

coc部落冲突脚本辅助工具,小曦coc,PHP随机数生成代码

什么是脚本&#xff1f; &#xff08;1&#xff09;脚本就是剧本 &#xff08;2&#xff09;脚本是普通的文本文件&#xff0c;是批处理文件 &#xff08;3&#xff09;脚本导演了一个序列事件的发生 &#xff08;4&#xff09;脚本让一个例行任务效率大幅提升 游戏脚本基本只…

英文文献调研方法综述

文章目录 1. 进行英文文献调研的理由2. 文献调研的纲要2.1. 文献调研的目的2.2. 文献调研的原则2.3. 文献调研的步骤 3. 常用的搜索平台及数据库3.1. 文献搜索平台3.1.1. Text Analyzer3.1.2. Web of Science3.1.3. Google Scholar3.1.4. CORE & DOAJ3.1.5. ProQuest 3.2. …

不用校园网如何下载论文文献|DOI号|文献免费下载

不用校园网如何下载论文文献&#xff5c;DOI号&#xff5c;文献免费下载 研究生人员在学校里避免不了要下载文献&#xff0c;有些文章&#xff0c;如果学校没有购买数据库&#xff0c;还要付费下载&#xff0c;挺鸡肋的&#xff0c;这里&#xff0c;我整理了一些自己收藏的网站…

jquery 中加入html代码,jquery实现动态添加html代码

先看下思导图,整体了解下,然后我们再来学习。 现在我们来看一下几段代码,然后根据这几段代码我们来学习一下如何正确的学习动态添加html。 一.html()方法 html函数的作用原理首先是移除目标元素内部的html代码,然后将新代码添加到目标元素。 第一段代码:function CommentB…

巨推荐!文献下载利器!6个网站可随时随地免费下载中文文献!

一、文献小镇 网址:http://www.sci-hub.ac.cn/ 文献小镇号称是中国版的SCI-HUB,界面同SCI-HUB一样简洁明了,可以采用URL,PMID/DOI等方式搜索下载文献。 下载英文文献,进入文献小镇首页,只需要在搜索框输入文章doi即可直接进入sci-hub的下载页面。当然,下方的学术网站也提…

chatgpt赋能python:Python如何下载电影?

Python如何下载电影&#xff1f; Python作为一种高级编程语言&#xff0c;通过其丰富的库和模块&#xff0c;可以轻松地完成各种任务&#xff0c;包括下载电影。以下是你需要知道的关键步骤。 了解电影下载网站 首先&#xff0c;你需要知道哪些网站提供电影下载。常见的电影…

chatgpt赋能Python-python_figsize默认大小

Python figsize默认大小&#xff1a;您需要知道的一切 Python作为一种流行的编程语言&#xff0c;被许多程序员用于数据科学、机器学习、Web开发等领域。在绘制图表时&#xff0c;matplotlib是Python最流行的绘图库之一。在使用matplotlib绘图时&#xff0c;默认情况下&#x…

chatgpt赋能python:Python画图坐标轴教程

Python画图坐标轴教程 Python是一种非常受欢迎的编程语言&#xff0c;可用于数据分析、机器学习、Web开发等领域。它也是一个强大的绘图工具。Python可以使用许多绘图库&#xff0c;如Matplotlib、Seaborn、Plotly等&#xff0c;来可视化数据和生成图形。 在这篇文章中&#x…

7 11 藏尾诗c语言,为你写诗:11种杂体诗,汉语太神奇

原标题&#xff1a;为你写诗&#xff1a;11种杂体诗&#xff0c;汉语太神奇 胸藏文墨怀如谷&#xff0c;腹有诗书气自华 杂体诗通指古典诗歌格律体以外的各种各样的诗体。 这些诗多把字形、句法、声律和押韵加以特殊变化&#xff0c;成为独出心裁的奇异之作&#xff0c;一般带有…

这20首诗词献给天下程序员们

转载自&#xff1a;程序员最幽默&#xff08;ID&#xff1a;humor1024&#xff09; 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 精彩回顾 ♡ 程序员究竟能干多少年&#xff1f; ♡ 互联网公司各岗位真实工作内容起底 ♡ 一次尴尬的采访和程序员的传奇脑洞&a…

Python做一个藏头诗生成器

前几天给大家介绍了有意思的藏头诗&#xff0c;今天我们就用Python来自己根据输入语句实现自动生成藏头藏尾诗吧。 整个诗句生成的逻辑是这样的&#xff0c;先根据输入语句爬取符合要求的诗句&#xff08;来自百度汉语&#xff09;&#xff0c;再根据更多样化的需求定制“新诗”…

爬取B站多P视频

import requests from parsel import Selector import json, os, timeclass GetBv():def __init__(self, bvid, page1):bvid:视频号 eg:BV1hE411N7q2&#xff0c;strpage: P几的视频&#xff0c;默认为1 intself.bvid bvidself.page pageself.pg_dic, self.file_name, self.a…

【python+pyqt5】B站直播弹幕姬

文章目录 前言1.日志对象2.获取弹幕3.qt窗口窗口间传递信号主窗口设置窗口弹幕展示窗口托盘 4.主函数5.最终成果及使用方法6.开源地址 前言 这个软件是基于我半年多前写的一个小小小软件&#xff08;https://www.bilibili.com/video/BV1zN411Q7u4&#xff09;的一个大更新&…

B站有哪些程序员大牛up主?

B站有哪些程序员大牛up主 接下来分享一波有利于大家 面试 和 提高自己技术 的B站程序员up主 &#xff1a;B站&#xff0c;想必大家都再熟悉不过 &#xff1a;B站是啥&#xff1f;说清楚点 &#xff1a;就是哔哩哔哩啊&#xff1b; &#xff1a;哦 &#xff1a;你在b站上学习吗…

B 站崩了,受害程序员聊聊

非吃瓜&#xff0c;B 站事件始末分析 防治技术分享 大家好&#xff0c;我是鱼皮&#xff0c;昨天小破站崩了的事情相信很多朋友都听说了。 这要是搁以前&#xff0c;不爱吃瓜的我根本不会去关注这种事&#xff0c;崩了就崩了呗&#xff0c;反正天塌下来有程序员大佬们扛着&am…

B站发帖软件哪个好用?好用的哔哩哔哩发帖工具

B站发帖软件哪个好用?好用的哔哩哔哩发帖工具#发帖软件#哔哩哔哩发帖#视频发布软件 登录成功之后&#xff0c;进入到这样一个界面&#xff0c;默认情况下是这个样子的&#xff0c;我们在这里输入一下我们的一个文件夹的路径&#xff0c;输入到这里&#xff0c;点击添加账号&a…

B站一键查询视频/分P视频/番剧的弹幕发送者

近几年因为B站的门槛越来越低&#xff0c;时常会看到一些让人眼前一亮的弹幕。直接举报拉黑这种做法显然已经太便宜了、、 网上大部分查询工具时效性已经过了或者有局限性&#xff0c;所以我打算自己写一款能通过视频、分P视频、番剧来查询弹幕发送者的工具&#xff0c;输入视频…

新开源项目(solidjs-use)随想录

大厂技术 高级前端 Node进阶 点击上方 程序员成长指北&#xff0c;关注公众号 回复1&#xff0c;加入高级Node交流群 前言 如果你是 React 技术栈&#xff0c;就会发现其对新手其实是不太友好的&#xff0c;会导致新人写出很多重复渲染的组件和 BUG&#xff0c;而且排查难度高…

Semantic Kernel 知多少 | 开启面向AI编程新篇章

引言 在ChatGPT 火热的当下, 即使没有上手亲自体验&#xff0c;想必也对ChatGPT的强大略有耳闻。当一些人在对ChatGPT犹犹豫豫之时&#xff0c;一些敏锐的企业主和开发者们已经急不可耐得开展基于ChatGPT模型AI应用的落地探索。 因此&#xff0c;可以明确预见的是&#xff0c;「…