在听英语听力的时候对于英文的数字难以辨别,所以就想做一个这样的练习的app
01
界面设计
点击“生成”按钮,会随机产生一个英文数字的语音;
在编辑框中输入听到的英文的阿拉伯数字形式;
点击“确定”,判断是否正确;
02
“生成”按钮
在“生成”按钮的单机触屏事件内:
首先需要一个装有各种数字的数组;
一个随机数;
以随机数为索引读出数字;
大概会用到的代码:
sl()数据数组,用法:sl(要分割的字符串,分割用的字符,数组名);
sran()生成范围随机数,用法:sran(最小值,最大值,随机数变量);
sgsz()获取数组指定索引的数值,用法:sgsz(数组名,索引,存储返回值的变量),类似于c++中的:返回值变量=数组名[索引];
sgszl()获取数组元素个数,用法:sgszl(数组名,返回值变量);
tts()(text to sound)文本转语音;
ug()获取控件属性值,用法:ug(控件id,属性值名,属性值)
us()设置控件属性值,用法:us(控件id,属性值名,属性值)
首先我先试了一下tts(a,"en","3",1,1),生成的语音是阿拉伯数字的“3”而不是英文的three,所以不能直接用随机数来作为tts的参数,得用一个装着数字的英文的数组才行;
所以声明一个变量num1存储这些数字:
s num1="one;two;three;four;five;six;seven;eight;nine;ten;eleven;twelve;thirteen;fourteen;fifteen;sixteen;seventeen;eighteen;nineteen;twenty"
接着需要将它转换成数组num2:
sl(num1,";",num2)
由于我只是拿一到二十来测试,之后还要增加,所以再获取一下数组长度numc(number count):
sgszl(num2,numc)
由于需要在这个界面的其他控件上使用这个随机数来判断是否答案正确,所以生成的是“界面”随机数rnd:
sran(0,numc,ss.rnd)
不过这个随机数生成是包含上下限的,所以numc得在生成随机数前减去一(放在刚刚那一句上面):
s-(numc,1)
获取随机数对应的数组元素存到d中:
sgsz(num2,ss.rnd,d)
正确答案是rnd加上一:
s+(1,ss.rnd)
到这里就完成了生成部分。
03
“确定”按钮
“确定”按钮需要检测输入的数字是否和生成的数字一样。上面说到,阿拉伯数字答案存储在rnd当中,所以需要比对输入的数字和rnd:
//编辑框id是5
ug(5,"text",d)
f(d==ss.rnd)
{
tw("正确")
}
else
{
tw("错误")
}
也可以加上颜色变化:
ug(5,"text",d)
f(d==ss.rnd)
{
tw("正确")
us(5,"backgroundcolor","#ff00ff16")
}
else
{
tw("错误")
us(5,"backgroundcolor","#ffff0600")
}
//清空编辑框
us(5,"text","")
要注意的是:us()的属性值是字符串或者变量,不能直接写颜色值:us(5,"backgroundcolor",#ffff0600)
04
代码总览
05
收获
裕语言似乎不支持numc-1之类的表达式,直接写“sran(0,numc-1,ss.rnd)”是错误的,需要用s-语句将其减去一在将numc传入;
控件属性值得是变量或者字符串,不能是数字等;
裕语言变量可以直接在使用时就自动声明,不必显式声明,如ss.rnd;
欢迎大家加入尘世编程交流群哦!
虽然群主水平不高,但是希望可以和你们一起进步!
尘世编程交流群群号:466810006
iapp交流群群号:690582740
领取专属 10元无门槛券
私享最新 技术干货