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程序设计有所帮助。
时间: 2015-07-22
python扫雷脚本_Python自动扫雷实现方法相关推荐
- python写扫雷脚本_Python自动扫雷实现方法
本文实例讲述了Python自动扫雷实现方法.分享给大家供大家参考.具体如下: #pyWinmineCrack.py # coding: utf-8 import win32gui import win ...
- python抢红包脚本_Python自动抢视频红包,仅供学习!
本文来源于公众号: AirPyt hon 1 目 标 场 景 如今短视频横行的时代,以某短视频为首的,背后依靠着强大的资金后盾,疯狂地对平台用户进行红包轰炸. 与传统的红包不一样,视频红包包含位置的不 ...
- python刷票脚本_python自动刷票脚本(在不封IP的情况下)
# -*- coding:UTF-8 -*- from selenium import webdriver from selenium.common.exceptions import NoSuchE ...
- unity应用实例——扫雷游戏(自动扫雷、人工布雷)
最近用Unity做了一个简单的扫雷小游戏,可以实现电脑自动扫雷.人工布雷等功能,效果图如下. 在游戏的任何时间按下T键后,电脑会自动进行游戏,直到游戏结束.按下B键后可以通过鼠标点击埋雷. 项目一共有 ...
- python tab键自动补全_设置python中TAB键自动补全方法
设置python中TAB键自动补全方法 一.创建自动补全脚本如下: vi /tmp/python/tab.py #!/usr/bin/python # python tab file import s ...
- 在Windows上双击运行Python程序不会自动退出的方法
文章目录 在Windows上双击运行Python程序不会自动退出的方法 前言 将python.exe添加到环境变量中 一个Python程序例子 双击运行Python程序报错 双击运行Windows C ...
- python自动扫雷_Python自动扫雷实现方法
Python自动扫雷实现方法 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: Python自动扫雷实现方法.txt ] (友情提示:右键点上行txt文档名-> ...
- 什么是python自动化脚本_python自动化框架脚本
# 在写测试类以及测试用例时要规定一个命名习惯, # 一般测试类可以以Test开头,也可以以Test结尾. # 测试用例一般是以test开头. # 调用unittest包 # 调用unittest框架 ...
- python自动化代码生成_python 自动生成C++代码 (代码生成器)
Python代码自动生成方法(代码生成器)遇到这种事在工作遇到问题,你需要写很多c++基础数据库类,但这些类是一样的,只不过是添加,删除,修改并检查.如果你手动编写代码,它是费力而容易出错;它可以很容 ...
最新文章
- 用NumPy genfromtxt导入数据
- elasticsearch term match multi_match区别
- SharePoint 2007 Web Content Management 性能优化系列 前言
- 【通知】有三AI固态硬盘最后一次补货,再增3套视频!
- Tomcat tomcat-users.xml详解
- SQL重复记录查询(转载)
- python找零钱问题_Python基于回溯法子集树模板解决找零问题示例
- 为了帮粉丝完成毕业设计,我发现了一款私活神器
- anaconda激活python_Anaconda使用conda activate激活环境出错(待完全解决)2018-06-09
- javabean和java类_java对象 POJO和JavaBean的区别
- CodeSmith介绍
- Win10客户端 ssh 远程连接 win server 2008 R2服务器
- CentOS下Nginx+fastcgi+python3搭建web.py服务环境
- vip163邮箱手机版登陆入口是哪个?vip邮箱163实用技巧
- (五)2.自动控制原理 Frequency Responce Methods 之 Nyquist曲线
- git push如何强制提交
- 【转】台湾教授-如何阅读科研论文
- Weex和Web开发体验的异同
- AI视频插帧 附带『视频插帧』工具
- 基于Python的五子棋人机对战