什么?BI工具还能做游戏!

作者: 永洪科技  来源: 原创  时间:2019年12月17日

随着大数据分析应用不断发展

BI已经渗透到各行各业

而提到BI工具能做什么

大家首先想到的肯定是这样的分析报告

这样的炫酷大屏

还有中国式复杂报表

或者移动端报告

BI经常用来做大数据分析,处理TB、PB级数据秒级响应。可是,你能想到吗?BI工具居然可以做游戏。让我们来欣赏一下这一款经典重置版游戏,它就是YonghongBI版贪吃蛇。

有没有迫不及待想玩一把,下面就跟随我们先来体验一下。

这次发挥不佳,重来一次。

好吧,说了这么多,玩了这么多,这款游戏是怎么用BI工具做出来的呢?这一切要归功于YonghongBI支持强大的JS脚本,基于JS脚本可以做到很多复杂功能,达到超出预期的体验效果。让我们看一下YonghongBI版贪吃蛇写了多少代码。

上滑查看全部内容
if(param['times']==1){ //控制第一次进入报表不执行动态操作
param['pause']='f'
param['start']='f'
param['times']+=1
组1.visible = false
}
score.data = param['score'] //得分文本框显示实时分数值
high_score.data=param['high_score'] //最高分文本框显示最高分数值
var color = new Color(6,169,190) //定义蛇身蓝色
color_str = toString(color)
var color2 = new Color(java.awt.Color.WHITE) //定义其他区域白色
var color3 = new Color(java.awt.Color.RED) //定义食物点为红色
var c3 = ''+param['eat_j']+','+param['eat_i']
var loc3 = new Locator([c3],CELL,DETAIL);
table1.setBackground(loc3,color3);
if(param['restart']=='y'||param['restart']=='n'){
snake = param['snake'].split('|')
for(i=0;i<snake.length;i++){
c = snake[i]
loc = new Locator([c],CELL,DETAIL);
table1.setBackground(loc,color2)
}
var c3 = ''+param['eat_j']+','+param['eat_i']
var loc3 = new Locator([c3],CELL,DETAIL);
table1.setBackground(loc3,color2);
param['eat_i']=7
param['eat_j']=7
param['snake']='0,0'
param['i']=0
param['j']=0
}
if(param['restart']=='y'){
param['score']=0
param['start']='t'
}
if(param['restart']=='n'){
param['score']=0
param['start']='f'
}
param['restart']=null
if(param['start']=='t'){ //主程序
snake = param['snake'].split('|')
if(param['direct']=='r'){ 
param['i']+=1
}
if(param['direct']=='l'){
param['i']-=1
}
if(param['direct']=='d'){
param['j']+=1
}
if(param['direct']=='u'){
param['j']-=1
}
var c = ""+ param['j']+','+param['i']; 
var loc = new Locator([c],CELL,DETAIL)
flag = false
//判断蛇有没有撞到自己,循环版
/* for(i=0;i<snake.length;i++){
if(c===snake[i]){
flag=true
}
} */
//判断蛇有没有撞到自己优化:判断前方位置背景颜色是不是蛇身颜色
color_str2 = toString(table1.getBackground(loc))
if(color_str==color_str2){
flag = true
}
//如果i/j超限制,或撞到自己 则失败
if(param['i']>14||param['j']>14||param['i']<0||param['j']<0||flag==true)
{
组1.visible = true
param['start']='f'
param['pause']='f'
if(param['high_score']<param['score']){ //最高分小于得分,更新最高分数值
param['high_score']=param['score']
}
}
else
{
//var loc = new Locator([c],CELL,DETAIL)
table1.setBackground(loc,color)
lastone = snake.shift()
var last_loc = new Locator([lastone],CELL,DETAIL)
table1.setBackground(last_loc,color2)
if(param['i']==param['eat_i']&&param['j']==param['eat_j']){
param['score']+=1
snake.unshift('-1,-1') //加入一个无效位置,不消掉吃的点位,制造延长蛇身的效果
//取一个新的食物点位,用背景色字符串,循环保证点位不出现在蛇身上
while (true) {
param['eat_i']=randbetween(0,15)
param['eat_j']=randbetween(0,15)
eat_point = ''+param['eat_j']+','+param['eat_i']
loc_eat = new Locator([eat_point],CELL,DETAIL)
eat_backgroud_str = toString(table1.getBackground(loc_eat))
if(eat_backgroud_str != color_str){
break
}
}
}
snake.push(c)
param['snake']=snake.join('|')
}
}
对,只用了这么多代码就完成了一个游戏开发。如果你还是觉得代码太多了,没问题。YonghongBI的函数都可以支持封装,常用的函数封装好之后分析人员只需要去调用就行,所以只需要调用一行代码就可以了。

 

那YonghongBI的JS脚本是怎么用的呢?在制作报告页面,点击【更多】-【脚本】,这样就进入编辑页面了。

进入编辑页面后,脚本分为装载时运行变化时运行,装载时运行是报表打开时执行,而变化时运行则是报表页面有变化才执行。

这里需要说的是,许多仪表盘环境需要动态定制仪表盘和实现自定义业务逻辑。这些需求包含从创建查询字段到建立脚本查询,从修改文本颜色到控制用户交互行为,从添加计算器到控制表格渲染等。而YonghongZ-Suite有一套完整的脚本环境体系,以支持用户的各种动态需求脚本体系是YonghongZ-Suite 产品中使用面较广的功能, 可以让用户自己定制化一些高级需求, 这也是决定产品是否强大的一个重要模块。脚本系统是通过javascript的语言标准来支持的,脚本环境可以完全访问组件的绑定、属性以及数据的输入。可以在仪表盘初始化的时候执行任务,处理用户交互行为。

不仅如此,YonghongBI强大的脚本还可以实现多种动态效果,例如提示框的轮播。

看了这么多,想不想自己玩一下呢。关注我们的官方微信【永洪科技】,回复关键词【贪吃蛇】,即可获得贪吃蛇原版Demo,下载后自行安装,就可以感受YonghongBI脚本强大的魅力了。

 

版权声明

 

永洪BI
更敏捷、更快速、更强大

申请试用
Copyright © 2012-2020 北京永洪商智科技有限公司
京ICP备12050607号 京公网安备110110802011451号