autojs安卓脚本引擎开发的找字母游戏代码分享

说明

本文提供的代码仅供参考。
可能有些地方在最新版本的Auto.js上面需要做修改,才能运行。

Auto.js简介

Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。
与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找窗口句柄来实现的。

Auto.js使用JavaScript作为脚本语言,目前使用Rhino 1.7.7.2作为脚本引擎,支持ES5与部分ES6特性。

开发文档

Auto.js Pro开发文档优化版
文档尚在完善中,可能有文档描述和代码实际行为有出入的情况。
模板、样式、generator来自Node.js。

为什么要使用Auto.js Pro开发脚本,有什么特点?

吸引我使用Auto.js Pro的原因有很多。最主要的几个原因是:

  • Auto.js Pro能开发免ROOT的安卓脚本
  • Auto.js Pro基于节点操作,能开发全分辨率的脚本,自动适配各种安卓机型
  • Auto.js Pro丰富的UI组件,能自定义各种样式的安卓界面
  • Auto.js Pro使用的javascript的语法比较优雅,代码可读性强
  • Auto.js Pro的命令库非常的丰富,接口比较多
  • Auto.js Pro脚本文件体积比较小。1000行的代码,打包后的apk文件只有3-5M,还没有广告

相关教程

Auto.js Pro安卓全分辨率免ROOT引流脚本开发教程

示例代码

 //此代码由飞云脚本圈整理提供(www.feiyunjs.com)
"ui";
//by Capricornus 
var title_text = "找字母游戏"
ui.layout(
    <vertical padding="10">
        <text name="title" color="black" size="30dp" layout_gravity="center" gravity="center" text="{{title_text}}"/>
        <View bg="#aa000000" h="1px" w="*"/>
        
        <grid name="letters_layout" id="letters" spanCount="4" layout_gravity="center" h="808px" w="808px">
            <card name="letter_card" w="200px" h="200px" margin="1px 1px 1px 1px" cardCornerRadius="5px" bg="#00ffffff">
                <text id="letter" color="#000000" size="40dp" layout_gravity="center" gravity="center" text="{{this}}"/>
                <img id="letter_mask" h="180px" w="180px" src="#33ffffff" layout_gravity="center"/>
            </card>
        </grid>
        <View bg="#aa000000" h="1px" w="*"/>
        
        <text name="start_button" id="start_button" gravity="center" layout_gravity="center" size="34dp" color="#88000000" text="开始游戏"/>
        
        <text name="letter_text" id="letter_text" gravity="center" layout_gravity="center" size="280dp" color="#99000000" text="?"/>
    </vertical>
)

isBegin = false

var letters_array = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]

ui.start_button.on("click", () => {
    if (ui.start_button.getText() == "开始游戏") {
        startGame()
        ui.start_button.setText("重新开始")
    } else {
        terminateGame()
        ui.start_button.setText("开始游戏")
    }
})

function isInclude(array, item) {
    for (i = 0; i < array.length; i++) {
        if (array[i] == item) {
            return true
        }
    }
    return false
}

ui.letters.on("item_bind", function(itemView, itemHolder) {
    itemView.letter.on("click", function(v) {
        if (isBegin) {
            if (v.getText() == thisLetter) {
                ui.start_button.setText("?找到了!")
                ui.letters.setBackgroundColor(colors.parseColor("#ffffff"))
            } else {
                ui.start_button.setText("?找错了!")
                ui.letters.setBackgroundColor(colors.parseColor("#ffffff"))
            }
            isBegin = false
            threads.start(function() {
                sleep(5000)
                ui.run(() => {
                    ui.start_button.setText("开始游戏")
                })
                terminateGame()
            })
        }
    })

})


function startGame() {
    threads.start(function() {
        ui.run(() => {
            ui.start_button.setText("5秒后翻牌")
        })
        var lucky_num = random(0, 25)
        //生成letter_text的letter
        thisLetter = letters_array[lucky_num]
        //生成所有letter_card的letter
        var letter_card_num = 0
        var letter_cardItem_array = []
        while (letter_card_num < 16) {
            var lucky_num_letter = random(0, 25)
            if (letters_array[lucky_num_letter] != thisLetter && isInclude(letter_cardItem_array, letters_array[lucky_num_letter]) == false) {
                letter_cardItem_array.push(letters_array[lucky_num_letter])
                letter_card_num++
            }
        }
        //插入letter
        letter_cardItem_array[random(0,15)]=thisLetter
        
        ui.run(() => {
            ui.letters.setDataSource(letter_cardItem_array)

        })
        sleep(5000)
        ui.run(() => {
            ui.letters.setBackgroundColor(colors.parseColor("#000000"))
            ui.letter_text.setText(thisLetter)
            ui.start_button.setText("请找出以下字母")
        })

        isBegin = true
    })
}

function terminateGame() {
    ui.run(()=>{
    ui.letters.setDataSource([])
    ui.letter_text.setText("?")
    })
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值