欢迎光临散文网 会员登陆 & 注册

新元的无名杀扩展教程(一)技能_7数据类型及分析,运算

2022-10-22 12:21 作者:新元noname  | 我要投稿

前言

在前面的几期,我们已经了解诸多一般技能和特殊技能的格式,并知道了inherit继承标签的用法。我们在前面几期已经了解了在skill里面许多标签的代表的含义,现在我们来讲讲语法。


数据类型

一.基本数据类型

1.Boolean 布尔

布尔,它用于逻辑判断。有两种:真,即true,和假,即false

false和true与0和1对应着。


2.Number 数字

数字分为两种,一种为整数,一种浮点数。

整数不用提,可以是整数,负数,0

浮点数,可以理解为小数。但是,我们知道,电脑只能识别二进制的数字,如果是整数,那没有问题,如果是浮点数就会产生误差。假设我们有一个十进制数字1.1,我们现在用二进制转换器来实验它的结果:

二进制的1.1

我们再把它转化回来

转化回来的结果

所以,我们不能想当然地认为0.1+0.1就等于0.2,对于计算机来说,它就是个假命题。(虽然很诡异,要我们承认0.2≠0.2!)

我们也可以用科学记数法表示一个数字,比如,1e2就是1×10²,1e-2就是0.01(1×10^-2)。

此外,还有一些特殊的数字

Number.MAX_VALUE,这是最大的数字。

Number.MIN_VALUE,这是最接近0的数字。

Number.POSITIVE_INFINITY或者Infinity,这是无穷大

Number.NEGATIVE_INFINITY或者-Infinity,这是负无穷大

Number.NaN或者NaN,这是一个非数字。两个非数字并不相等。


3.String字符串

字符串,用""或''将字符引起来就叫字符串。

如"yiji"就是一个字符串,"你好呀"就是一个字符串。

一个字符串从一个"或'开始,直到下一个"或'结束。单引号双引号要统一。

要在一个字符串中用"或'请在前面加\比如"\"yiji\" "或者"\'yiji\' "


4.null 空

按字面意思理解就好,即空对象。


5.undefined 未定义

按字面意思理解就好,未定义的都叫undefined。比如你引用了一个不存在的技能,它的值就是undefined


以上为基本数据类型,除此之外,还有BigInt和Symbol数据类型,在这里不做介绍。

二.复杂数据类型

1.Object对象

我们把外面是{},里面是key:value形式,其中每个key:value以,相连,这就叫做object。

比如

{

key0:value0,

key1:value1,

key2:value2

}

这就叫一个object。

可以这么理解object对象。value是一个数据,而key是为它起的名字。

要注意的是,key是一个string字符串,但是可以省略引号。

调出其中的value值方法是:对象名[key值]

比如,我将以上对象命名为object1,如果我要调出其中的value1值,我们就写成:

object1["key1"]

创建新的key:value对的方法为:对象名[创建的key值]=创建的value值

比如我们为object加一个key3:value3对,就写成:

object["key3"]=value3

这里的""双引号不能省略,以上的value3表示任意数据

2.Array数组

我们把外面是[],里面是任意一种数据的,叫做Array,比如

[0,

"三国杀",

true,

{

skill:"yiji"

},

[],

function(){}]

数据分项数,第一项就为0,第二项就为"三国杀",以此类推,等等

同样的,要调出其中任意一项就是:数组名[项数-1]

比如,我们将数组命名为Array1,要调出其中的第一项:

Array1[0]

数组也有一个属性,length,即它的总项数

还是这个Array,Array1.length就等于6

3.Function函数

function是一个放代码的地方,有需要时就会用到它。

可以这样创建一个函数

function(){}

大括号内就是填的你要放的代码。

我们要调用一个函数,就这样写:函数名()

比如我将以上函数命名为myFunction,

我要用时,就写:

myFunction()

小括号中,可以根据函数本身填上各种数据。比如:

myFunction(11,true,"你好")

这些填上的数据会交给其相应函数处理。

这些填上的数据的集合在处理时叫做arguments,其中第一项11为arguments[0],第二项true为arguments[1],"你好"为arguments[2],以此类推。

比如名为myFunction的存的代码是,小括号内填的内容不变:

game.print(arguments[0])

调用myFunction,在游戏的控制台那里可以看见,有一个数字就为11。

以上为对象类数据类型,除此之外,还有RegExp和Date等等,也不做介绍


skill数据

已经知道数据类型了,我们可以对skill的数据类型进行分析

任何技能都是一个object,而其key都是string,这都没什么好说的,重要的是value值。

trigger

trigger的value是一个object,其下的key为player,source,global等等,player,source,global等等的value值为array,array内每一项都为string

即:

trigger:{

player:["",""],

global:["",""],

source:["",""]

}

标签类

特殊技能标签的value都是布尔,

即:

forced:true,

limited:true,

juexingji:true,

zhuanhuanji:true,

zhuSkill:true,

dutySkill:true,

charlotte:true,

动画标签中,skillAnimation的value值是一个boolean布尔,animationColor的value值是一个string字符串

skillAnimation:true,

animationColor:"",

在标记标签中mark的value值是一个布尔boolean,marktext的value值是一个string字符串,intro的value值是一个object对象,其下的name的value值为string字符串,其下的content的value值为string字符串(或者function函数)


mark:true,

marktext:"",

intro:{

name:"",

content:"limited"

},

衍生技标签derivation,其value值是array数组,这个array的项皆为string字符串;技能组标签group,其value值是array数组,这个array的项皆为string字符串

derivation:["",""],

group:["",""],

继承标签inherit,其value值是string字符串

inherit:"",

子技能标签subSkill的value值是一个object,其下可以有任意个key,这些key对应的value值也都是object。

函数类

filter,init,content这些的value值都为function。我们已经讲过filter的arguments和init的arguments,这里不再多述。我们要说一下content。

content的function是无名杀独特写法,其有着一些独特的语法,这也是我们要了解的重点。

在content那里,我们不需要arguments,因为它的arguments中的项太多,发动技能的时候,就帮我们处理好了;在filter和init那里我们需要arguments,或者至少为arguments的项起名字。


player属性数据

我们讲一下player的属性,这里指的player就是某一场上角色

player是一个对象,叫元素对象(element)。

player.name1即角色的id,它是一个string字符串

player.identity即身份,它是一个string字符串

player.hp即体力值,显然的,它是一个number数字

player.maxHp即体力上限,同样的,它是一个number数字

player.hujia即护甲值,也是一个number数字

player.skills即技能,它是一个array,array的每一项都是技能的id,技能的id当然是string字符串

player.storage即储存空间,它是一个object。



计算

1.数字运算(结果为number)

四则运算算法不用多提,我们来说一下其运算符号:

加号:+

减号:-

乘号:*

除号:/

此外还有一个取余符号,它专门算余数。比如1/2的余数是1,进行运算后,表达式的值就为1

那么如何用表达式写呢?

写成这样

1%2

这就是取1/2的余数

此外,对于+1和-1,我们也有简便的写法,比如我们想让1加1,自然可以写

1+1

还可以写成

1++

对应的也有

1--

2.关系运算(结果为boolean)

>,<,==,===

>大于符号,它的运算结果是一个boolean布尔

比如

3>5

为假,它结果就是false

再如

4>3

为真,它的结果就是true


<小于同理


==等于

两边相等就为true,否则为false,比如

3==3

为true

此外,number数字和string字符串也可以相等,前提是string字符串里也为数字,比如

1=='1'

为真

特别的:

''==0

为真

number数字也可以和boolean布尔相等,比如

1==true

0==false

为真

string字符串也可以和boolean相等,比如

'1'==true

'0'==false

''==false

为真

特殊的:

undefined==null

为真


===严格等于

===严格等于,等式两边不仅值要一样,而且数据类型一样才为真。

1==='1'

为假

===严格等于比==等于更快,因为==还要进行数据转换。

3.逻辑运算(结果为boolean)

||,&&,!

||或,两边有一真为真,两边皆假为假。

&&且,两边有一假为假,两边皆真为真。

!非,可以使一个布尔值变为相反的

!!双重否定,可以将一个数据变为对应的布尔值。

新元的无名杀扩展教程(一)技能_7数据类型及分析,运算的评论 (共 条)

分享到微博请遵守国家法律