明霞山资源网 Design By www.htccd.com
本文实例讲述了Python自动扫雷实现方法。分享给大家供大家参考。具体如下:
#pyWinmineCrack.py # coding: utf-8 import win32gui import win32process import win32con import win32api from ctypes import * #雷区最大行列数 MAX_ROWS = 24 MAX_COLUMNS = 30 #雷区格子在窗体上的起始坐标及每个格子的宽度 MINE_BEGIN_X = 0xC MINE_BEGIN_Y = 0x37 MINE_GRID_WIDTH = 0x10 MINE_GRID_HEIGHT = 0x10 #边框、无雷、有雷的内部表示 MINE_BOARDER = 0x10 MINE_SAFE = 0x0F MINE_DANGER = 0x8F #“雷区”在 扫雷程序中的存储地址 BOARD_ADDR = 0x1005340 class SMineCtrl(Structure): _fields_ = [("hWnd", c_uint), ("board", (c_byte * (MAX_COLUMNS + 2)) * (MAX_ROWS + 2)), ("rows", c_byte), ("columns", c_byte) ] kernel32 = windll.LoadLibrary("kernel32.dll") ReadProcessMemory = kernel32.ReadProcessMemory WriteProcessMemory = kernel32.WriteProcessMemory OpenProcess = kernel32.OpenProcess ctrlData = SMineCtrl() #找到扫雷程序并打开对应进程 try: ctrlData.hWnd = win32gui.FindWindow("扫雷", "扫雷") except: win32api.MessageBox(0, "请先运行扫雷程序", "错误!", win32con.MB_ICONERROR) exit(0) hreadID, processID = win32process.GetWindowThreadProcessId(ctrlData.hWnd) hProc = OpenProcess(win32con.PROCESS_ALL_ACCESS, 0, processID) #读取雷区数据 bytesRead = c_ulong(0) ReadProcessMemory(hProc, BOARD_ADDR, byref(ctrlData.board), SMineCtrl.board.size, byref(bytesRead)) if(bytesRead.value != SMineCtrl.board.size): str = "ReadProcessMemory error, only read ", bytesRead.value, " should read ", SMineCtrl.board.size win32api.MessageBox(0, str, "错误!", win32con.MB_ICONERROR) exit() #获取本次程序雷区的实际大小 ctrlData.rows = 0 ctrlData.columns = 0 for i in range(0, MAX_COLUMNS + 2): if MINE_BOARDER == ctrlData.board[0]: ctrlData.columns += 1 else : break ctrlData.columns -= 2 for i in range(1, MAX_ROWS + 1): if MINE_BOARDER != ctrlData.board[1]: ctrlData.rows += 1 else: break #模拟鼠标点击动作 for i in range(0, ctrlData.rows): for j in range(0, ctrlData.columns): if MINE_SAFE == ctrlData.board[i + 1][j + 1]: win32api.SendMessage(ctrlData.hWnd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, win32api.MAKELONG(MINE_BEGIN_X + MINE_GRID_WIDTH * j + MINE_GRID_WIDTH / 2, MINE_BEGIN_Y + MINE_GRID_HEIGHT * i + MINE_GRID_HEIGHT / 2)) win32api.SendMessage(ctrlData.hWnd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, win32api.MAKELONG(MINE_BEGIN_X + MINE_GRID_WIDTH * j + MINE_GRID_WIDTH / 2, MINE_BEGIN_Y + MINE_GRID_HEIGHT * i + MINE_GRID_HEIGHT / 2)) #搞定! win32api.MessageBox(0, "搞定!", "信息", win32con.MB_ICONINFORMATION)
希望本文所述对大家的Python程序设计有所帮助。
标签:
Python,自动扫雷
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。