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自动扫雷实现方法相关推荐

  1. python安装缺失_python: 自动安装缺失库文件的方法

    python: 自动安装缺失库文件的方法 Method 通过一条指令即可完成: os.system('所需指令') Note: os.system('所需指令') 还可以完成许多其他任务,非常强大. ...

  2. python自动化代码生成_python 自动生成C++代码 (代码生成器)

    Python代码自动生成方法(代码生成器)遇到这种事在工作遇到问题,你需要写很多c++基础数据库类,但这些类是一样的,只不过是添加,删除,修改并检查.如果你手动编写代码,它是费力而容易出错;它可以很容 ...

  3. python如何自动缩进_python自动缩进

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在使用vim并编辑python脚本. autoindent通常工作得很好,但 ...

  4. python函数实例化_Python中的__new__()方法与实例化

    __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__()负责将类的实例化,而在__init__()启动之前 ...

  5. python自动拨号_Python自动连接ssh的方法

    作者:Sephiroth 字体: 类型:转载 这篇文章主要介绍了Python自动连接ssh的方法,实例分析了基于Python实现连接ssh的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲 ...

  6. python扫雷_python做扫雷

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文为大家分享了python实现扫雷游戏的具体代码,供大家参考,具体内容如下本文 ...

  7. 人生苦短我学python表情包_Python自动生成表情包

    原标题:Python自动生成表情包 源| 创业智库文| 唐一 作为一个数据分析师,应该信奉一句话----"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态-- ...

  8. python 自动输入_Python自动输入【新手必学】

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:哈喽哈嘿哈 这篇文章是我的第一篇文章,写的不好的地方,请大家多多指教哈,另 ...

  9. python自动发送邮件_Python自动发送邮件

    用 Python 自动发送邮件在日常工作中可以避免一些重复性的工作,Python 用来发送邮件会涉及到 smtplib 和 Email 两个模块,smtplib 是用来发送邮件用的,Email 是用来 ...

最新文章

  1. 利用BP神经网络教计算机进行非线函数拟合
  2. spring事务-说说Propagation及其实现原理
  3. vue-video-player集成videojs-contrib-hls实现.m3u8文件播放
  4. eclipse中配置Tomcat,并进行简单测试
  5. django ajax 更新表格_Django(反向解析,路由分发、名称空间、视图层、虚拟环境、Django版本、json,CBV)...
  6. 取两堆石子(威佐夫博弈)
  7. Eclipse Tips(2):代码颜色设置
  8. NASA: Seeing Jupiter(注视木星)
  9. 如何通俗易懂地让女朋友明白什么是语言模型?
  10. maven中引用JDK中的tools jar
  11. web自动化测试第6步:模拟鼠标操作(ActionChains)
  12. 台式计算机看网络电视,台式电脑无线投屏到电视
  13. OBS录制黑屏的解决办法
  14. 进制转化(二进制,八进制,十进制,十六进制)详细教程
  15. Apple ID 双重认证,请输入有效的电话号码
  16. halcon案例-指纹图片增强
  17. 马尔可夫蒙特卡洛(MCMC)-从平稳分布,细致平衡到Metropolis-Hastings和Gibbs采样
  18. 炉石无限重新连接服务器,炉石传说:竟然还有这种无限资源的操作
  19. 用什么软件测试usb速度,什么是usb 3.0?实测usb 3.0与usb 2.0传输速度对比
  20. MacOS 平台使用CLion工具进行ndk开发示例

热门文章

  1. BZOJ4521: [Cqoi2016]手机号码
  2. Java报告比较日期,Java Date Compare 日期比较
  3. 注解方式实现logback日志脱敏
  4. “退微信群”谣言背后:总有人用阴谋论湮没常识
  5. stm32毕设分享 GSM手机短信收发系统(源码+论文)
  6. Python装饰器模拟京东登陆
  7. 深度增强学习DDPG(Deep Deterministic Policy Gradient)算法源码走读
  8. 2020-08-08
  9. 铁路 12306 的架构太牛了!
  10. 为什么华为手机总出现没见过的图片?这种情况下赶紧注意4个功能