利用Kotlin實(shí)現(xiàn)破解Android版的微信小游戲--跳一跳
前言
昨天下午,微信小程序開放了游戲接口,朋友圈瞬間炸開了鍋,尤其是“跳一跳”這款游戲的成績(jī)單,在朋友圈刷了一波又一波。

下面就來(lái)給大家介紹了關(guān)于Kotlin破解Android版的微信小游戲跳一跳的相關(guān)內(nèi)容,讓大家可以好好炫耀一番。
成果

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

