Jass基础教程Word文档格式.docx

上传人:b****6 文档编号:18851635 上传时间:2023-01-01 格式:DOCX 页数:18 大小:142.01KB
下载 相关 举报
Jass基础教程Word文档格式.docx_第1页
第1页 / 共18页
Jass基础教程Word文档格式.docx_第2页
第2页 / 共18页
Jass基础教程Word文档格式.docx_第3页
第3页 / 共18页
Jass基础教程Word文档格式.docx_第4页
第4页 / 共18页
Jass基础教程Word文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Jass基础教程Word文档格式.docx

《Jass基础教程Word文档格式.docx》由会员分享,可在线阅读,更多相关《Jass基础教程Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

Jass基础教程Word文档格式.docx

2.变量的声明

在变量使用前,必须在代码中进行声明,即创建该变量.

在GUI中,我们可以使用变量编辑器来声明新变量

在这里声明的变量,是全局变量,这也是唯一声明全局变量的方法(在仅使用WE的前提下).

所以我们这里暂时不讲全局变量的声明,只用知道声明全局变量就在变量编辑器中创建就可以了

注:

为了区分全局变量和局部变量的名字,GUI自动在所有变量编辑器设置的全局变量名的前面都加了udg_前缀,因此图中的变量名实际为udg_unitLife

局部变量的声明格式为local<

变量类型>

<

变量名>

变量类型是用来区分变量储存的数据类型,比如用于储存单位,就要使用单位unit

Jass中变量类型与WE中变量类型对照表见附录1

例:

localunittrigUnit

这样就声明了一个类型为单位的变量,变量名为trigUnit

另外变量的声明要求在所有其他动作的前面.例如:

localunitdmgUnit

<

动作>

localunittrigUnit

localunitdmgUnit

<

localunittargetUnit表达式执行的结果与变量类型要相同

例如声明一个变量trigUnit为触发单位

localunittrigUnit=GetTriggerUnit()

例如声明一个变量playerId为触发玩家索引号,另一个变量I为174(整数:

integer)

localintegerplayerId=GetConvertedPlayerId(GetTriggerPlayer())

localintegerI=174

3.变量的使用

声明完变量后,接下来就是如何使用变量的问题了.

对于任意变量通用的赋值操作符是“=”

它用于将后面的表达式计算后把结果赋予变量.

表达式得到的结果要求与变量类型相同

另外Jass要求,除初始化之外,对变量进行赋值时必须使用set关键字

格式为set<

=<

表达式>

例如:

localunittrigUnit

settrigUnit=GetTriggerUnit()

对于整数,实数来说,可以使用普通的计算符号来进行计算操作.

其中+-*/分别对应着加减乘除(另外–还表示负号)

例如

localintegera=1

seta=a+1

量操作举例:

变量的值互换

localintegera=3声明方法为local<

类型名>

array<

3为整数而”jass2”是字符串,这些实际上是一些常量

Jass中规定带小数点的为实数小数点前后如果为0则可以省略,例如下列是正确的小数写法

.1234170.

不能把一个实数直接赋予一个整数变量,例如下面的写法是错误的

localintegerid=123.是一个实数

setid=

例如整数可以转换为实数,实数转为字符串,等等.其函数名列举如下:

R2S

实数转字符串

localstrings=R2S

S2R

字符串转实数

localrealr=S2R(“1.200”)

I2S

整数转字符串

localstrings=I2S(123)

S2I

字符串转整数

localintegerI=S2I(“345”)

I2R

整数转实数

localintegerr=I2R(1234)

R2I

实数转整数

localintegerI=R2I

注:

整数转实数时.I2R可省略例:

localrealr=3(隐式转换)

在实数转整数时,小数点后的内容将被忽略例:

localintegerI=R2I

I的值将被设置为1

☆在计算时

如果同时出现实数和整数,那么结果为实数

localintegeri=3*

其中逻辑操作符可以对条件进行操作,用以判断全部条件成立或者任意条件成立等复合条件

分支语句

1.if语句

在Jass中判断条件的格式为

if<

条件表达式>

then

endif

其中条件表达式是结果为true(真)或false(假)的表达式,例如3>

5的结果为false(假),如果表达式的值为true,则做在if与endif之间的动作

式为:

动作1>

else

动作2>

当条件表达式的值为true时,执行动作1,当为false时执行动作2

请看下图的例子:

此触发器在游戏中显示:

a小于或等于b

a的值增加了3

a大于b

要注意的是与”大于”相反的是”小于或等于”

2.if-elseif语句

在if语句中,允许使用elseif来进一步进行条件的判断,格式如下

条件表达式1>

elseif<

条件表达式2>

等同于

if<

endif

要注意的是每一个if都要对应一个endif,但是elseif不用

3.if的嵌套

在if语句中,允许嵌套使用if,但要保证每个if都要有endif来配对

而且一个if语句不能分割其他的if语句

例如:

if5>

3then

if3>

2then

elseif3<

5then

if2>

10then

这样是可以的

但是如果像下面这样,可能就会达不到想要的结果

if2<

3then

这样人都看不懂--!

虽然没有语法错误.总之最好不要这样写啦..

注:

每一个if要与endif配套使用

if和elseif连接的条件表达式的最后要加then

逻辑操作符

逻辑操作符是对条件表达式进行操作的..也就是只能对true或false进行计算

逻辑操作符有3个,他们是andor和not

操作符

左边

右边

结果

and

true

false

or

not

-

true

简单的归纳为and为所有条件成立,or为任意条件成立,not是取反

例如:

ifnot(3>

5or(2>

1and5>

4))then

循环语句需要考虑的2个因素:

要哪些内容执行循环以及到什么时候循环停止

如果循环没有停止循环的条件,那么就会成为死循环(也就是永远到不了头),但是可以放心的一点是Jass中有操作数限制来避免死循环,当一个循环中操作数太大时,会自动中断循环,并且令动作中断.以防止死循环的发生.但我们仍要避免死循环..因为这会使循环体后的所有动作失效

循环语句的使用

循环语句的格式为

loop

exitwhen<

退出条件表达式>

endloop

其中exitwhen可以在任何地方,允许不加exitwhen或有多个exitwhen

循环体为loop与endloop之间的代码

当<

成立时,则退出循环,并继续执行endloop后的语句

请看下图例子:

此触发器将在游戏中显示

1

2

3

4

5

6

7

8

9

10

可以看到显示a的值被重复执行了10次,a的初始值为1,每次执行后都会加1,在a>

10也就是a等于11的时候循环结束

例2:

显示1-n的阶乘,并把它们储存在数组中

此触发器在游戏中显示为

1

2

6

24

120

720

5040

40320

362880

3628800

此触发的功能是显示从1到a_max的阶乘并把它们储存在数组中,这里a_max设置为10

(阶乘运算:

非负整数,0的阶乘是1,n的阶乘是1*2*3*….*(n-1)*n)

循环的嵌套

循环语句允许像if语句那样嵌套,要注意的是loop与endloop配对

请看下图例子:

3

4

9

循环的注意事项

循环需要注意的就是确保条件能够成立

loop

exitwhena>

endloop

在这个循环里,a>

10是不可能成立的,因为a的值始终是1,没有任何语句改变它.

四函数

将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是函数.

函数允许在调用时传递数据给函数体,然后可以返回一个数据给调用者.

我们平时用触发的时候,编辑各种触发动作,事实上也是在调用各个函数,GUI里的动作就是把经常用的一些功能封装起来,然后做成一条条的触发供我们使用

像触发单位,触发玩家等,这些动作,就是一些函数

localunitu=GetTriggerUnit()

所以我们无法在一个触发器动作里写函数(因为触发器动作本身就是一个函数)

编写函数的一般方法,是在地图的自定义脚本区或将触发器转为代码后编写(请温习前言部分Jass的基本使用方法).为了更直观,将在自定义脚本区编写Jass函数.

编写一个函数,要求得到两个整数的乘积

functionMtakesintegera,integerbreturnsinteger

returna*b

endfunction

因为整数与整数的乘积仍是整数,所以返回值为整数

return语句执行时,会先计算右边表达式的结果,然后返回该值

要注意的是区分return和returns,前者为返回(具体的值),后者为函数头中返回值类型

调用此函数来工作

首先将函数放到自定义代码区.

然后就可以在其他地方调用它了

需要注意的一点是,如果要调用函数,那么要保证该函数在调用者的前面

例如:

functionatakesnothingreturnsinteger

returnb()

过这些函数,我们可以对游戏进行操作.例如,创建单位,创建触发,设置单位生命,命令发布伤害等等.这些函数的大部分,已经被制作到了GUI中,我们可以使用动作,然后转换成代码来查看到这些函数的具体名字,当然最好的方法是下载Jass专用的编辑器.

使用CJ函数的方法与普通函数相同.例如

以上,就是JASS基础教程,所有JASS的基本语法已经包括在内.

由于编写仓促不免有疏漏,请与作者联系Email

 

五附录

附录一.关键字

typenativeglobalsendglobalslocalendfunctionfunctiontakesreturnsreturnsetcallendifelseififthenelseendlooploopexitwhenandornotarray

integerbooleanrealstringcodehandlenothingnullfalsetrueagenteventplayerwidgetunitdestructableitemabilitybuffforcegrouptriggertriggerconditiontriggeractiontimerlocationregionrectboolexprsoundconditionfuncfilterfuncunitpoolitempoolracealliancetyperacepreferencegamestateigamestatefgamestateplayerstateplayerscoreplayergameresultunitstateaidifficultyeventidgameeventplayereventplayeruniteventuniteventlimitopwidgeteventdialogeventunittypegamespeedgamedifficultygametypemapflagmapvisibilitymapsettingmapdensitymapcontrolplayerslotstatevolumegroupcamerafieldcamerasetupplayercolorplacementstartlocprioraritycontrolblendmodetexmapflagseffecteffecttypeweathereffectterraindeformationfogstatefogmodifierdialogbuttonquestquestitemdefeatconditiontimerdialogleaderboardmultiboardmultiboarditemtrackablegamecacheversionitemtypetexttagattacktypedamagetypeweapontypesoundtypelightningpathingtypeimageubersplathashtableconstant

附录二.WE与JASS变量类型对照

JASS变量名称GUITrigger变量名称说明

ability integer技能

aidifficulty integer对战AI难度

alliancetype integer盟友类型

attacktypeAttackType攻击类型

blendmode integer合成模式

booleanBoolean布尔

boolexpr integer布尔表达式

buff integer强化法术

buttonDialogButton对话框按钮

camerafield integer镜头区域

camerasetupCameraObject镜头物体

code integer程序代码

conditionfunc integer条件函数

defeatconditionDefeatCondition失败条件

destructableDestructible可破坏的

dialogDialog对话

dialogeventDialogButton对话事件

effectSpecialEffect特效

effecttype integer特效类型

event integer事件

eventid integer事件代码

fgamestate integer游戏状态(f)

filterfunc integer过滤函数

fogmodifierVisibilityModifier可见度

fogstateinteger可见状态

forcePlayerGroup玩者群组

gamecacheGameCache游戏暂存

gamedifficultyinteger游戏难度

gameevent integer游戏事件

gamespeedGameSpeed游戏速度

gamestate integer游戏状态

gametype integerv游戏类型

groupUnitGroup单位群组

handle integer句柄

igamestate integer游戏状态(I)

integerInteger整数

itemItem物品

itempool integer物品池

itemtypeItem-Class物品分类

leaderboardLeaderboard计分板

lightningLigntning线状特效

limitop integer比较

locationPoint点

mapcontrol integer玩家控制者

mapdensity integer地图密度

mapflag integer地图标记

mapsetting integer地图设置

mapvisibility integer地图可见性

multiboardMultiboard面板

multiboarditem integer面板项目

placement integer起始位置分布

playerPlayer玩者

playercolorPlayerColor玩者颜色

playerevent integer玩者事件

playergameresult integer玩者游戏结果

playerscore integer玩者得分

playerslotstate integer玩者槽状态

playerstate integer玩者属性

playerunitevent integer玩者单位事件

questQuest任务

questitemQuestRequirement任务要求

raceRace种族

racepreference integer种族优选

raritycontrol integer动画珍品

realReal实数

rectRegion矩形区域

region integer区域

soundSound音效

soundtypeSoundType声音类型

startlocprio integer起始位置优先权

stringString字符串

terraindeformationTerrainDeformation地形特效

texmapflags integer地图涂层标志

texttagFloatingText漂浮文字

timerTimer定时器

timerdialogTimerWindow定时器窗口

trackable integer可点选物件

triggerTrigger触发器

triggeraction integer触发器动作

triggercondition integer触发器条件

unitUnit单位

unitevent integer单位事件

unitpool integer单位池

unitstate integer单位属性

unittype integer单位分类

version integer版本

volumegroup integer音量频道

weapontypeCombatSound

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1