python自动扫雷_Python自动扫雷实现方法
Python自动扫雷实现方法
来源:中文源码网 浏览: 次 日期:2018年9月2日
【下载文档: Python自动扫雷实现方法.txt 】
(友情提示:右键点上行txt文档名->目标另存为)
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: 自动安装缺失库文件的方法 Method 通过一条指令即可完成: os.system('所需指令') Note: os.system('所需指令') 还可以完成许多其他任务,非常强大. ...
- python自动化代码生成_python 自动生成C++代码 (代码生成器)
Python代码自动生成方法(代码生成器)遇到这种事在工作遇到问题,你需要写很多c++基础数据库类,但这些类是一样的,只不过是添加,删除,修改并检查.如果你手动编写代码,它是费力而容易出错;它可以很容 ...
- python如何自动缩进_python自动缩进
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在使用vim并编辑python脚本. autoindent通常工作得很好,但 ...
- python函数实例化_Python中的__new__()方法与实例化
__new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__()负责将类的实例化,而在__init__()启动之前 ...
- python自动拨号_Python自动连接ssh的方法
作者:Sephiroth 字体: 类型:转载 这篇文章主要介绍了Python自动连接ssh的方法,实例分析了基于Python实现连接ssh的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲 ...
- python扫雷_python做扫雷
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文为大家分享了python实现扫雷游戏的具体代码,供大家参考,具体内容如下本文 ...
- 人生苦短我学python表情包_Python自动生成表情包
原标题:Python自动生成表情包 源| 创业智库文| 唐一 作为一个数据分析师,应该信奉一句话----"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态-- ...
- python 自动输入_Python自动输入【新手必学】
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:哈喽哈嘿哈 这篇文章是我的第一篇文章,写的不好的地方,请大家多多指教哈,另 ...
- python自动发送邮件_Python自动发送邮件
用 Python 自动发送邮件在日常工作中可以避免一些重复性的工作,Python 用来发送邮件会涉及到 smtplib 和 Email 两个模块,smtplib 是用来发送邮件用的,Email 是用来 ...
最新文章
- Python中format_map与format字符串格式化的区别
- Java报告比较日期,java 比较两个日期大小(1)
- 编程中的蛇形填空问题_在线编程问题当中的蛇形矩阵问题
- Java实现有向图的拓扑排序
- QT的QReadLocker类的使用
- 连州技工学校学计算机要交多少学费,技校学费一年大约需要多少
- 给大家几个不花钱看书的办法【人人都是产品经理】
- Oracle一定有sqlplus吗,oracle sqlplus执行sql文件
- linux tomcat守护_linux-非root用户运行tomcat(示例代码)
- 企业级Java开发树结构数据封装(开发必用)
- mybatis 鉴别其_Mybatis学习笔记9 - 鉴别器discriminator
- BZOJ3172lg3966 TJOI单词(广义后缀自动机)
- Echarts关系图(使用重力图)
- Vue-多个Vue实例、注册全局组件,Fetch、axios
- 微信全球MBA创新大赛Roadshow首站登陆斯坦福
- cad计算机土方软件,CAD土方工程量算量插件(土方工程量计算工具)V1.1 正式版
- sql server分组排序
- 实战:淘宝新品想抢占市场流量 分三步进行
- HTML炫彩按钮,炫彩流光按钮 html+css
- [HTML+Bootstrap+CSS+jQuery] 时差计算器(计算时差、验证格式、当前时间、历史记录……)