利用Kotlin實現(xiàn)破解Android版的微信小游戲--跳一跳
前言
昨天下午,微信小程序開放了游戲接口,朋友圈瞬間炸開了鍋,尤其是“跳一跳”這款游戲的成績單,在朋友圈刷了一波又一波。
下面就來給大家介紹了關于Kotlin破解Android版的微信小游戲跳一跳的相關內(nèi)容,讓大家可以好好炫耀一番。
成果
跳一跳
微信小程序可以玩游戲了,我們來破解一下《跳一跳》這個官方出品的小游戲吧。
思路
用usb調(diào)試安卓手機,用adb截圖并用鼠標測量距離,然后計算按壓時間后模擬按壓。
$ adb shell input swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen) # 模擬長按 $ adb shell screencap <filename> # 保存截屏到手機 $ adb pull /sdcard/screen.png # 下載截屏文件到本地
- 得到手指按的時間 t
- 時間 = 距離 / 速度(常量) t = L / k
- L = p2 - p1
- 獲取到起始點和結(jié)束點的坐標
源碼
開發(fā)環(huán)境: Kotlin, IetelliJ IDEA
https://github.com/iOSDevLog/JumpJump
主要源碼
fun main(args: Array<String>) { 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調(diào)試模式并授權連接的電腦
- 打開微信跳一跳,并點擊開始
- 在Constans.kt中配置好adb路徑與截圖路徑,運行
- 在彈出的窗口中先點擊小人底部適當位置,然后再點想要跳的箱子的位置即可完成
參考
https://github.com/easyworld/PlayJumpJumpWithMouse
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Android kotlin+協(xié)程+Room數(shù)據(jù)庫的簡單使用
- Android結(jié)合kotlin使用coroutine的方法實例
- 在Android中如何使用DataBinding詳解(Kotlin)
- Android Studio / IDEA kotlin 顯示 var 真實類型操作
- Android使用Kotlin實現(xiàn)多節(jié)點進度條
- Android Studio kotlin生成編輯類注釋代碼
- Android studio 生成帶Kotlin文檔的實現(xiàn)方式
- Android Studio Kotlin代碼和java代碼相互轉(zhuǎn)化實例
- Android Kotlin環(huán)境使用ButterKnife的方法
- 利用Kotlin如何實現(xiàn)Android開發(fā)中的Parcelable詳解
- Android kotlin使用注解實現(xiàn)防按鈕連點功能的示例
相關文章
Android 使用手機NFC的讀取NFC標簽數(shù)據(jù)的方法
這篇文章主要介紹了Android 使用手機NFC的讀取NFC標簽數(shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-07-07Android 官推 kotlin-first 的圖片加載庫——Coil的使用入門
這篇文章主要介紹了Android 官推 kotlin-first 的圖片加載庫——Coil的使用入門,幫助大家更好的理解和學習使用Android,感興趣的朋友可以了解下2021-04-04Android使用Intent傳大數(shù)據(jù)簡單實現(xiàn)詳解
這篇文章主要為大家介紹了Android使用Intent傳大數(shù)據(jù)簡單實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03Android App在ViewPager中使用Fragment的實例講解
這篇文章主要介紹了Android App在ViewPager中使用Fragment的實例講解,ViewPager組件主要被用來制作滑動切換效果,需要的朋友可以參考下2016-03-03