百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

游戏中验证码是怎么做的,今天用按键模拟做一个

cac55 2025-03-05 13:46 30 浏览 0 评论

大家好,我是郭立员~

前言

昨天在群里聊到一个游戏验证码,如下图所示:

由于这个验证比较简单,今天我们不讲怎么过这个验证,而是讲一个有意思的,怎么才能开发出这种防挂机的验证。

下面我就用按键模拟一下这个验证的实现过程。

一、准备工作

①、一张背景图

②、多张物品图片

二、游戏验证的展示

①、使用设备雷电9模拟器,横屏分辨率1280*720

经测试这个分辨率可以准确获取到用户点击的坐标。

②、使用悬浮窗展示验证

三、原理

①、验证的图片展示

验证分为3个区域,背景图、题目区和答题区。

选出3个物品,显示在题目区的位置,然后在答题区随机生成3个坐标,然后让选出的3个物品显示在答题区。

为了书写代码方便,我只选择的3个物品图,省去了从众多物品随机选择的过程,简化了代码逻辑。

FW.NewFWindow("浮窗名", 100, 50, 885, 613)
FW.AddImageView "浮窗名", "背景图片", "/sdcard/pictures/验证图/bg.jpg", 0, 0, 885, 613
FW.AddImageView "浮窗名", "图1", "/sdcard/pictures/验证图/1.jpg", 370,100, 70, 70
FW.AddImageView "浮窗名", "图2", "/sdcard/pictures/验证图/2.jpg", 490, 100, 70, 70
FW.AddImageView "浮窗名", "图3", "/sdcard/pictures/验证图/3.jpg", 610, 100, 70, 70


Dim rect = {100,270,700,500}
For i = 1 To 3
  Dim sj1 = int((rect[3]-rect[1]+1)*rnd())+rect[1]
  Dim sj2 = int((rect[4]-rect[2]+1)*rnd())+rect[2]
  FW.AddImageView "浮窗名", "答案"&i, "/sdcard/pictures/验证图/"&i&".jpg", sj1, sj2, 70, 70
Next
FW.Show ("浮窗名")

②、知道自己出的验证的答案

这个验证的答案就是在答题区随机生成的3个坐标,我们需要用数组记录下来。

需要注意相对坐标和绝对坐标的转换,随机数是相对于背景图片,存入数组的坐标要是相对于手机屏幕的,所以在代码中我加上偏移。

Dim arr = {null}
Dim rect = {100,270,700,500}
For i = 1 To 3    
    Dim sj1 = int((rect[3]-rect[1]+1)*rnd())+rect[1]
    Dim sj2 = int((rect[4]-rect[2]+1)*rnd())+rect[2]
    arr[i]={null}
    arr[i][1] = sj1 +100
    arr[i][2]= sj2 +50
Next
TracePrint "答案是:",encode.TableToJson(arr)

输出结果

答案是:[[696,486],[439,454],[439,521]]

③、获取用户的点击坐标,并在图片上面做上标记

Dim ans = {null}
For i = 1 To 3
    Dim 坐标表 = zm.CatchTouchPoint(1)
    FW.AddTextView "浮窗名", "坐标" & i, i, 坐标表[1][1] - 100, 坐标表[1][2] - 50, 30, 30
    ans[i]={null}
    ans[i][1] = 坐标表[1][1]
    ans[i][2]= 坐标表[1][2]
Next


TracePrint "用户的答案是:",encode.TableToJson(ans)

如果你使用过“获取用户点击坐标”这个命令,可能会发现我并没有同时获取3个点的坐标,而是每次获取1个点坐标,重复执行3次。

这是因为“获取用户点击坐标”命令是阻断型的命令,如果一次性获取3个点的坐标,就没法在用户点一个坐标就标注一个位置。

使用单次获取1个坐标,就能加上标注位置的功能了。

当用户点击完,同样用数组存储上每次点击的坐标值。

用户的答案是:[[730,522],[472,488],[479,555]]


④、验证用户点击的正确性

对于程序来说,验证点击的正确性就是比对两个数组的相似程度。

答案是:[[696,486],[439,454],[439,521]]
用户的答案是:[[730,522],[472,488],[479,555]]

这里我没有说是比对两个数组是否相同,而是比对相似程度,就是因为用户很难点到我们生成的坐标点上,只要用户点击的坐标点接近我们设置的就判定为有效。

看一下具体图解:

答案点是左上角的点,有效区域是70*70,也就是用户点击的坐标和答案点的差值在0-70就是有效点击。

代码如下:

For i = 1 To 3
    If 0 < ans[i][1] - arr[i][1] < 70 and 0 < ans[i][2] - arr[i][2] < 70 Then 
    
    Else 
        TracePrint "用户答案错误"
        Exit For
    End If
    If i = 3 Then 
        TracePrint "用户答案正确"
    End If
Next

四、最终效果展示:

相关推荐

怎么设置电脑开机自启动项?

电脑开机自启动项是指在电脑开机时自动启动的程序。例如,我们经常使用的一些软件,如QQ、微信、迅雷等,可以设置成开机自启动,这样我们在电脑开机后就不需要再手动打开这些软件了,可以直接使用。本文将介绍如何...

Windows 10 开机自动启动程序设置全攻略

在日常使用电脑的过程中,我们经常会希望一些常用程序能够在开机时自动启动,以便提高工作效率。那么在Windows10中,如何设置开机自动启动的程序呢?今天,我们就来详细介绍几种常见的方法,帮助大家...

如何关闭电脑开机时自动弹出的右下角热点新闻窗口?

如何关闭电脑开机时自动弹出的右下角热点新闻窗口?有用户发现,当电脑开机时,桌面右下角会自动弹出一个带有热点信息的窗口。这种情况就是我们的电脑里存在一些广告程序。当我们的电脑打开并连接到互联网时,...

Mac系统自启动管理

你有没有在Mac系统安装了一个软件后,发现每次重启电脑的时候,他都自动打开来,这种情况就是有些软件打包的时候就设置了开机自动启动,个人觉得有点流氓。那么我们怎么能取消掉开机启动呢?首先,我们打开系统偏...

Windows 10下多标签的文件资源管理器来了(文件夹高效操作)

我们使用网页浏览器一般都有多标签(多选卡)功能,但文件资源浏览器却没有这个多标签功能,挺不方便的,之前有一个Clover可实现这个功能,现在360也出了一个多标签文件管理器(360文件夹),截止到20...

Win7Win10添加开机自动运行软件的技巧方法(亲测可用)

Win7管理开机启动项的方法:1、使用快捷组合键“win+R”打开“运行”;2、输入“msconfig”3、点击“确定”打开“系统配置”;4、点选“启动”项,进入到启动项管理界面,然后就可以开启或关闭...

怎么设置和禁用电脑开机自启动程序?

大家好,这篇文章给大家分享的是关于“怎么设置和警禁用电脑开机自启动程序?”的相关内容,欢迎查阅。在电脑上设置开机自启动程序可以让您的常用软件在开机后自动启动,比如常见的杀毒软件等一般都是自启动程序,他...

Win10开机启动项设置全解(下)

IT之家(www.ithome.com):Win10开机启动项设置全解(下)IT之家刚刚在《Win10开机启动项设置全解(上)》里面介绍了在Win10系统中对于启动项启用和禁用的相关操作的内容,下面我...

电脑开机后无限重启怎么办?

计算机在几秒钟内无限重启的问题更加令人头疼。那么是什么原因造成的呢?有什么解决方案?一、软件原因1、当病毒“冲击波”病毒来袭时,它将提示系统在几秒钟内自动启动。木马程序可以远程控制计算机的所有活动,包...

Clonezilla 自动化之-启动时自动挂载 Webdav 共享文件夹

1、核心结论因Webdav配置文件davfs2.conf未做参数优化,导致Clonezilla自动挂载的Webdav目录镜像恢复正常,但镜像备份报错(Linux系统可能正常),要解决这...

win10 NFS+黑群晖远程加载管理Windows文件夹(读写NTFS格式+高清播放器)

作者:火麒麟11之前也写过一篇远程加载的无奈之举,因为百度了很久教程都没有很详细的,只找到一篇高手的文章,但是我本人小白一个,按照高手的做,搞了一天都没有搞定,也不知道错在那,所以只能先远程加载应急...

Windows 10 每次开机都自动弹出 “今日热点”、“热点资讯” “360每

问题:每次打开Windows10时,都会自动弹出“今日热点”、“热点新闻”、“360天天趣”的广告窗口:很烦人,有时候正常使用的时候会自动弹出!解决方案:右键任务栏-【任务管理器】-右键【今日热门话...

Windows设置软件开机自启动

我们希望电脑开机以后自动运行一些程序,例如向日葵、ToDesk远程软件;微云同步助手等备份软件,可以帮助我们在无人操作电脑的状态下,开机就可以自动执行操作。本期简介:在Windows系统中如何设置软件...

生活小技巧006:批处理实现程序开机自动启动

这次来衡阳部署智能应用发现部署完之后需要启动很多的后台程序来支持服务的运行,这就导致每天开机都需要重复的去启动大量的程序(测试期间服务器晚上会关闭)。作为程序员的我们怎么能够容忍这种事情发生呢?开机启...

禁止Excel启动时自动新建工作簿

通过双击桌面Excel图标启动Excel时会默认自动新建一个空白工作簿,这给需要新建工作簿的用户带来方便。但大多数情况下,我们通过这种方式打开Excel后只是要对某个已存在的工作簿进行编辑,而不需要新...

取消回复欢迎 发表评论: