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. Python中format_map与format字符串格式化的区别
  2. Java报告比较日期,java 比较两个日期大小(1)
  3. 编程中的蛇形填空问题_在线编程问题当中的蛇形矩阵问题
  4. Java实现有向图的拓扑排序
  5. QT的QReadLocker类的使用
  6. 连州技工学校学计算机要交多少学费,技校学费一年大约需要多少
  7. 给大家几个不花钱看书的办法【人人都是产品经理】
  8. Oracle一定有sqlplus吗,oracle sqlplus执行sql文件
  9. linux tomcat守护_linux-非root用户运行tomcat(示例代码)
  10. 企业级Java开发树结构数据封装(开发必用)
  11. mybatis 鉴别其_Mybatis学习笔记9 - 鉴别器discriminator
  12. BZOJ3172lg3966 TJOI单词(广义后缀自动机)
  13. Echarts关系图(使用重力图)
  14. Vue-多个Vue实例、注册全局组件,Fetch、axios
  15. 微信全球MBA创新大赛Roadshow首站登陆斯坦福
  16. cad计算机土方软件,CAD土方工程量算量插件(土方工程量计算工具)V1.1 正式版
  17. sql server分组排序
  18. 实战:淘宝新品想抢占市场流量 分三步进行
  19. HTML炫彩按钮,炫彩流光按钮 html+css
  20. [HTML+Bootstrap+CSS+jQuery] 时差计算器(计算时差、验证格式、当前时间、历史记录……)

热门文章

  1. 为什么自学平面设计很多人学不会?初学者该如何入门呢?
  2. USB转串口芯片CH340E(LDR2001)
  3. cad中怎么调出计算机,cad历史记录怎么调出
  4. C语言题目水果忍者是一款,《水果忍者网页游戏论文.doc
  5. 防删图制作实操:贴吧防删图用什么工具软件可以制作
  6. 常见的js效果(二)之高德地图的应用
  7. Maven Gradle 知识点总结
  8. java学习-算法3--费式数列和卡巴斯三角形
  9. python3基础试题及答案_中国大学慕课mooc2020Python编程基础试题及答案
  10. 【蓝桥杯JavaB组真题详解】武功秘籍(2014)