iOSDevLog

iOSDevLog

  • 3 minutes 29 seconds
    910. 用Kotlin破解Android版微信小游戏-跳一跳
    成果

    1077

    跳一跳

    微信小程序可以玩游戏了,我们来破解一下《跳一跳》这个官方出品的小游戏吧。

    思路

    用usb调试安卓手机,用adb截图并用鼠标测量距离,然后计算按压时间后模拟按压。

    $ adb shell input swipe [duration(ms)] (Default: touchscreen) # 模拟长按
    $ adb shell screencap # 保存截屏到手机
    $ adb pull /sdcard/screen.png # 下载截屏文件到本地
    得到手指按的时间 t
    时间 = 距离 / 速度(常量) t = L / k
    L = p2 - p1
    获取到起始点和结束点的坐标
    源码

    开发环境: Kotlin, IetelliJ IDEA

    https://github.com/iOSDevLog/JumpJump

    主要源码
    fun main(args: Array) {
    val jumpjump = JumpJump()
    var isFirst = true
    var firstPoint: Point? = null
    var secondPoint: Point?

    val jPanel = object : JPanel() {
    override fun paintComponent(g: Graphics) {
    super.paintComponent(g)
    try {
    var bufferedImage = ImageIO.read(File(SCREENSHOT_LOCATION))
    val newImage = BufferedImage(675, 1200, bufferedImage.getType())
    val gTemp = newImage.graphics
    gTemp.drawImage(bufferedImage, 0, 0, 675, 1200, null)
    gTemp.dispose()
    bufferedImage = newImage
    g.drawImage(bufferedImage, 0, 0, null)
    } catch (e: IOException) {
    e.printStackTrace()
    }
    }
    }

    jPanel.addMouseListener(object : MouseListener {
    override fun mouseReleased(e: MouseEvent?) {
    }

    override fun mouseEntered(e: MouseEvent?) {
    }

    override fun mouseClicked(e: MouseEvent?) {
    }

    override fun mouseExited(e: MouseEvent?) {
    }

    override fun mousePressed(e: MouseEvent?) {
    println("mousePressed")
    e.let {
    if (isFirst) {
    println("first {pomt" + e!!.x + " " + e.y)
    firstPoint = e.point
    isFirst = false
    } else {
    secondPoint = e!!.point
    val distance = distance(firstPoint!!, secondPoint!!)
    println("distance:" + distance)
    isFirst = true
    //magic number
    call(distance * 2.2)
    try {
    // wait for screen cap
    Thread.sleep(2500)
    } catch (e1: InterruptedException) {
    e1.printStackTrace()
    }

    printScreen()

    jPanel.validate()
    jPanel.repaint()
    }
    }
    }

    })

    jumpjump.isVisible = true
    jumpjump.contentPane.add(jPanel)

    printScreen()
    jumpjump.repaint()
    jumpjump.validate()
    }

    fun distance(a: Point, b: Point): Int {
    return Math.sqrt((a.x - b.getX()) * (a.x - b.getX()) + (a.y - b.getY()) * (a.y - b.getY())).toInt()
    }
    使用方法

    在电脑上下载好adb
    打开安卓手机的usb调试模式并授权连接的电脑
    打开微信跳一跳,并点击开始
    在Constans.kt中配置好adb路径与截图路径,运行
    在弹出的窗口中先点击小人底部适当位置,然后再点想要跳的箱子的位置即可完成
    29 December 2017, 3:19 pm
  • 34 minutes 34 seconds
    909. iTunes Connect 开发人员帮助-提供 App 内购买项目
    909. iTunes Connect 开发人员帮助-提供 App 内购买项目
    30 June 2017, 1:07 am
  • 18 minutes 40 seconds
    908. iTunes Connect 开发人员帮助-管理协议、税务和银行业务
    908. iTunes Connect 开发人员帮助-管理协议、税务和银行业务
    30 June 2017, 1:01 am
  • 16 minutes 1 second
    905. iTunes Connect 开发人员帮助-测试 Beta 版本
    905. iTunes Connect 开发人员帮助-测试 Beta 版本
    28 June 2017, 1:33 am
  • 18 minutes 17 seconds
    906. iTunes Connect 开发人员帮助-在 App Store 上发行
    906. iTunes Connect 开发人员帮助-在 App Store 上发行
    28 June 2017, 1:15 am
  • 11 minutes 59 seconds
    907. iTunes Connect 开发人员帮助-维护您的 App
    907. iTunes Connect 开发人员帮助-维护您的 App
    28 June 2017, 1:10 am
  • 10 minutes 29 seconds
    903. iTunes Connect 开发人员帮助-添加 App 图标、App 预览和屏幕快照
    903. iTunes Connect 开发人员帮助-添加 App 图标、App 预览和屏幕快照
    28 June 2017, 1:05 am
  • 7 minutes 56 seconds
    904. iTunes Connect 开发人员帮助-管理构建版本
    904. iTunes Connect 开发人员帮助-管理构建版本
    27 June 2017, 2:49 pm
  • 34 minutes 37 seconds
    902. iTunes Connect 开发人员帮助-管理 App 和版本
    902. iTunes Connect 开发人员帮助-管理 App 和版本
    27 June 2017, 12:47 am
  • 15 minutes 1 second
    901. iTunes Connect 开发人员帮助-添加、编辑和删除用户
    901. iTunes Connect 开发人员帮助-添加、编辑和删除用户
    27 June 2017, 12:34 am
  • 8 minutes 4 seconds
    900. iTunes Connect 开发人员帮助-iTunes Connect 使用入门
    900. iTunes Connect 开发人员帮助-iTunes Connect 使用入门
    27 June 2017, 12:34 am
  • More Episodes? Get the App
© MoonFM 2024. All rights reserved.