Eps代码教程
简介
eps,即epScript的简写,我们可以使用任何文本编辑工具进行eps代码的编写(例如notepad++或Sublime Text)。
另一个很方便的地方在于,由于eps代码的语法和 Javascript语言非常相似,所以我们可以直接使用 Javascript语言的语法高亮规则。
epScript基础
基本语法
字母大小写
epScript对字母大小写是敏感的(严格区分字母大小写),也就是说,在输入语言的关键字、函数名、变量以及其他标识符时,都必须采用正确的大小写形式。例如,变量user与变量User是两个不同的变量。
空格与换行
在epScript 中会忽略程序中的空格、换行和制表符,除非这些符号是字符串的一部分。因此,可以在程序中随意使用这些特殊符号来进行排版,从而让代码更易于阅读和理解。
每行结尾的分号
epScript要求以分号(;)作为语句的结束标记,如果语句的结尾处没有分号,那么编译时就会报错。
注释
为程序添加注释可以起到以下两种作用:
1.可以解释程序某些语句的作用和功能,使程序更易于理解,通常用于代码的解释说明。
2.可以暂时屏蔽某些语句,使编译器忽略这些语句,等需要时再取消注释,这些语句就会发挥作用,通常用于代码的调试。
epScript 提供了两种注释符号,即「//」和「/*…*/」。其中,「//」用于单行注释;「/*…*/」用于多行注释。多行注释符号分为开始和结束两部分,即在输入注释内容前输入「/*」表示注释开始,在输入注释内容后输入「*/」表示注释结束。以下是单行注释和多行注释的示例:
//这是单行注释的例子
/*这是多行注释的第一行
这是多行注释的第二行
…
*/
/*这是多行注释在一行中应用的例子*/
数据类型
数值型
数值型(number)是epScript中最基本的数据类型。与其他游戏脚本设计语言(如魔兽3Jass和星际2Galaxy)中数值型不同的是,epScript 中的数值型只有整型数值,不支持浮点型数值(通俗来说就是小数)。epScript采用32位无符号整数表示数字,这意味着它能表示的最大值是4,294,967,295,最小值是0。
当一个数字直接出现在 epScript 程序中时,称之为数值直接量(numericliteral)。epScript 支持数值直接量的形式有几种,下面将对这几种形式进行详细介绍。
注意:在epScript中,任何数值直接量前加负号(-)不会真正地构成它的负数,而是通过补码机制转换为无符号范围内的数值。比如负数-1,实际存储的是其补码形式4294967295,其他负数如-2会存储为4294967294,依此类推。因此在某些计算,比如比较两个数大小时,有可能会出现违反数学逻辑的情况。例如-1 < 0 在epScript语言中结果为 false,因为 -1 被转换为 4294967295。
1.十进制
在epScript程序中,十进制的整数是一个由 0~9 的数字组成的数字序列。例如:
0
10
-3
123
2.十六进制
epScript 不但能够处理十进制的整型数据,还能识别十六进制(以16为基数)的数据。十六进制的数据是以 0x 开头,其后跟随十六进制的数字序列。十六进制的数字可以是 0~9 的某个数字,也可以是 A~F 的某个字母,用来表示 0~15(包括0和15)的某个值。例如:
0xFF
0x58A364
0x191943C8
3.二进制
除了十进制和十六进制,epScript也允许采用二进制(基数为2)的数据。二进制数据以0b开头,其后跟随数字0和1组成数字序列。例如:
0b1001
字符串型
字符串(String)是由 0 个或多个字符组成的序列,可以包含大小写字母、数字、标点符号和其他字符,也可以包含汉字。它是 epScript 用来表示文本的数据类型。程序中的字符串型数据是包含在单引号或双引号中的,例如:
"Hello World!"
'Protoss Nexus'
注意:包含字符串的引号必须匹配,如果字符串前面使用的是双引号,那么在字符串后面也必须使用双引号,使用单引号时亦如此。
有时候,字符串中使用的引号会产生匹配混乱的问题。例如:
"字符串是包含在单引号'或者双引号"中的"
对于这种情况,必须使用转义字符。epScript 中的转义字符以「\」开头,通过转义字符可以在字符串中添加不可显示的特殊字符,或者防止出现引号匹配混乱的问题。例如,字符串中的单引号可以使用\'来代替,双引号可以使用\"来代替,上述一行代码可以写成如下形式:
"字符串是包含在单引号\'或者双引号\"中的"
epScript中常用的转义字符及其描述如下表所示。
转义字符 | 描述 | 转义字符 | 描述 |
---|---|---|---|
\n | 换行符 | \t | 水平制表符 |
\\ | 反斜杠 | \xHH | 表示ASCII编码对应的那个字符 |
\' | 单引号 | \" | 双引号 |
例如,在printAll语句中使用转义字符\n的代码如下。
printAll("euddraft\nby\narmoha");
运行结果如下图所示。在图中可以看到,转义字符\n会产生换行。
布尔型
数值数据类型和字符串数据类型的值都无穷多,但是布尔数据类型只有两个值,即true(真)和false(假)。它说明了某个事物是真还是假。
布尔值通常在 epScript 程序中用来表示比较所得到的结果。例如:
n == 10
上述代码测试了变量 n 的值是否和数值 10 相等。如果相等,则比较的结果是布尔值 true;否则结果是false。
布尔值通常用于 epScript 的控制结构,通常将一个创建布尔值与使用这个比较的语句结合在一起,具体将在第三章中讲述。
常量和变量
常量
常量是指在程序运行过程中保持不变的数据。在epScript中,常量使用关键字const声明,语法格式如下:
const constant_name = value;
示例:
const UNIT_ARRAY_MAX_LENGTH = 1700;
关于常量的命名规则,请参考变量章节。
变量
变量是指程序中已经命名的存储单元,主要作用是为数据操作提供存储信息的容器。变量是相对常量而言的,常量是一个不会改变的固定值,而变量的值可能会随着地图的运行而改变。变量有两个基本特征,即变量名和变量值。为了便于理解,可以把变量看作一个贴着标签的盒子,标签上的名字就是这个变量的名字(即变量名),而盒子里面的东西就相当于变量的值。下面介绍变量的命名、变量的声明、变量的赋值以及变量的类型。
1.变量的命名
epScript中变量的命名规则如下。
①必须以字母或下画线开头,其他字符可以是数字、字母或下画线。
②变量名不能包含空格或加号、减号等符号。
③变量名是严格区分大小写的。
④不能使用epScript中的关键字作为变量名。epScript中的关键字如下表所示。
as | default | foreach | l2v | static |
break | epdswitch | function | list | switch |
case | else | if | object | var |
const | extends | import | once | VArray |
continue | for | Kills | return | while |
说明:epScript 关键字是指在 epScript 语言中有特定含义的,并成为 epScript 语法中一部分的那些字。epScript 关键字是不能作为变量名和函数名使用的,否则编译过程中会出现语法错误。
虽然 epScript 的变量可以任意命名(前提是遵守命名规则),但是在编程时,最好使用便于记忆且有意义的变量名称,以增加程序的可读性。
2.变量的声明
在epScript中,使用变量前需要先声明变量,所有的 epScript 变量都是由关键字 var 声明的,语法格式如下:
var variable_name;
其中 variablename 是声明的变量名。例如,声明一个变量player,代码如下:
var player;
另外,还可以使用一个关键字 var 同时声明多个变量,例如:
var txtPtr, btnPtr, btnPos, oldCP;
3.变量的赋值