【ModPE】太守的ModPE教程Ⅱ(入门/微进阶)
第四节:变量
变量这个概念我们已经在之前说过了,就是一个在游戏里会变化的量,如果忘了自行看前面的教程。
某些时候,我们需要用到定义变量,这是十分常用的。
var a=1
上面是一个定义变量的例子,var+变量名+值。这个值可以是布尔值,可以是数字,可以是字符串,变量名可以是中文,可以自定义变量名。你可以把它当做数学里的设x
变量这个概念我们已经在之前说过了,就是一个在游戏里会变化的量,如果忘了自行看前面的教程。
某些时候,我们需要用到定义变量,这是十分常用的。
var a=1
上面是一个定义变量的例子,var+变量名+值。这个值可以是布尔值,可以是数字,可以是字符串,变量名可以是中文,可以自定义变量名。你可以把它当做数学里的设x
注意:
1.var的后面的变量名字可以随意填写,但是为了方便你自己纠错和别人的解读,我的建议是取个和变量所用的地方有关的名字。
2.你可以在创造变量的时候顺便给变量赋值,例如
var a=1;
var b="lzSB";
var c=true;
值得注意的是如果你要输入字符(文字),就要用""来包括它,至于为什么var c=true不用,那是因为这是布尔值。
3.一个var可以申请多个变量,如:
var a,b,c;
也可以同时赋值如var a=1,b=2,c=3;注意的是变量中间用,隔开。
4.变量虽说可以任意填写,但是实际还是有一些命名规则的:
(1)变量必须以字母开头
(2)变量也能以 $ 和 _ 符号开头(不推荐)
(3)变量名称分大小写。(x≠X)
1.var的后面的变量名字可以随意填写,但是为了方便你自己纠错和别人的解读,我的建议是取个和变量所用的地方有关的名字。
2.你可以在创造变量的时候顺便给变量赋值,例如
var a=1;
var b="lzSB";
var c=true;
值得注意的是如果你要输入字符(文字),就要用""来包括它,至于为什么var c=true不用,那是因为这是布尔值。
3.一个var可以申请多个变量,如:
var a,b,c;
也可以同时赋值如var a=1,b=2,c=3;注意的是变量中间用,隔开。
4.变量虽说可以任意填写,但是实际还是有一些命名规则的:
(1)变量必须以字母开头
(2)变量也能以 $ 和 _ 符号开头(不推荐)
(3)变量名称分大小写。(x≠X)
那么,变量有什么用呢?
比如说你要print一串字符串,你懒得复制粘贴而一个一个打又太麻烦,这时候你可以这样。
比如说“1234567”这个字符串:
var a=1234567
print(a)
这样载入,你会发现,输出的仍然是1234567。
这个a不需要带上双引号,因为它是变量而不是字符串。如果带上了双引号,它输出的就是a这个字符串而不是1234567。
一般来说,变量名我们会把它定义成这个变量本身的意义,方便记忆也方便调用。比如说铁剑点地的爆炸范围可以写成expr(explode r),r就是半径。
还记得那个
explode(x,y,z,3)
吗?
如果要2倍爆炸,该怎么样呢?直接改成6吗?
这样也未尝不可,但是如果爆炸半径是一个不便于口算的数字,你就会浪费很多时间。如果2倍爆炸,可以:
var expr=3
function useItem(x,y,z,itemId,blockId){
if(itemId==){
explode(x,y,z,2*expr);
}
}
比如说你要print一串字符串,你懒得复制粘贴而一个一个打又太麻烦,这时候你可以这样。
比如说“1234567”这个字符串:
var a=1234567
print(a)
这样载入,你会发现,输出的仍然是1234567。
这个a不需要带上双引号,因为它是变量而不是字符串。如果带上了双引号,它输出的就是a这个字符串而不是1234567。
一般来说,变量名我们会把它定义成这个变量本身的意义,方便记忆也方便调用。比如说铁剑点地的爆炸范围可以写成expr(explode r),r就是半径。
还记得那个
explode(x,y,z,3)
吗?
如果要2倍爆炸,该怎么样呢?直接改成6吗?
这样也未尝不可,但是如果爆炸半径是一个不便于口算的数字,你就会浪费很多时间。如果2倍爆炸,可以:
var expr=3
function useItem(x,y,z,itemId,blockId){
if(itemId==){
explode(x,y,z,2*expr);
}
}
这里我们就又涉及到了一个知识点,就是运算。
变量之间是可以运算的:
var a=1
var b=5
print(b-a)
这样你载入后会发现,输出的是4!
常用的加减乘除运算都是可以的。前提是必须是英文输入法。
乘的符号是*,除则是/,加减就不用我说了吧?
你已经成功理解了变量,本节结束。
值得一提的是,变量名不能是关键字。本教程后附关键字表(来自百度)
变量之间是可以运算的:
var a=1
var b=5
print(b-a)
这样你载入后会发现,输出的是4!
常用的加减乘除运算都是可以的。前提是必须是英文输入法。
乘的符号是*,除则是/,加减就不用我说了吧?
你已经成功理解了变量,本节结束。
值得一提的是,变量名不能是关键字。本教程后附关键字表(来自百度)
第五节 数组
在某些时候,我们需要用到数组。
下面是一个例子:
var a=1;
var b=2;
var c=3;
print(a);
print(b);
print(c);
这样会输出什么呢?
它会连续弹出三个浮动框,内容分别为1,2,3。
虽说这样也可以,但是有很多弊端:
1.占用内存太大,一个整数几乎占4MB。
2.太麻烦。
这时候我们就需要用到数组。
下面是一个例子:
var woc=[1,2,3];
print(woc[0]);
print(woc[1]);
print(woc[2]);
这样输出的仍然是1,2,3。
在某些时候,我们需要用到数组。
下面是一个例子:
var a=1;
var b=2;
var c=3;
print(a);
print(b);
print(c);
这样会输出什么呢?
它会连续弹出三个浮动框,内容分别为1,2,3。
虽说这样也可以,但是有很多弊端:
1.占用内存太大,一个整数几乎占4MB。
2.太麻烦。
这时候我们就需要用到数组。
下面是一个例子:
var woc=[1,2,3];
print(woc[0]);
print(woc[1]);
print(woc[2]);
这样输出的仍然是1,2,3。
下面我们来剖析一下上面那个例子:
第一行给一个名为woc的数组赋值,用[ ]括起来,每个值用英文输入法的逗号隔开。
如果要输出,就以:
数组名[索引]
的形式输出。
第一个值的索引是0,第二个是1,第三个是2,以此类推。
如果没有说明要输出数组里的哪个值(也就是没加索引),就会直接输出整个数组。比如说:
var hhh=[1,2,3]
print(hhh)
输出之后就是1,2,3。
第一行给一个名为woc的数组赋值,用[ ]括起来,每个值用英文输入法的逗号隔开。
如果要输出,就以:
数组名[索引]
的形式输出。
第一个值的索引是0,第二个是1,第三个是2,以此类推。
如果没有说明要输出数组里的哪个值(也就是没加索引),就会直接输出整个数组。比如说:
var hhh=[1,2,3]
print(hhh)
输出之后就是1,2,3。
关于数组还有两个方法比较常用,就是push和length。push起到扩张数组的作用,length则是读取数组的大小。
下面是一个例子:
var qwq=[]
qwq.push(1)
print(qwq.length)
print(qwq)
这样输出的则是1,1。
如果没有理解,没关系,暂时不会用到。
下面是一个例子:
var qwq=[]
qwq.push(1)
print(qwq.length)
print(qwq)
这样输出的则是1,1。
如果没有理解,没关系,暂时不会用到。
对push和length没兴趣就跳过本层。
一般来说,我们是定义一个数组之后再用push给它赋值。下面是一个例子:
var interesting=[]
print(interesting);
interesting.push(1);
interesting.push(2);
interesting.push(3);
print(interesting);
首先第一行定义了一个名字叫“interesting”的空数组。
那么第二行print之后会输出什么?
答案是什么也不输出,不理解可以载入试试看。
第三行用push给空数组添加值,用法为:
数组名.push(添加的值);
当这三个值添加了之后,再次print这个数组,会输出1,2,3,因为没有索引,所以输出的是整个数组。
length则是读取数组的长度。
举个栗子:
var exciting=[1,2,3,4]
print(exciting.length);
会输出4。因为这个数组有四个值,也就是说它的长度是4。所以print(exciting.length)输出的是4~
一般来说,我们是定义一个数组之后再用push给它赋值。下面是一个例子:
var interesting=[]
print(interesting);
interesting.push(1);
interesting.push(2);
interesting.push(3);
print(interesting);
首先第一行定义了一个名字叫“interesting”的空数组。
那么第二行print之后会输出什么?
答案是什么也不输出,不理解可以载入试试看。
第三行用push给空数组添加值,用法为:
数组名.push(添加的值);
当这三个值添加了之后,再次print这个数组,会输出1,2,3,因为没有索引,所以输出的是整个数组。
length则是读取数组的长度。
举个栗子:
var exciting=[1,2,3,4]
print(exciting.length);
会输出4。因为这个数组有四个值,也就是说它的长度是4。所以print(exciting.length)输出的是4~
第六节 修改变量
关于变量,既然它的名字是“变量”,自然是会变的一个值,它和常量的区别就在于他可以修改。
下面是一个例子:
var a=1;
print(a);
a=2;
print(a);
第一行给一个名为a的变量赋值为1,第二行print,这样就会输出1。
第三行就是修改变量~用法:
变量名=值
第四行再次print,你会发现,这次输出的是2。
js的一个方便的地方就是可以直接给变量赋值,不需要事先声明。比如:
a=3;
print(a);
仍然会输出3。
关于变量,既然它的名字是“变量”,自然是会变的一个值,它和常量的区别就在于他可以修改。
下面是一个例子:
var a=1;
print(a);
a=2;
print(a);
第一行给一个名为a的变量赋值为1,第二行print,这样就会输出1。
第三行就是修改变量~用法:
变量名=值
第四行再次print,你会发现,这次输出的是2。
js的一个方便的地方就是可以直接给变量赋值,不需要事先声明。比如:
a=3;
print(a);
仍然会输出3。
常量这里提一下,就是一个不能变化的量。
定义一个新的常量:
const 常量名=值
下面是一个例子:
const a=1
print(a)
a=3
print(a)
输出后你会发现,输出的并不是1,3。而是1,1。因为常量是不能修改的。
你已经理解了变量与常量,并且学会了修改它们,本节结束。
定义一个新的常量:
const 常量名=值
下面是一个例子:
const a=1
print(a)
a=3
print(a)
输出后你会发现,输出的并不是1,3。而是1,1。因为常量是不能修改的。
你已经理解了变量与常量,并且学会了修改它们,本节结束。
第七节 条件分歧
本节我们来学习条件分歧。
首先,条件分歧是什么?
通俗来说,就是“如果...那么...”,有多种可能性。
比如说:如果太守懒癌犯了,就不会更新教程了
这里面的“太守懒癌犯了”是个不确定事件,也就是说还有其他的可能性。ModPE里我们经常会用到,之前铁剑点地爆炸的时候我们就提到过。它的格式是:
if(){}
当满足( )里的条件时,执行{ }里的事件。
本节我们来学习条件分歧。
首先,条件分歧是什么?
通俗来说,就是“如果...那么...”,有多种可能性。
比如说:如果太守懒癌犯了,就不会更新教程了
这里面的“太守懒癌犯了”是个不确定事件,也就是说还有其他的可能性。ModPE里我们经常会用到,之前铁剑点地爆炸的时候我们就提到过。它的格式是:
if(){}
当满足( )里的条件时,执行{ }里的事件。
下面是一个实际操作的例子:
var a=1
if(a=3){
print("a等于3")
}
猜猜看,它会输出什么?
A.a等于3
B.什么都不输出。
把它试着载入,验证你的想法。
没错,因为只有a=3时才会输出字符串,可a的值是1,所以它什么也不会输出!
var a=1
if(a=3){
print("a等于3")
}
猜猜看,它会输出什么?
A.a等于3
B.什么都不输出。
把它试着载入,验证你的想法。
没错,因为只有a=3时才会输出字符串,可a的值是1,所以它什么也不会输出!
细说就是:
if(条件){事件}
判断条件后会返回一个布尔值,true或false。满足则会输出true,不满足则是false。当输出为true时,执行事件。
这时就涉及到了条件运算符。条件运算符前后可以填两个值,判断两个值的关系:
==:判断两个值是否相等。前面已经提到过,这里不再多说。
===:判断两个值是否绝对相等。它和==的区别就在于,==不会分辨String字符串和Number。例如:
1=="1"
这样会返回true。而
1==="1"
返回的是false,因为前者是number数字,后者是string字符串。
!==:判断两边是否不相等。
>:判断左边的值是否大于右边的值;<同理。
!>:不大于
!<:不小于
>=:大于等于
<=:小于等于
它们运算出来的结果都会返回一个Boolean布尔值。
你已经理解了条件分歧及其意义,本节结束。
if(条件){事件}
判断条件后会返回一个布尔值,true或false。满足则会输出true,不满足则是false。当输出为true时,执行事件。
这时就涉及到了条件运算符。条件运算符前后可以填两个值,判断两个值的关系:
==:判断两个值是否相等。前面已经提到过,这里不再多说。
===:判断两个值是否绝对相等。它和==的区别就在于,==不会分辨String字符串和Number。例如:
1=="1"
这样会返回true。而
1==="1"
返回的是false,因为前者是number数字,后者是string字符串。
!==:判断两边是否不相等。
>:判断左边的值是否大于右边的值;<同理。
!>:不大于
!<:不小于
>=:大于等于
<=:小于等于
它们运算出来的结果都会返回一个Boolean布尔值。
你已经理解了条件分歧及其意义,本节结束。
第八节 注释
在编写js时,我们应该在其中添加一点注释。
写js前很多人都认为写注释是做一件无意义而且浪费时间的事情。但是当他们重构的时候,会发现他们不知道这段代码当时他们为什么要写!
来做个解释吧,生活中我们很多时候都会忽然忘了某件事,但是仅需一点提醒,立刻想法就如潮水一般涌来!
而注释就起到提醒的作用。哪怕你忘了当时为什么要写这段代码,看到注释就会想起来!
单行注释,一般用//。如:
//我是注释
注释是不会被执行的!它会被直接跳过,因为它的作用只是提醒你!
下面是一个例子:
function useItem(x,y,z,itemId,blockId){
if(itemId==267){//如果物品ID为267
explode(x,y,z,3);//爆炸
}
}
载入后仍然会铁剑点地爆炸!因为注释不会执行。
多行注释(带回车键(就是换行键))需要:
/*233
我
是
注
释
233*/
/*为开始,*/为结束。
一个优秀的js,应该1/3左右的代码都是注释ヽ(゚∀゚)ノ
你已经学会了运用注释,本节结束!
在编写js时,我们应该在其中添加一点注释。
写js前很多人都认为写注释是做一件无意义而且浪费时间的事情。但是当他们重构的时候,会发现他们不知道这段代码当时他们为什么要写!
来做个解释吧,生活中我们很多时候都会忽然忘了某件事,但是仅需一点提醒,立刻想法就如潮水一般涌来!
而注释就起到提醒的作用。哪怕你忘了当时为什么要写这段代码,看到注释就会想起来!
单行注释,一般用//。如:
//我是注释
注释是不会被执行的!它会被直接跳过,因为它的作用只是提醒你!
下面是一个例子:
function useItem(x,y,z,itemId,blockId){
if(itemId==267){//如果物品ID为267
explode(x,y,z,3);//爆炸
}
}
载入后仍然会铁剑点地爆炸!因为注释不会执行。
多行注释(带回车键(就是换行键))需要:
/*233
我
是
注
释
233*/
/*为开始,*/为结束。
一个优秀的js,应该1/3左右的代码都是注释ヽ(゚∀゚)ノ
你已经学会了运用注释,本节结束!
第九节 条件分歧Ⅱ
本节你将会学习三种控制if的符号。
它们分别是:&& || !
它们和之前学习的条件分歧运算符相似。
首先我们来看看&&这个符号。
它的意思是“而且”。
本节你将会学习三种控制if的符号。
它们分别是:&& || !
它们和之前学习的条件分歧运算符相似。
首先我们来看看&&这个符号。
它的意思是“而且”。
举个栗子:
var a=10
if(a<=10&&a>=10){
print("interesting");
}
首先10大于等于10且小于等于10,所以&&两边的都满足条件。
这样说,
var a=10
if(a<=10而且a>=10){
print("interesting");
}
这样是不是就能看懂了?
var a=10
if(a<=10&&a>=10){
print("interesting");
}
首先10大于等于10且小于等于10,所以&&两边的都满足条件。
这样说,
var a=10
if(a<=10而且a>=10){
print("interesting");
}
这样是不是就能看懂了?
细说就是:
布尔值1&&布尔值2
上次我们已经说过,条件分歧运算符(也就是==,<=,>=什么的)会返回一个布尔值,true或false。
只有两边都是true,{}里才会执行。就算只有一个是false,它也不会被执行。
再来说说||,他的意思是“或者”。也就是说只要两边有一个是true,那么它输出的就是true。
举个栗子:
var a=10
if(a==10||a>10){
print("我会被执行");
}
||左边满足,所以会输出true。右边不满足,会输出false。再试着把||换成“或者”,一样能看懂。
var a=10
if(a==10或者a>10){
print("我会被执行");
}
是不是豁然开朗?
最后就是!,他的意思是“不是”。如果为true则输出false,否则就是true。
布尔值1&&布尔值2
上次我们已经说过,条件分歧运算符(也就是==,<=,>=什么的)会返回一个布尔值,true或false。
只有两边都是true,{}里才会执行。就算只有一个是false,它也不会被执行。
再来说说||,他的意思是“或者”。也就是说只要两边有一个是true,那么它输出的就是true。
举个栗子:
var a=10
if(a==10||a>10){
print("我会被执行");
}
||左边满足,所以会输出true。右边不满足,会输出false。再试着把||换成“或者”,一样能看懂。
var a=10
if(a==10或者a>10){
print("我会被执行");
}
是不是豁然开朗?
最后就是!,他的意思是“不是”。如果为true则输出false,否则就是true。
第十节 数据的计算
首先,我们来看看下面的一个例子:
var a=1;
print(a);
第一行变量a被赋值1,第二行print。这个很简单,不必多说。
如果要执行两次,一次输出1,一次输出2,要怎么办呢?
可能各位会先想到再声明一个新的变量,这样未尝不可,但是有其他的办法。这里就引入了计算这个概念。
首先,我们来看看下面的一个例子:
var a=1;
print(a);
第一行变量a被赋值1,第二行print。这个很简单,不必多说。
如果要执行两次,一次输出1,一次输出2,要怎么办呢?
可能各位会先想到再声明一个新的变量,这样未尝不可,但是有其他的办法。这里就引入了计算这个概念。
我们可以:
var a=1;
print(a);
a+=1
print(a);
第一行给a赋值为1,第二行print,会输出1。
第三行是自加,也就是说执行到这里a的会加上+=后面的数。第四行再次print,就会输出自加后的值:2。
自己动手实验一下,让输出三个值,第三次要加上5。
答案:
var a=1;
print(a);
a+=1
print(a);
a+=5
print(a);
如果只+1的话,可以这样写:
var a=1;
print(a);
a++;
print(a);
载入试试看。
没错,a++相当于a+=1。当然,a--也就相当于a-=1。
var a=1;
print(a);
a+=1
print(a);
第一行给a赋值为1,第二行print,会输出1。
第三行是自加,也就是说执行到这里a的会加上+=后面的数。第四行再次print,就会输出自加后的值:2。
自己动手实验一下,让输出三个值,第三次要加上5。
答案:
var a=1;
print(a);
a+=1
print(a);
a+=5
print(a);
如果只+1的话,可以这样写:
var a=1;
print(a);
a++;
print(a);
载入试试看。
没错,a++相当于a+=1。当然,a--也就相当于a-=1。