当前位置:

首页 > 编程开发 > VB实现的《QQ美女找茬游戏》实例

VB实现的《QQ美女找茬游戏》实例

一个基于VB的自动找茬程序,通过API截取屏幕两幅图片,逐像素对比其RGB分量,差值超过30时标记为差异点,并在窗体上绘制结果。程序将窗口设为总在最前,点击触发分析,实现快速自动找茬。

本文目录

    用VB写一个自动找茬的小程序,听起来有点无聊,但其实挺有意思的。原理非常简单:截取屏幕上的两幅图片,逐像素对比,标记出差异点。虽然VB的执行速度远不如C++,但实现起来毫不费力,代码量也很少。

    VB实现的《QQ美女找茬游戏》实例

    下面看看具体的实现代码。核心思路是通过API获取屏幕设备上下文,然后逐个像素读取两张图片的颜色值,比较它们的RGB分量。如果差值超过阈值(这里设为30),就认为这是不同的像素,用不同颜色标记出来。

    Option Explicit
    Private Type sPOINT
      x As Long
      y As Long
    End Type
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Const HWND_TOPMOST& = -1
    ' 将窗口置于列表顶部,并位于任何最顶部窗口的前面
    Private Const SWP_NOSIZE& = &H1
    ' 保持窗口大小
    Private Const SWP_NOMOVE& = &H2
    ' 保持窗口位置
    Private Sub Form_Load()
    SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    ' 将窗口设为总在最前
    End Sub
    '把long型的RGB值分解成3个分量
    Sub ColorRGB(Color As Long, C() As Integer)
      Const ByN As Integer = 256
      Const ByN2 As Long = 65536
      C(1) = (Color Mod ByN)
      C(2) = ((Color Mod ByN2)  ByN)
      C(3) = (Color  ByN2)
    End Sub
    Private Sub GetPoint()
      Dim p1(497, 447) As Long, p2(497, 447) As Long, C1(3) As Integer, C2(3) As Integer
      '数组大小匹配于图片的大小
      Dim pic1 As sPOINT, pic2 As sPOINT
      '设置两张图片的屏幕位置
      pic1.x = 8
      pic1.y = 192
      pic2.x = 517
      pic2.y = 192
      Dim h As Long, hD As Long, r As Long, i As Integer, j As Integer
      hD = GetDC(0)
      '读入两张图片
      For i = 0 To 497
        For j = 0 To 447
          p1(i, j) = GetPixel(hD, i + pic1.x, j + pic1.y)
          p2(i, j) = GetPixel(hD, i + pic2.x, j + pic2.y)
        Next
      Next
      '对比,标记差异
      Dim t As Boolean
      t = True
      For i = 0 To 497
        For j = 0 To 447
          Call ColorRGB(p1(i, j), C1())
          Call ColorRGB(p2(i, j), C2())
          If (Abs(C1(1) - C2(1)) > 30 Or Abs(C1(2) - C2(2)) > 30 Or Abs(C1(3) - C2(3)) > 30) Then
            t = Not t
            If t Then
              Picture1.ForeColor = &H0&
            Else
              Picture1.ForeColor = &HFF00&
            End If
          Else
            Picture1.ForeColor = p1(i, j)
          End If
          Picture1.PSet (i, j)
        Next
      Next
    End Sub
    Private Sub Picture1_Click()
    Me.Visible = False
    DoEvents
    GetPoint
    Me.Visible = True
    End Sub
    
    

    整个程序的核心就是GetPoint过程:先读取左右两张图片的像素,然后遍历比较,最后在Picture1上绘制结果。点击Picture1即可触发找茬分析。注意窗口设置为“总在最前”,方便定位。

    希望这个简单的例子能给大家的VB学习带来一些参考和启发。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    VB中判断空的几种方法(Null, Missing, Empty, Nothing, vbNullString)
    VB中判断空的几种方法(Null, Missing, Empty, Nothing, vbNullString)

    VB6 里有几个特别容易让人迷糊的“特殊值”——Null、Missing、Empty、Nothing、vbNullString。除了最后一个,其他几个都不能直接用 a = 值 这种方式来判断。下面咱们逐个拆解,理清楚它们到底是怎么回事。 1、Null Null 代表“空值”,本质上是一个不合法的数据

    Windows 10 x64 安装 Visual Basic 6.0 SP6注意事项
    Windows 10 x64 安装 Visual Basic 6.0 SP6注意事项

    在Windows 10 x64上安装Visual Basic 6.0 SP6,绝对是个让人头疼的活儿。折腾了两天才搞定,把遇到的坑和解决方法整理出来,希望能帮到正在挣扎的朋友。 先说几个前置条件:Windows 7 x64和Windows 8 x64理论上都能装,不过下面这些经验主要基于Win10

    VB中使用WMI获取系统硬件和软件有关信息
    VB中使用WMI获取系统硬件和软件有关信息

    WMI是Windows管理接口,支持本地及远程获取软硬件信息。VB中需引用MicrosoftWMIScriptingV1.1库,通过Win32_类如SoundDevice、VideoController等查询声卡、显卡、内存及操作系统详情。该技术广泛用于系统监控与配置。

    在VB中遍历文件并用正则表达式完成复制及vb实现重命名、拷贝文件夹的方法
    在VB中遍历文件并用正则表达式完成复制及vb实现重命名、拷贝文件夹的方法

    在VB开发中,利用FSO对象和正则表达式可实现文件按规则复制,如将文件名含“1项目”或“一项目”的文件复制到目标目录;同时也可实现文件夹重命名与拷贝,代码结构清晰,可直接套用或微调。

    VB FileSystemObject对象实例详解
    VB FileSystemObject对象实例详解

    FileSystemObject是ASP开发中操作服务器文件系统的核心对象,提供Drives属性及二十多种方法,可创建、读取、修改、删除文件和文件夹,并支持驱动器、路径处理及文件对象属性与方法的调用,功能全面且易于使用。

    VB关机恶搞小程序
    VB关机恶搞小程序

    基于VB的恶搞关机小程序利用系统命令或API触发强制关机,并通过注册表或启动文件夹实现自启动。交互版添加对话框要求输入“我是猪”取消关机,同时拦截关闭事件进行自我保护。核心涉及关机触发与自启动机制。

    VB实现按行读取文本文件的方法
    VB实现按行读取文本文件的方法

    VB中使用LineInput语句与FreeFile函数逐行读取文本文件,避免一次性加载大文件造成内存溢出。每行读取后可进行拼接、解析等处理,操作完毕必须关闭文件以释放系统资源。

    VB键盘鼠标无动作调用程序的尝试
    VB键盘鼠标无动作调用程序的尝试

    实现键盘鼠标无动作时调用程序,曾尝试HOOK钩子与Windows屏保检测均失败。最终用GetLastInputInfo函数获取系统空闲时间,成功触发操作,例如空闲15分钟弹出关机提示。

    VB实现禁用任务管理器的方法
    VB实现禁用任务管理器的方法

    在WindowsXP系统中,通过二进制流占用任务管理器可执行文件即可禁用任务管理器,使其无法被用户启动;而在Vista及Windows7系统中,则需要改用任务终止命令强制结束进程,并将该命令置于定时器事件中循环执行,从而持续阻止任务管理器重新启动,最终实现对任务管理器的长期禁用。这一方法通过占用文件。

    VB简单实现防止文件被改写
    VB简单实现防止文件被改写

    在VB程序中,防止配置文件被改写的有效方法是在程序运行期间先打开文件并保持占用状态,使系统提示文件被占用而无法手动修改。同时,程序启动时检查文件是否存在,若不存在则自动创建并写入默认值。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。