【ModPE】太守的ModPE教程Ⅱ(入门/微进阶)

第四节:变量

变量这个概念我们已经在之前说过了,就是一个在游戏里会变化的量,如果忘了自行看前面的教程。

某些时候,我们需要用到定义变量,这是十分常用的。

var a=1

上面是一个定义变量的例子,var+变量名+值。这个值可以是布尔值,可以是数字,可以是字符串,变量名可以是中文,可以自定义变量名。你可以把它当做数学里的设x

楼主 宇智波家老大  发布于 2016-03-20 15:15:00 +0800 CST  
注意:

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)

楼主 宇智波家老大  发布于 2016-03-20 15:15:00 +0800 CST  
那么,变量有什么用呢?

比如说你要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);
}
}

楼主 宇智波家老大  发布于 2016-03-20 15:16:00 +0800 CST  
这里我们就又涉及到了一个知识点,就是运算。

变量之间是可以运算的:

var a=1
var b=5
print(b-a)

这样你载入后会发现,输出的是4!

常用的加减乘除运算都是可以的。前提是必须是英文输入法。

乘的符号是*,除则是/,加减就不用我说了吧?

你已经成功理解了变量,本节结束。

值得一提的是,变量名不能是关键字。本教程后附关键字表(来自百度)

楼主 宇智波家老大  发布于 2016-03-20 15:16:00 +0800 CST  
第五节 数组
在某些时候,我们需要用到数组。

下面是一个例子:

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。

楼主 宇智波家老大  发布于 2016-03-20 15:16:00 +0800 CST  
下面我们来剖析一下上面那个例子:

第一行给一个名为woc的数组赋值,用[ ]括起来,每个值用英文输入法的逗号隔开。

如果要输出,就以:

数组名[索引]

的形式输出。

第一个值的索引是0,第二个是1,第三个是2,以此类推。

如果没有说明要输出数组里的哪个值(也就是没加索引),就会直接输出整个数组。比如说:

var hhh=[1,2,3]
print(hhh)

输出之后就是1,2,3。

楼主 宇智波家老大  发布于 2016-03-20 15:17:00 +0800 CST  
关于数组还有两个方法比较常用,就是push和length。push起到扩张数组的作用,length则是读取数组的大小。

下面是一个例子:

var qwq=[]
qwq.push(1)
print(qwq.length)
print(qwq)

这样输出的则是1,1。

如果没有理解,没关系,暂时不会用到。

楼主 宇智波家老大  发布于 2016-03-20 15:17:00 +0800 CST  
对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~

楼主 宇智波家老大  发布于 2016-03-20 15:18:00 +0800 CST  
第六节 修改变量

关于变量,既然它的名字是“变量”,自然是会变的一个值,它和常量的区别就在于他可以修改。

下面是一个例子:

var a=1;
print(a);
a=2;
print(a);

第一行给一个名为a的变量赋值为1,第二行print,这样就会输出1。

第三行就是修改变量~用法:
变量名=值
第四行再次print,你会发现,这次输出的是2。

js的一个方便的地方就是可以直接给变量赋值,不需要事先声明。比如:

a=3;
print(a);

仍然会输出3。

楼主 宇智波家老大  发布于 2016-03-20 15:18:00 +0800 CST  
常量这里提一下,就是一个不能变化的量。

定义一个新的常量:

const 常量名=值

下面是一个例子:

const a=1
print(a)
a=3
print(a)

输出后你会发现,输出的并不是1,3。而是1,1。因为常量是不能修改的。

你已经理解了变量与常量,并且学会了修改它们,本节结束。

楼主 宇智波家老大  发布于 2016-03-20 15:18:00 +0800 CST  
第七节 条件分歧

本节我们来学习条件分歧。

首先,条件分歧是什么?

通俗来说,就是“如果...那么...”,有多种可能性。

比如说:如果太守懒癌犯了,就不会更新教程了

这里面的“太守懒癌犯了”是个不确定事件,也就是说还有其他的可能性。ModPE里我们经常会用到,之前铁剑点地爆炸的时候我们就提到过。它的格式是:

if(){}

当满足( )里的条件时,执行{ }里的事件。

楼主 宇智波家老大  发布于 2016-03-20 15:19:00 +0800 CST  
下面是一个实际操作的例子:

var a=1
if(a=3){
print("a等于3")
}

猜猜看,它会输出什么?
A.a等于3
B.什么都不输出。

把它试着载入,验证你的想法。

没错,因为只有a=3时才会输出字符串,可a的值是1,所以它什么也不会输出!

楼主 宇智波家老大  发布于 2016-03-20 15:19:00 +0800 CST  
细说就是:
if(条件){事件}

判断条件后会返回一个布尔值,true或false。满足则会输出true,不满足则是false。当输出为true时,执行事件。

这时就涉及到了条件运算符。条件运算符前后可以填两个值,判断两个值的关系:

==:判断两个值是否相等。前面已经提到过,这里不再多说。

===:判断两个值是否绝对相等。它和==的区别就在于,==不会分辨String字符串和Number。例如:

1=="1"

这样会返回true。而

1==="1"

返回的是false,因为前者是number数字,后者是string字符串。

!==:判断两边是否不相等。

>:判断左边的值是否大于右边的值;<同理。

!>:不大于

!<:不小于

>=:大于等于

<=:小于等于

它们运算出来的结果都会返回一个Boolean布尔值。

你已经理解了条件分歧及其意义,本节结束。

楼主 宇智波家老大  发布于 2016-03-20 15:19:00 +0800 CST  
第八节 注释

在编写js时,我们应该在其中添加一点注释。

写js前很多人都认为写注释是做一件无意义而且浪费时间的事情。但是当他们重构的时候,会发现他们不知道这段代码当时他们为什么要写!

来做个解释吧,生活中我们很多时候都会忽然忘了某件事,但是仅需一点提醒,立刻想法就如潮水一般涌来!

而注释就起到提醒的作用。哪怕你忘了当时为什么要写这段代码,看到注释就会想起来!

单行注释,一般用//。如:

//我是注释

注释是不会被执行的!它会被直接跳过,因为它的作用只是提醒你!

下面是一个例子:

function useItem(x,y,z,itemId,blockId){
if(itemId==267){//如果物品ID为267
explode(x,y,z,3);//爆炸
}
}
载入后仍然会铁剑点地爆炸!因为注释不会执行。

多行注释(带回车键(就是换行键))需要:

/*233




233*/

/*为开始,*/为结束。

一个优秀的js,应该1/3左右的代码都是注释ヽ(゚∀゚)ノ

你已经学会了运用注释,本节结束!

楼主 宇智波家老大  发布于 2016-03-20 15:20:00 +0800 CST  
第九节 条件分歧Ⅱ

本节你将会学习三种控制if的符号。

它们分别是:&& || !

它们和之前学习的条件分歧运算符相似。

首先我们来看看&&这个符号。

它的意思是“而且”。

楼主 宇智波家老大  发布于 2016-03-20 15:21:00 +0800 CST  
举个栗子:

var a=10
if(a<=10&&a>=10){
print("interesting");
}

首先10大于等于10且小于等于10,所以&&两边的都满足条件。

这样说,
var a=10
if(a<=10而且a>=10){
print("interesting");
}

这样是不是就能看懂了?

楼主 宇智波家老大  发布于 2016-03-20 15:21:00 +0800 CST  
细说就是:

布尔值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。

楼主 宇智波家老大  发布于 2016-03-20 15:21:00 +0800 CST  
三个符号运算是分先后的。

当这三个符号同时出现时,先算||,再算&&,最后算!。

你已经学习了条件分歧的三种符号,本节结束。

楼主 宇智波家老大  发布于 2016-03-20 15:21:00 +0800 CST  
第十节 数据的计算

首先,我们来看看下面的一个例子:

var a=1;
print(a);

第一行变量a被赋值1,第二行print。这个很简单,不必多说。

如果要执行两次,一次输出1,一次输出2,要怎么办呢?

可能各位会先想到再声明一个新的变量,这样未尝不可,但是有其他的办法。这里就引入了计算这个概念。

楼主 宇智波家老大  发布于 2016-03-20 15:22:00 +0800 CST  
我们可以:

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。

楼主 宇智波家老大  发布于 2016-03-20 15:22:00 +0800 CST  

楼主:宇智波家老大

字数:13654

发表时间:2016-03-20 23:05:00 +0800 CST

更新时间:2016-08-28 12:44:41 +0800 CST

评论数:436条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看