【实战项目记录1】编写一个传奇3法师自动练级的python脚本
我基于pyautogui、tkinter以及几个标准库,结合面向对象的编程思路,从传奇3游戏的自动功能需求出发,研究了一个完整的法师练级打怪赚钱的小工具,给大家参考一下编程思路和一些实现想法。
闲来无事,在2022年上半年疫情封在家里,玩了一段时间的传奇3私服,估计这年头玩的没几个人了。
玩着玩着觉得练级枯燥了,打怪打钻都很枯燥,于是琢磨着想自动打怪,打好了还得自动捡装备,自动飞地图,装备满了还想自动去卖,卖完了再自动返回。于是就开始用python开始折腾了。
最后忘了迭代了多少个版本,终于可以稳定使用满足需求了,也发给了一起玩的几个哥们,省了他们的外挂月费。
疫情解封后就不玩游戏了,界面比较简单,代码写在下面,纯粹个人兴趣爱好。
#!/usr/bin/env python# -*- coding:utf-8 -*-# @Time :2022-4-11 23:03# @Author :Mengxh# @File :mir3-07-3.py 更新绝情LV1挂机脚本,自动红包和福利店,UI版from tkinter import *import os
import pyautogui
import time
import datetimeimport mir3_init
import mir3_is_enemy
import mir3_is_item
import mir3_pickupdef attack():while True:print('开始攻击f2法术')k = 1pyautogui.press('f2', interval=0.5)pyautogui.press('f2', interval=0.5)im_1 = pyautogui.locateOnScreen('./pics/menupng/kouxue.png', region=region_main,confidence=0.9)im_2 = pyautogui.locateOnScreen('./pics/menupng/kouxue.png', region=region_main,confidence=0.9)if im_1 or im_2:# print('打了有怪')passelse:# print('打了无怪')breakdef hongbao():# pyautogui.click(role_x, role_y)# time.sleep(1)if window.poll:t = pyautogui.locateOnScreen('./pics/menupng/hongbao2.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.doubleClick(pos.x, pos.y)time.sleep(0.5)s = pyautogui.locateOnScreen('./pics/menupng/num_7.png', region=region_main, confidence=0.8)if s is not None:pos1 = pyautogui.center(s)pyautogui.click(pos1.x, pos1.y)time.sleep(2.5)window.after(1000, hongbao)else:print("结束红包")window.poll = Trueprint('hongbao:', window.poll)def fulishop():pyautogui.click(role_x, role_y)time.sleep(1)if window.poll:# 点老头t = pyautogui.locateOnScreen('./pics/menupng/fucai1.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.moveTo(pos.x, pos.y - 10)pyautogui.click()time.sleep(3)# 点页面上的格子t = pyautogui.locateOnScreen('./pics/menupng/fucai2.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)time.sleep(1)else:# 点上一页print('当前页开完,点击上一页')t = pyautogui.locateOnScreen('./pics/menupng/fucai3.png', region=region_main, confidence=0.8)print(t)if t is not None:pos = pyautogui.center(t)print(pos)pyautogui.click(pos.x, pos.y)time.sleep(2)# 点页面上的格子t = pyautogui.locateOnScreen('./pics/menupng/fucai2.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)time.sleep(1)window.after(1000, fulishop)else:print('钻石福利买完')else:print('点击停止')window.poll = Truedef zuanshi():print('操作D菜单回收钻石')# pyautogui.click(role_x, role_y)# time.sleep(1)pyautogui.press('d')t = pyautogui.locateOnScreen('./pics/menupng/jinbi1.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen('./pics/menupng/jinbi2.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen('./pics/menupng/jinbi3.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen('./pics/menupng/zuanshihuishou1.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen('./pics/menupng/zuanshihuishou2.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)def buymed(n):print('随身买药')# pyautogui.click(role_x, role_y)time.sleep(1)pyautogui.press('w')t = pyautogui.locateOnScreen('./pics/menupng/med.png', region=region_main, confidence=0.8)if t is not None:print('包裹还有药,不买')pyautogui.press('w')passelse:print('开始买药')pyautogui.press('d')t = pyautogui.locateOnScreen('./pics/menupng/suishen1.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen('./pics/menupng/suishen2.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)pyautogui.typewrite(str(n))pyautogui.press('enter')t = pyautogui.locateOnScreen('./pics/menupng/suishen3.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)def repair():print('装备特修')# pyautogui.click(role_x, role_y)time.sleep(1)pyautogui.press('d')t = pyautogui.locateOnScreen('./pics/menupng/texiu1.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen('./pics/menupng/texiu2.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)def goto_lv1():# 点击神石t = pyautogui.locateOnScreen('./pics/locatepng/00shenshi.png', region=region_main, confidence=0.8)pos = pyautogui.center(t)pyautogui.moveTo(pos.x, pos.y - 10)# 点击神石pyautogui.click()t = pyautogui.locateOnScreen('./pics/locatepng/xueyuanlv1.png', region=region_main, confidence=0.8)pos = pyautogui.center(t)pyautogui.click(pos)time.sleep(1)t = pyautogui.locateOnScreen('./pics/locatepng/mapzoom.png', region=region_main, confidence=0.6)if t is None:pyautogui.press('v')t = pyautogui.locateOnScreen('./pics/locatepng/mapzoom.png', region=region_main, confidence=0.6)pos = pyautogui.center(t)pyautogui.click(pos)t = pyautogui.locateOnScreen('./pics/locatepng/jqgate.png', region=region_main, confidence=0.6)pos = pyautogui.center(t)print(pos)pyautogui.moveTo(pos.x - 2, pos.y + 4)pyautogui.doubleClick()while True:t = pyautogui.locateOnScreen('./pics/locatepng/jqdoor.png', region=region_main, confidence=0.6)if t is not None:breakt = pyautogui.locateOnScreen('./pics/locatepng/mapzoom.png', region=region_main, confidence=0.6)if t is None:pyautogui.press('v')t = pyautogui.locateOnScreen('./pics/locatepng/mapzoom.png', region=region_main, confidence=0.6)pos = pyautogui.center(t)pyautogui.click(pos)while True:# print('靠近大门')t = pyautogui.locateOnScreen('./pics/locatepng/jqdoor.png', region=region_main, confidence=0.6)if t is not None:# print('判断大门坐标')pos = pyautogui.center(t)# 判断物品坐标与人物的相对方向,定义行走方向if pos.x < role_x - 13:x = lelif pos.x > role_x + 13:x = relse:x = role_xif pos.y <= role_y - 5:y = uelif pos.y >= role_y + 5:y = delse:y = role_ypyautogui.click(x=x, y=y, button='LEFT')else:pyautogui.click(x=x, y=y, button='LEFT')breaktime.sleep(1)pyautogui.press('v')def auto_lv1():global iglobal pif window.poll:time.sleep(2)k = 0while mir3_is_enemy.is_enemy():# 发现有怪继续攻击while True:k = 1pyautogui.press('f2', interval=0.5)pyautogui.press('f2', interval=0.5)im_1 = pyautogui.locateOnScreen('./pics/menupng/kouxue.png', region=region_main,confidence=0.9)im_2 = pyautogui.locateOnScreen('./pics/menupng/kouxue.png', region=region_main,confidence=0.9)if im_1 or im_2:# print('打了有怪')passelse:# print('打了无怪')breakif k == 1:# 2. 判断捡东西print('进入捡东西')# 获取东西坐标pos_list = mir3_is_item.multi_thread()if pos_list:# 循环走到坐标点for pos in pos_list:mir3_pickup.pickup(pos)p += 1print('捡第%d个' % p)if p > 25:zuanshi()p = 0# 定期修理装备if i % 300 == 0:repair()# 随身买药if i % 800 == 0:buymed(100)print('捡东西完成,瞬移')pyautogui.press('f5')print('i=', i, 'time = ', time.ctime())i += 1window.after(1000, auto_lv1)def auto_jqboss():global iglobal pglobal jqboss_stateglobal jif window.poll:if jqboss_state == 'active':print('i=', i, 'time = ', time.ctime())# 判断有怪print('判断是否有怪')if mir3_is_enemy.is_enemy():pyautogui.click(role_x, role_y)attack()# 获取东西坐标print('获取东西坐标列表')pos_list = mir3_is_item.multi_thread()if pos_list:if len(pos_list) > 10:zuanshi()# 循环走到坐标点for pos in pos_list:mir3_pickup.pickup(pos)time.sleep(0.5)p += 1print('捡第%d个' % p)if p % 8 == 0:zuanshi()if mir3_is_enemy.is_enemy():attack()breakelse:t1 = pyautogui.locateOnScreen(f'./pics/locatepng/jqcenter2.png', region=mir3_init.region_jq, confidence=0.6)if t1 is not None:pos = pyautogui.center(t1)if abs(pos.x - mir3_init.jq_pos[0]) > 2 or abs(pos.y - mir3_init.jq_pos[1]) > 2:print('未在中心点区域,执行行走')while True:t1 = pyautogui.locateOnScreen(f'./pics/locatepng/jqcenter2.png', region=mir3_init.region_jq,confidence=0.6)if t1 is not None:pos = pyautogui.center(t1)print('pos:', pos)if abs(pos.x - mir3_init.jq_pos[0]) > 2 or abs(pos.y - mir3_init.jq_pos[1]) > 2:print('执行移动')if pos.x < mir3_init.jq_pos[0]:x = lelif pos.x > mir3_init.jq_pos[0]:x = relse:x = role_xif pos.y < mir3_init.jq_pos[1] - 2:y = uelif pos.y > mir3_init.jq_pos[1] + 2:y = delse:y = role_ypyautogui.click(x=x, y=y)if mir3_is_enemy.is_enemy():print('向中心区域移动遇敌')attack()print('移动中遇敌攻击,中断移动')breakelse:print('移到中心区域,等待')jqboss_state = 'wait'zuanshi()repair()buymed(500)breakelse:print('已在中心点区域,等待')jqboss_state = 'wait'# 定期修理装备if i % 100 == 0:repair()# 随身买药if i % 300 == 0:buymed(200)i += 1if jqboss_state == 'wait':if mir3_is_enemy.is_enemy():print('遇敌攻击切换状态')attack()jqboss_state = 'active'j = 1else:print('\r等待刷怪',j,end='',flush=True)j+=1passwindow.after(1000, auto_jqboss)def buygjbs():print('购买攻击宝石')# m = int(input("输入要购买攻击宝石的次数,每次30个:"))m = int(pyautogui.prompt("输入要购买攻击宝石的次数,每次30个:"))pyautogui.click(role_x, role_y)time.sleep(1)pyautogui.press('d')t = pyautogui.locateOnScreen('./pics/menupng/suishen_zuanshi.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen('./pics/menupng/zuanshi_teshu.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen('./pics/menupng/teshu_qita.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)for i in range(m):t = pyautogui.locateOnScreen('./pics/menupng/gongjibaoshi.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)pyautogui.typewrite('30')pyautogui.press('enter')print(i + 1)def pickup_only():global pif window.poll:pos_list = mir3_is_item.multi_thread()if pos_list:# 循环走到坐标点for pos in pos_list:mir3_pickup.pickup(pos)p += 1print('捡第%d个' % p)if p % 5 == 0:breakif p > 23:zuanshi()p = 0breakwindow.after(1000, pickup_only)def backto_daoguan():pyautogui.click(role_x, role_y)time.sleep(1)pyautogui.press('1')t = pyautogui.locateOnScreen('./pics/locatepng/home_daoguan.png', region=region_main, confidence=0.8)pos = pyautogui.center(t)pyautogui.click(pos)time.sleep(1)pyautogui.click(ld, button=RIGHT)pyautogui.click(ld, button=RIGHT)pyautogui.click(ld, button=RIGHT)def ten_boss():global pbackto_daoguan()p = 0for n in range(8):# 判断boss是否被杀time.sleep(2)pyautogui.press('d')t = pyautogui.locateOnScreen('./pics/locatepng/bossquery.png', region=region_main, confidence=0.8)pos = pyautogui.center(t)pyautogui.click(pos)time.sleep(2)t = pyautogui.locateOnScreen(bosskilllist[n], region=region_main, confidence=0.8)if t is not None:print(f'第{n + 1}个boss已消灭')t1 = pyautogui.locateOnScreen('./pics/menupng/suishen3.png', region=region_main, confidence=0.8)pos = pyautogui.center(t1)pyautogui.click(pos)continue# 点击神石t = pyautogui.locateOnScreen('./pics/locatepng/00shenshi.png', region=region_main, confidence=0.8)pos = pyautogui.center(t)pyautogui.moveTo(pos.x, pos.y - 10)pyautogui.click()# 点击BOSS名字t = pyautogui.locateOnScreen(bossmaplist[n], region=region_main, confidence=0.8)pos = pyautogui.center(t)pyautogui.click(pos)# 进入BOSS房移动print('进入boss房移动')time.sleep(1)if n == 0: # 沃玛教主print('进入沃玛教主房')while True:attack()pyautogui.click(rd, button='RIGHT')pyautogui.click(rd, button='RIGHT')pyautogui.click(rd, button='RIGHT')t = pyautogui.locateOnScreen('./pics/locatepng/tenbosspic/01.png', region=region_main, confidence=0.8)if t is not None:print('结束移动')breakif n == 1: # 触龙神attack()print('进入生死关')for i in range(6):pyautogui.click(r, role_y, button='RIGHT')attack()time.sleep(5)if n == 2: # 野猪print('进入猪洞')while True:pyautogui.mouseDown(ru, button='RIGHT')time.sleep(2)pyautogui.click(ru, button='RIGHT')attack()t = pyautogui.locateOnScreen('./pics/locatepng/tenbosspic/03.png', region=region_main, confidence=0.8)t1 = pyautogui.locateOnScreen('./pics/locatepng/tenbosspic/03a.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)if pos.x >= role_x:passelse:print('结束移动')pyautogui.click(button='RIGHT')breakif t1 is not None:breaktime.sleep(1)pyautogui.click(rd, button='RIGHT')pyautogui.click(rd, button='RIGHT')pyautogui.click(rd, button='RIGHT')if n == 3: # 赤月恶魔print('进入赤月恶魔')attack()pyautogui.click(ru, button='RIGHT')pyautogui.click(ru, button='RIGHT')pyautogui.click(ru, button='RIGHT')attack()pyautogui.click(r, role_y, button='RIGHT')pyautogui.click(r, role_y, button='RIGHT')if n == 4: # 骷髅教主print('进入骷髅教主')attack()pyautogui.click(ld, button='RIGHT')pyautogui.click(ld, button='RIGHT')pyautogui.click(ld, button='RIGHT')if n == 5: # 祖玛教主print('进入祖玛教主')attack()pyautogui.click(r, role_y, button='RIGHT')pyautogui.click(r, role_y, button='RIGHT')pyautogui.click(r, role_y, button='RIGHT')attack()pyautogui.click(rd, button='RIGHT')pyautogui.click(rd, button='RIGHT')attack()pyautogui.click(ru, button='RIGHT')pyautogui.click(ru, button='RIGHT')attack()time.sleep(3)if n == 6: # 牛魔王print('进入牛魔王')while True:pyautogui.mouseDown(ld, button='RIGHT')time.sleep(1)pyautogui.click(ld, button='RIGHT')t = pyautogui.locateOnScreen('./pics/locatepng/tenbosspic/06a.png', region=region_main, confidence=0.8)if t is not None:breakattack()t1 = pyautogui.locateOnScreen('./pics/locatepng/tenbosspic/06b.png', region=region_main, confidence=0.8)if t1 is not None:breakif n == 7: # 震天魔神print('进入震天魔神')for i in range(4):attack()pyautogui.click(lu, button='RIGHT')pyautogui.click(lu, button='RIGHT')# 开始攻击# 捡东西print('攻击后进入捡东西')# 获取东西坐标while True:attack()time.sleep(1)attack()pos_list = mir3_is_item.multi_thread()if pos_list:# 循环走到坐标点for pos in pos_list:mir3_pickup.pickup(pos)time.sleep(1)p += 1print('捡第%d个' % p)if p > 10:zuanshi()p = 0else:break# 离开backto_daoguan()def auto_lv1boss():global aglobal bglobal iglobal pif window.poll:time.sleep(2)k = 0while mir3_is_enemy.is_enemy():# 发现有怪继续攻击while True:k = 1pyautogui.press('f2', interval=0.5)pyautogui.press('f2', interval=0.5)im_1 = pyautogui.locateOnScreen('./pics/menupng/kouxue.png', region=region_main,confidence=0.9)im_2 = pyautogui.locateOnScreen('./pics/menupng/kouxue.png', region=region_main,confidence=0.9)if im_1 or im_2:# print('打了有怪')passelse:# print('打了无怪')breakif k == 1:# 2. 判断捡东西print('进入捡东西')# 获取东西坐标pos_list = mir3_is_item.multi_thread()if pos_list:# 循环走到坐标点for pos in pos_list:mir3_pickup.pickup(pos)p += 1print('捡第%d个' % p)if p > 30:zuanshi()p = 0# 定期修理装备if i % 300 == 0:repair()# 随身买药if i % 800 == 0:buymed(100)print('捡东西完成,瞬移')pyautogui.press('f5')print('i=', i, 'time = ', time.ctime())i += 1if time.localtime()[3] == a:zuanshi()repair()ten_boss()goto_lv1()a = 25if time.localtime()[3] == b:zuanshi()repair()ten_boss()goto_lv1()b = 25window.after(1000, auto_lv1boss)def neice_tool():input('打开内测管理者,点击[其他物品]')choice = int(input('选择要领取的东西:1.高级改造卡,2.高级神石,3.天地之锤,4.魔晶石:'))m = int(int(input("输入要的个数:"))/2)time.sleep(1)# pyautogui.click(role_x, role_y)if choice == 1:item = 'gaogai.png'elif choice == 2:item = 'gaoshen.png'elif choice == 3:item = 'tiandi.png'elif choice == 4:item = 'mojing.png'else:pyautogui.alert(f'输入错误!')item = ''if item:for i in range(m):t = pyautogui.locateOnScreen(f'./pics/menupng/{item}', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)pyautogui.typewrite('2')pyautogui.press('enter')print(m-i)pyautogui.alert(f'{m*2}个{item}兑换成功!')def upgrade_weapon():for i in range(41):t = pyautogui.locateOnScreen(f'./pics/menupng/chaomax.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)pyautogui.click(pos.x, pos.y)t = pyautogui.locateOnScreen(f'./pics/menupng/chaomax_re.png', region=region_main, confidence=0.8)if t is not None:pos = pyautogui.center(t)pyautogui.click(pos.x, pos.y)def stop():global ttprint('time = ', datetime.timedelta(seconds=(time.time() - tt)))window.poll = Falseb10.config(state=DISABLED)print('stop:', window.poll)def reset_poll():window.poll = Trueglobal aglobal bglobal iglobal pglobal ttglobal jglobal jqboss_statett = time.time()i = 1p = 0a = 4b = 7j = 1jqboss_state = 'active'print('reset poll True')b10.config(state=ACTIVE)def shutdown():n = int(pyautogui.prompt('输入多少时间(分钟)后关机'))n = n * 60os.system('shutdown -s -t %d' %n)pyautogui.alert(f'将于{n}秒自动关机')if __name__ == '__main__':print('窗口初始化')region_main = mir3_init.region_main # 游戏主画面范围# 定义逐点行走方向和鼠标左右键l = mir3_init.l # x = 100左r = mir3_init.r # x = 900右u = mir3_init.u # y = 150上d = mir3_init.d # y = 550下role_x = mir3_init.role_x # 人物中心点x坐标role_y = mir3_init.role_y # 人物中心点y坐标lu = (l, u) # 左上ld = (l, d) # 左下ru = (r, u) # 右上rd = (r, d) # 右下move_list_u = [lu, ru]move_list_d = [ld, rd]move_list = move_list_d + move_list_u# 装备图库载入列表itemlist = []for root, dirs, files in os.walk("./pics/pickup", topdown=False):for name in files:itemlist.append(os.path.join(root, name))bosskilllist = []for i in range(1, 9):bosskilllist.append(f'./pics/locatepng/bossiskill/0{i}.png')bossmaplist = []for i in range(1, 9):bossmaplist.append(f'./pics/locatepng/tenbosspic/00{i}.png')pyautogui.FAILSAFE = Truepyautogui.PAUSE = 1window = Tk()window.title('传奇3小工具——made by mxh')window.geometry('490x90+1200+700')window.resizable(0,0)# 定义按钮b1 = Button(window,text='打开红包',width=10,height=1,command=hongbao)b1.grid(row=0, column=0)b2 = Button(window,text='钻石福利',width=10,height=1,command=fulishop)b2.grid(row=0, column=1)b3 = Button(window,text='买攻击宝石',width=10,height=1,command=buygjbs)b3.grid(row=0, column=2)b4 = Button(window,text='lv1挂机',width=10,height=1,command=auto_lv1)b4.grid(row=1, column=0)b5 = Button(window,text='jqboss挂机',width=10,height=1,command=auto_jqboss)b5.grid(row=1, column=1)b6 = Button(window,text='挂机+10boss',width=10,height=1,command=auto_lv1boss)b6.grid(row=1, column=2)b7 = Button(window,text='10个boss',width=10,height=1,command=ten_boss)b7.grid(row=2, column=0)b8 = Button(window,text='前往雪原1',width=10,height=1,command=goto_lv1)b8.grid(row=2, column=1)# b8 = Button(# window,# text='超MAX武器',# width=10,# height=1,# command=upgrade_weapon# )# b8.grid(row=2, column=1)b9 = Button(window,text='自动关机',width=10,height=1,command=shutdown)b9.grid(row=2, column=3)# b9 = Button(# window,# text='返回道馆',# width=10,# height=1,# command=backto_daoguan# )# b9.grid(row=2, column=2)# b9 = Button(# window,# text='内测兑换',# width=10,# height=1,# command=neice_tool# )# b9.grid(row=2, column=2)b10 = Button(window,text='停止脚本',width=10,height=1,command=stop,)b10.grid(row=0, column=3)b11 = Button(window,text='RESET',width=10,height=1,command=reset_poll)b11.grid(row=1, column=3)b12 = Button(window,text='捡装备',width=10,height=1,command=pickup_only)b12.grid(row=2, column=2)reset_poll()window.mainloop()
【实战项目记录1】编写一个传奇3法师自动练级的python脚本相关推荐
- 实现一个京东自动签到的python脚本
下面是一个示例的京东自动签到的 Python 脚本: import requests import json# 首先你需要有京东账号并且登录 # 然后在浏览器中打开京东签到页面, 复制一下请求地址 u ...
- 实战项目:设计实现一个流程编排框架(设计)
上一篇文章我们讲了<实战项目:设计实现一个流程编排框架(分析)>主要对流程编排框架产生的背景,并做了需求分析,这其中包含功能性需求和非功能性需求,算是在正式开始设计之前做一个铺垫. 前面提 ...
- 实战项目:设计实现一个流程编排框架(实现)
上两篇文章主要讲了<[实战项目:设计实现一个流程编排框架(分析)(https://mp.weixin.qq.com/s/veLQZJqYNKbYvuCi7Pf_nA)]><实战项目: ...
- 使用python编写一个完整的接口自动化用例
使用python编写一个完整的接口自动化用例 以聚合数据的 查询天气接口为例: import requestsclass HttpRequests: def __init__(self,url, pa ...
- python 题库自动答题,自动匹配题库_如何用python写一个从题库自动匹配的答题脚本_淘题吧...
A. web数据库题目:根据用户输入的用户名和密码于数据库中的记录是否匹配制作一个用户登录模块 http://blog.csdn.net/love_leve/article/details/43226 ...
- 简单的python脚本-如何写一个简短(200行)的Python脚本
简介 在这篇文章中我将介绍如何写一个简短(200行)的 Python 脚本,来自动地将一幅图片的脸替换为另一幅图片的脸. 这个过程分四步: 检测脸部标记. 旋转.缩放.平移和第二张图片,以配合第一步. ...
- 实战 | 如何利用 Scrapy 编写一个完整的爬虫!
大家好,我是安果! 提到爬虫框架,这里不得不提 Scrapy,它是一款非常强大的分布式异步爬虫框架,更加适用于企业级的爬虫! 项目地址: https://github.com/scrapy/scrap ...
- Vue项目实战项目记录(电商后台管理系统)
学习视频:本站Vue实战项目:电商管理系统(Element-UI) 项目的实现效果 前言 时间:2021/10/5--2021/10/20 断断续续的完成了这个项目 gitte完整项目地址 后台项目文 ...
- 我把Github上最牛b的Java教程和实战项目整合成了一个PDF文档
写在前面 大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架.软件或者教程.这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整 ...
最新文章
- Python之自动单元测试之一(unittest使用实例)
- [云炬创业基础笔记]第九章企业的法律形态测试2
- [vue] 有在vue中使用过echarts吗?踩过哪些坑?如何解决的?
- 黄聪:Destoon中循环嵌套Loop和php代码结合调用自增长数字
- 如何使用功能性JavaScript编写经典游戏Snake并在浏览器中播放-完整的代码示例教程
- html原文档流样式,html之样式
- Linux Crontab 详解
- document.getElementById找不到元素
- HashMap与LinkedHashMap的结构对比
- 《网络安全原理与实践》一1.12 复习题
- oracle 韩思捷,oracle
- 通信原理及matlab仿真实验指导书,通信原理实验指导书——2015.pdf
- 一款号称最适合程序员的编程字体(JetBrains Mono)专为开发人员设计。
- 解决marathon上docker实例一直waitting的问题
- AUI框架的介绍和使用
- Linux命令如何将竖行改成横行,用DECODE和CASE WHEN将多行单列数据改为单行多列数据(即竖向排列改为横向排列)...
- win101909要不要更新_win101909更新了哪些内容?Win10 1909千万别更新原因
- 怎么查询Mysql数据库的版本号?(2种常用的方法)
- 云呐:机房资产管理系统web版,设备资产信息管理的应用
- genymotion镜像下载慢使用迅雷下载