|
|

楼主 |
发表于 2020-9-23 10:10
|
显示全部楼层
- import sys,mainInterface,requests,os,SquadList,strategyForm,souPaiJieZou,zhengrongZWForm
- from PyQt5.QtWidgets import QApplication,QMainWindow,QVBoxLayout,QLabel,QFrame,QAbstractItemView,QTableWidgetItem,QWidget
- from PyQt5.QtCore import Qt
- from PyQt5.QtGui import QCursor,QPixmap,QImage
- from TFT import TFT
- from NaiPai import AutoOPlayingChess,regDM,unRegDM
- import threading
- def buttonClick():
- #取出对象mainWindow.sender()
- if mainWindow.sender().text()=='官方阵容':
- if squadList.isVisible():
- squadList.setVisible(False)
- else:
- squadList.setVisible(True)
- if squadListUI.tabZhengR.rowCount() ==0:
- squadList.show() # 显示
- loadingList()
-
- if mainWindow.sender().text()=='关闭':
- mainWindow.close()
- squadList.close()
- straForm.close()
- spjzFrom.close()
- zrzwFrom.close()
- print('单击了',mainWindow.sender().text())
- def tablistClick():
- global dangqianData,spjzFrom,zrzwFrom
- row = squadListUI.tabZhengR.selectedItems()[0].row()
- dangqianData=strategyS[row]
- if spjzFrom != '':
- spjzFrom.setVisible(False)
- showZhengRongZW(True)
- def loadingList():
- squadListUI.tabZhengR.setRowCount(len(list))
- squadListUI.tabZhengR.setColumnCount(11)
- # 禁止编辑
- squadListUI.tabZhengR.setEditTriggers(QAbstractItemView.NoEditTriggers)
- # 整行选择
- squadListUI.tabZhengR.setSelectionBehavior(QAbstractItemView.SelectRows)
- # 水平表格头显示和隐藏
- squadListUI.tabZhengR.horizontalHeader().setVisible(False)
- # 垂直表格头显示和隐藏
- squadListUI.tabZhengR.verticalHeader().setVisible(False)
- for i,item in enumerate(list):
- strategy = tft.get_strategy(item['line_id'])
- strategyS.append(strategy)
- # 设置阵容强度
- tphot = QLabel()
-
- tphot.setAlignment(Qt.AlignCenter)
- tphot.setStyleSheet('''
- background-image: url(data/hot.png);
- color: #98794C;
- font-size:28px;
- font:微软雅黑;
- padding: 1px;
- background-position:center;
- ''')
- tphot.setText(item['quality'])
- tphot.setAlignment(Qt.AlignCenter)
- squadListUI.tabZhengR.setCellWidget(i, 0, tphot)
- # 设置阵容名
- tabItem = QTableWidgetItem(item['line_name'])
- squadListUI.tabZhengR.setItem(i, 1, tabItem)
-
-
- hero_location=strategy['hero_location']
- level_3_heros=strategy['level_3_heros']
- for j,heroitem in enumerate(hero_location):
- chessData = chessId_get_data(chess, heroitem['hero_id'])
- tpgFrame= QFrame()
-
- if 'isChosenHero' in heroitem:
- if heroitem['isChosenHero']!=None:
- tpgFrame.setObjectName('tpgFrame')
- tpgFrame.setStyleSheet('''
- #tpgFrame{
- border: 1px solid #DF8AE7;
- border-radius: 5px;
- }''')
- vbox = QVBoxLayout()
-
- tp = QLabel(tpgFrame)
- if heroitem['hero_id'] in level_3_heros:
- tp.setText('★★★')
- tphot.setAlignment(Qt.AlignCenter)
- tp.setStyleSheet('''
- margin: 1px;
- color: #FDBC03;
- font-size:12px;
- font:微软雅黑;
- ''')
- tp.setMaximumSize(42, 12)
- tp.setMinimumSize(42, 12)
- tphot.setAlignment(Qt.AlignCenter)
-
- tp1 = QLabel(tpgFrame)
- tp1.setMaximumSize(42, 42)
- tp1.setMinimumSize(42, 42)
- #让图像适应标签
- tp1.setScaledContents(True)
- if chessData["price"] =='1':
- color = '#989898'
- elif chessData["price"] =='2':
- color = '#58B137'
- elif chessData["price"] =='3':
- color = '#3678C8'
- elif chessData["price"] =='4':
- color = '#C81FC8'
- else:
- color = '#FDBC03'
-
-
- tp1.setStyleSheet(f'''
- margin: 1px;
- border: 1px solid {color};
- border-radius: 10px;
- ''')
-
- chessPath = f"data/chess/{chessData['name']}"
- try:
- with open(chessPath, 'rb')as f:
- img = QImage.fromData(f.read())
- tp1.setPixmap(QPixmap.fromImage(img))
- except:
- url = f"https://game.gtimg.cn/images/lol/act/img/tft/champions/{chessData['name']}"
- res = requests.get(url)
- img = QImage.fromData(res.content)
- tp1.setPixmap(QPixmap.fromImage(img))
- with open(chessPath, 'wb')as f:
- f.write(res.content)
- vbox.addWidget(tp)
- vbox.addWidget(tp1)
- vbox.setContentsMargins(1,0,1,1)
- #控件间距
- vbox.setSpacing(1)
- tpgFrame.setLayout(vbox)
- squadListUI.tabZhengR.setCellWidget(i, 2 + j, tpgFrame)
-
- # 行列大小根据内容调整大小
-
- squadListUI.tabZhengR.resizeRowsToContents()
- squadListUI.tabZhengR.resizeColumnsToContents()
- def mainWindowInitialize():
-
- '''
- 界面初始化
- :return:
- '''
- mainWindow.move(0, 0)
- ui.horizontalLayout.setContentsMargins(0,0,1,0)
- mainWindow.resize(566, 40)
- mainWindow.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
- #绑定事件
- ui.pushButton.clicked.connect(buttonClick)
- ui.pushButton_2.clicked.connect(buttonClick)
- ui.pushButton_3.clicked.connect(buttonClick)
- ui.pushButton_4.clicked.connect(buttonClick)
- ui.pushButton_5.clicked.connect(buttonClick)
-
- path = 'data/chess/'
- if os.path.isdir(path) == False:
- os.makedirs(path)
- path = 'data/equip/'
- if os.path.isdir(path) == False:
- os.makedirs(path)
- def squadListInitialize():
- '''
- 界面初始化
- :return:
- '''
- # 加载官方列表
- squadList.resize(800, 240)
- squadListUI.verticalLayout.setContentsMargins(1, 0, 0, 1)
- squadList.move(0, mainWindow.geometry().height()-3)
- squadList.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
- squadListUI.tabZhengR.clicked.connect(tablistClick)
- def straFormInitialize():
- # 加载攻略栏目
- straForm.move(app.desktop().screenGeometry().width()-straForm.geometry().width(), 0)
- straForm.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
- #绑定栏目按钮功能
- straFormUI.pushButton_5.clicked.connect(showShouPaiJieZou)
- straFormUI.pushButton_4.clicked.connect(showZhengRongZW)
- straFormUI.pushButton.clicked.connect(updataAutoChess)
- def showShouPaiJieZou():
- global spjzFrom
- # ----------搜牌节奏-克制分析------------------
- if spjzFrom!='':
- if spjzFrom.isVisible() :
- spjzFrom.setVisible(False)
- return
-
-
- if dangqianData!='':
- spjzFrom = souPaiJieZou.SoPaiJieZou(dangqianData)
- spjzFrom.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
- spjzFrom.show()
- spjzFrom.move(app.desktop().screenGeometry().width() - spjzFrom.geometry().width(),straForm.geometry().height() - 3)
- def showZhengRongZW(kg=False):
- global zrzwFrom,chess
- # ----------阵容站位------------------
- if kg!=True:
- if zrzwFrom != '':
- if zrzwFrom.isVisible():
- zrzwFrom.setVisible(False)
- return
- if dangqianData!='':
- zrzwFrom = zhengrongZWForm.ZhengRongZW(dangqianData,chess)
- zrzwFrom.setWindowFlags(Qt.WindowMaximizeButtonHint | Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
- zrzwFrom.show()
- zrzwFrom.move(app.desktop().screenGeometry().width() - zrzwFrom.geometry().width(),straForm.geometry().height() - 3)
- def chessId_get_data(chess, hero_id):
- '''
- 根据棋子的id返回棋子数据
- :param chess:
- :param hero_id:
- :return:
- '''
- for n in range(len(chess)):
- if hero_id == chess[n]['chessId']:
- return chess[n]
- def updataAutoChess():
- global atpc,chess
- chessList = [] # 模拟选中的棋子池,没界面模拟一下
- if dangqianData!='':
- hero_location=dangqianData['hero_location']
- for item in hero_location:
- #print(item)
- #获取棋子名称
- chessDATA= chessId_get_data(chess,item['hero_id'])
- chessList.append(chessDATA['title'])
- if len(chess)>0:
- # 将需要购买的棋子放入池子中
- atpc.chess=chessList
- print('目前的自动列表:',atpc.chess)
- if __name__=='__main__':
- dangqianData=''
- spjzFrom = ''
- zrzwFrom = ''
- # 创建一个QApplication类的实例
- app=QApplication(sys.argv)
- #----------mainwindow------------------
- mainWindow=QMainWindow()#创建一个界面
- ui=mainInterface.Ui_MainWindow()#实例化ui界面对象
- ui.setupUi(mainWindow)#运行里面的代码
- mainWindowInitialize() #初始化赋值
- mainWindow.show() #显示
- # ----------strategyForm------------------
- straForm = QWidget() # 创建一个界面
- straFormUI = strategyForm.Ui_strategyForm() # 实例化ui界面对象
- straFormUI.setupUi(straForm) # 运行里面的代码
- straFormInitialize() # 初始化赋值
- straForm.show() # 显示
-
- #------------squadList--------------------
- squadList = QWidget()
- squadListUI = SquadList.Ui_SquadFrom()
- squadListUI.setupUi(squadList)
- squadListInitialize()
-
-
-
-
- tft = TFT()
- # 可以使用print(列表名)打印数据
- chess = tft.get_chess() # 获取所有的棋子数据 返回一个列表
- equip = tft.get_equip() # 获取所有的装备数据 返回一个列表
- job = tft.get_job() # 获取所有的职业数据 返回一个列表
- race = tft.get_race() # 获取所有的羁绊数据 返回一个列表
- list = tft.get_linelist()
- strategyS=[]
-
-
- #自动拿牌-------------------
-
- # 初始化必要数据
- reg_code = "luxiaolan63735f4be12fda045a12cf1b2927d5cbc19c" # 大漠后台的注册码
- ver_info = 'www.52pojie.cn' # 附加信息,主要用于查询消费情况 填了更好查询,不填也无所谓
- dictPath = '1920.txt' # 字库路径
- processName = 'League of Legends.exe' # 进程名
- # ----------------------------------------------------------------------------
- # 创建自动购买棋子对象
- atpc = AutoOPlayingChess()
- # 登录大漠,免费版的大漠就可以省略这一步
- value = atpc.dmReg(reg_code, ver_info)
- # 设置好字库和配置
- atpc.SetDict(dictPath)
- # 判断是否登录成功
- if value == 1: # 免费版的就不要这个if了
- print(f'验证成功!')# 接下来就可以自己查接口说明来使用里面的全部方法了
- # 启动自动购买棋子程序线程
- t = threading.Thread( target=atpc.startAuto)
- t.setDaemon(True)
- t.start()
- else:
- if value == -2:
- print('进程没有以管理员方式运行或者被第三方杀毒拦截. (建议关闭uac和杀毒软件),请用管理员权限运行本程序!')
- else:
- print(f'验证失败,失败代码为:{value},大概率是被杀毒拦截了!')
-
-
-
- #进入程序主循环,并通过exit函数确保主循环安全结束
- sys.exit(app.exec_())
复制代码
|
|