python写扫雷脚本_Python自动扫雷实现方法
本文实例讲述了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写扫雷脚本_Python自动扫雷实现方法相关推荐
- python扫雷脚本_Python自动扫雷实现方法
本文实例讲述了Python自动扫雷实现方法.分享给大家供大家参考.具体如下: #pyWinmineCrack.py # coding: utf-8 import win32gui import win ...
- python写简单脚本_python写一个最简单的可执行脚本
这周一直在折腾一个很常见的需求.打算做成脚本和批处理,将策划从人肉手工和低效中解救出来. 尝试了windows下cmd的批处理.linux shell脚本.实则是多位程序员和我讲,为什么不用pytho ...
- python找人脚本_python 自动刷人气脚本
公司安总让小弟做多人模拟绑定,于是就有了下文,非常简单,可以改下url做自动刷人气脚本 代码如下,请不要见笑 #-*- coding:utf-8 -*- import requests, json, ...
- python 交换机巡检脚本_Python自动巡检H3C交换机实现过程解析
1.通过netmiko模块登录交换机,协议ssh,执行收集信息命令,保存至txt文件 2.过滤txt文件中的内容,保存到excel,使用xlwt模块实现. 3.sendmai发送excel邮件.或者发 ...
- python写传奇脚本_python – 如何将图形传奇带到前面?
我有一系列子图,其中每个子图都有一个图例,我希望在每个子图之外与相邻的子图重叠.问题在于,传说是在自己的情节"顶部",但低于邻近的情节.传说不会将zorder作为参数,所以我不确定 ...
- python写魔兽世界脚本_用python bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本...
2019-03-11更新:原来NSIS脚本也可以禁用64位文件操作重定向的! 1.在安装脚本的开始处定义 LIBRARY_X64. !include "MUI.nsh" !incl ...
- unity应用实例——扫雷游戏(自动扫雷、人工布雷)
最近用Unity做了一个简单的扫雷小游戏,可以实现电脑自动扫雷.人工布雷等功能,效果图如下. 在游戏的任何时间按下T键后,电脑会自动进行游戏,直到游戏结束.按下B键后可以通过鼠标点击埋雷. 项目一共有 ...
- mysql备份到制定目录_写一个脚本定时自动备份mysql到指定目录
编写一个shell脚本每天16:30备份mysql数据并压缩打包(打包文件按照当天的日期命名)放到/root/data #cd /root #vim mysqlbackup.sh #!/bin/bas ...
- 用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台
用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台 利用csv库来记录测试结果 利用logging库来记录脚本运行信息 利用ConfigParser库来读取测试配 ...
最新文章
- 学习NGUI前的准备NGUI的相关信息
- 手机和工业计算机运算能力对比,手机CPU跟电脑CPU到底差多少?
- 2021-04-11面试
- V4L2学习 二 ----视频打开与保存简单流程
- tcpdump抓包分析具体解释
- go java jsonrpc_使用golang 实现JSON-RPC2.0
- Linux中fasttext安装
- cad2019菜单栏怎么调出来_AutoCAD2019工具栏如何调出?工具栏调出方法图文推荐
- 计算机上怎么在表格输入分秒,“excel表格怎么输入角度“excel 表格中怎么输入分秒的符号...
- Python穷举法连接WiFi
- 多模块项目提示“Module ** must not contain source root **. The root already belongs to module **”的解决办法
- 如何看计算机几核,如何查看电脑CPU是几核的?,这几步你要了解
- 使用Ajax实现百度下拉框
- Java基础篇--面向对象(Object Oriented)
- linux下卸载软件命令行,如何使用Linux中的命令行卸载软件 | MOS86
- 以太坊导以太坊导_以太坊网络钓鱼诈骗在Facebook上的剖析
- 应用统计432考研复试提问总结精简版【二】
- seo关键词选择-SEO关键词选择分析软件
- Oracle Apps(EBS)模块名称 SAP模块名称
- windows操作系统没有设置密码安全策略引发的威胁
热门文章
- php mysql 分类_php+mysql实现无限分类实例详解
- vs release 调试 路径设置
- pytorch dataloader加速
- pyqt设置按钮可用
- python OrderedDict 详解
- WinError 145] 目录不是空的
- JPEG压缩原理与DCT离散余弦变换 量化
- c语言实现程序只执行一次,请问大家,为什么我调用我定义的函数俩次,但是程序只执行一次...
- python 参数个数 同名函数_如何在python中编写不同参数的同名方法
- mysql释放练级_面试官:谈谈Mysql事务隔离级别?