青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 505  文章 - 1034  trackbacks - 0
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567


子曾經曰過:編程無他,唯手熟爾!

常用鏈接

留言簿(94)

隨筆分類(649)

隨筆檔案(505)

相冊

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

積分與排名

  • 積分 - 918617
  • 排名 - 14

最新隨筆

最新評論

閱讀排行榜

評論排行榜


好亞論壇上search下“jass”,能看到不少好文章。

[圖文][WE JASS] 《jass使用教程·基礎篇》

前言 jass語言概述
0. 教程對象
本教程適用于沒有接觸過計算機語言的人。由于jass非常簡單,所以對學過一種中高級語言的人完全沒有難度,而本教程對j語言的各部分都介紹的比較詳細, 所以沒有必要學。如果只會用行號的basic(不包括vb、vbscript、ASP)的話,那還是看看這篇教程吧(不過可以略過很多部分)。
如果是完全沒有接觸過編程的話,建議第一遍通讀,大體掌握jass語言的結構,然后再由基礎到高級一步步的提高。
基礎篇是對于語言的基本結構的介紹,首先要掌握好里面的關鍵部分,打好這個基礎后,可以跟隨高級篇里面的范例一步步的學jass的應用。
1. jass的特點
jass語言是一個語法非常簡單的語言,語法結構上比較接近basic,同時也引用了許多c的東西。
2. 如何學習和使用jass
在trigger editor窗口中,我們可以很容易的把一個t轉成j,方法是Edit(alt+e)-&gt;Conver to Custom Text(x),然后我們就可以在已有的j的基礎上進行編輯。
由于we里的文本編輯器功能不夠豐富,另外,we的容錯機制比較差(j的錯誤太多容易導致直接關閉),所以這里推薦兩個專門用于jass編輯的工具: jass editor(漢化版)和jass workshop(by soarchin)。兩個工具各有各的特點,后面會在涉及到的部分提到。
另外還需要得到cj和bj兩個接口函數庫,這個在je和jw中均有提供
3. jass和trigger的關系
在地圖編輯過程中,絕大多數用j能夠完成的東西也能夠用t來完成。事實上,所有的t最后都會轉化成j,trigger只是面向we的獨特體系。具體的說, war3提供的API有common.j和blizzad.j兩個文件,其中c.j是純粹的接口,而blz.j是對cj里面接口函數的封裝,主要面向 trigger editor,t生成的j代碼中,絕大多數函數都是bj里的。
4. 為什么要學習j
a.用heavylock等工具壓縮后,trigger和j面向we的部分被刪除了,只留下script.j里面干凈的j部分,為了研究別人的map,就要能讀懂別人的代碼;
b.t雖然能完成幾乎所有的功能,但是對于內存釋放和另外一些功能實現的能力太差;
c.雖然t看似是一個語法結構完整的可讀性比較高的語句,但是因為常常語句太長導致可讀性大大下降,而j可以更方便的體現邏輯性,事實上j的可讀性更強;
d.用j可以寫出比t效率高很多的代碼,當然這是在對計算機工作原理比較了解的前提下。


=================================================
第一章 jass基礎
0. 本章概述
本章介紹jass語言的最基本內容,包括注釋、基本數據類型、變量、數組、基本運算符、運算的優先級、常量、基本運算法則
首先在這里說明一點,jass是區分大小寫的,也就是說,jass不會認為“a”和“A”是同一種東西
-----------------------------------------
1. 注釋(comment)
注釋符號://
不論是we的語法檢查器還是war3,“//”之后該行的內容將被忽略
-----------------------------------------
2. 數據類型:
jass雖然不大,但是提供的功能足夠豐富,共提供了6種基本數據類型:
1) integer : 32位有符號整數型(4byte) 取值范圍:[-2147483648, 2147483647] (2^31+符號位)
2) real : 實數型(單精度浮點型,4byte) 取值范圍:[1.5*10^(-45), 3.4*10^38]
3) boolean : 布爾型(1byte) 記錄 true(真)或 false(假)
4) string : 字符串型(不定長) 用來記錄字符
5) handle : 數據指針型 是jass語法的一個基礎類型,相當于passcal中的pointer類型,由它可以派生出其他數據類型的指針。用來指向內存中的一個數據地址
6) code : 函數指針型 用于指向內存中的函數地址
* 其他數據類型: 1.16有81種,1.17又新增5種,都是由繼承handle而來,在common.j最開始的部分,
聲明形式如下:
type ****** extends handle //此處即使不是handle,也是其他由handle繼承而來的類型

-----------------------------------------
3. 變量:
知道了jass的基礎數據類型,下面我們要了解如何使用這些數據。首先就是要對數據進行存取,基本的辦法就是使用變量。什么是變量呢?就是war3在運行的時候在內存中申請一塊數據空間,用來存取數據的。
1) 變量的類型:分全局變量和局域變量兩種,在j中最常用的是局域變量
2) 變量的命名:
首先要給變量一個獨特名字,作為這個變量的標志,以便在以后的使用過程中訪問。
變量名稱必須以英文字母開頭,變量名中可以包括:大小寫英文字母(A~Z, a~z)、數字(0~9)、下劃線(_),其它符號會被認為非法(不要用中文命名變量名)。
we會自動給全局變量加上“udg_”前綴,在jass中使用全局變量的時候直接手動輸入“udg_”前綴即可訪問全局變量。





第二章 jass語法結構
0. 本章概述
本章介紹jass語言的基本語句,包括判斷、循環、判斷和循環的嵌套、數組-----------------------------------------1. jass的判斷語句
與大多數的語言一樣,jass使用了if作為判斷語句。jass的if與passcal的判斷語法相似(這里不得不b4 basic一下,賦值與判斷相等居然都使用“=”,否則的話這里把basic也加進去了)。語法:
a)
if 判斷式 then
...
&lt;else
...&gt;
endif 當 判斷式 的值為 true 的時候,執行語句
若出現else,則為當 判斷式 的值為 true 則執行到 else 之前的語句,否則的話,執行 else 到 endif 之間的語句
if 判斷式 then
...
elseif 判斷式 then
...
elseif 判斷式 then
...
&lt;else
...&gt;
endif 實現多重判斷,不做更多的解釋了。
-----------------------------------------2. jass的循環語句
一般的語言會提供for循環和loop循環兩種循環,另外還有結構化語言中不提倡使用的goto這個轉向語句。for循環實際上是一種最簡單情況的 loop循環,而靠goto控制的轉向可以用loop來完成。遺憾的是jass沒有提供另外兩個循環中非常方便的關鍵字continue和break,不 過靠if和exitwhen也可以完成的。語法:
loop
...
exitwhen 表達式
...
&lt;exitwhen 表達式&gt;
...
endloop 當表達式的值為true的時候,退出該循環。需要說明的是,可以有不止一個exitwhen,并且exitwhen可以在loop中的任意位置。在使用循 環的時候,要注意避免死循環。所謂死循環,就是一直循環下去不會滿足退出的條件,這在使用loop循環的過程中非常常見,例如: set i=1
loop
exitwhen i&gt;5
... //中間忘記了set i=i+1
endloop war3有針對死循環的容錯機制,當達到一定循環次數的時候會自動退出function,也就是說endloop后的語句不會被執行。
-----------------------------------------3. 判斷與循環的嵌套
往往一個判斷或者一次循環不能夠滿足我們想要做的事情,這個時候就涉及到了嵌套。嵌套不難理解,就是在一個判斷或循環中,使用了另外一個判斷或循環,如: loop
...
if ... then
loop
...
endloop
else
if ... then
...
endif
endif
...
loop
...
endloop
endloop 為什么要把嵌套單獨拿出來講一節,就是因為對初學編程的人來說,使用嵌套的時候常常會出現一些錯誤。一旦出現了嵌套,一定要先結束里層,然后再結束外層,如下面的語法是不正確的: loop
if ... then
...
endloop
...
endif 可能看到我前面寫的東西,各位也比較喜歡空格了吧。在循環和判斷的時候用空格來縮進,這樣能夠更直觀的現實邏輯關系,使代碼的可讀性大大加強。但是縮進也可能導致一些主觀的判斷錯誤,例如: if ... then
...
if .... then
...
else
...
endif 在儲存的時候這段代碼會報錯。問題比較容易,自己看吧(j需要endif的語法結構事實上能夠比較好的避免大多數問題,像在c里面考試還會常常出這類的題 hoho)。-----------------------------------------4. 數組的使用
有些時候,你會不會覺得一些重復的操作很煩呢?比如把一個單位身上的物品丟在一個地方,過一段時間之后再放回身上,例如: local unit u = GetTriggerUnit()
local item item1 = UnitItemInSlotBJ(u, 1)
local item item2 = UnitItemInSlotBJ(u, 2)
local item item3 = UnitItemInSlotBJ(u, 3)
local item item4 = UnitItemInSlotBJ(u, 4)
local item item5 = UnitItemInSlotBJ(u, 5)
local item item6 = UnitItemInSlotBJ(u, 6)
... 這種時候,我們可以用一個array(數組)來表示一組東西。1) 數組的聲明:
數組也是變量,所以也有全局和局域之分。全局的數組只要在全局變量的設置中,把array勾上就可以了,實際上是在變量的聲明過程中,在變量類型和變量名 稱之間加入array關鍵字: local item array items* 補充:在全局變量的聲明中,還有個size選項,那個選項實際上是假的,只是你自己輸入一個數字提示自己這個數組應該有多大而以。jass為了防止 mapper不熟練使用數組產生的bug,采用了自動增加數組長度的方式。2) 數組的引用:
使用方括號“[]”作為數組的索引,如訪問index=1的變量 set item[1] = CreateItem(...) 數組索引的最低值為0,最高值俺沒測試過,不過估計沒誰那么瘋狂,不斷的往數組里面添東西。
結合if判斷和loop循環,數組可以減少我們大量的重復工作。------------

posted on 2008-04-08 04:26 七星重劍 閱讀(1035) 評論(3)  編輯 收藏 引用 所屬分類: 亂七八糟

FeedBack:
# re: warcraft jass 2009-03-15 15:54 星綻紫輝
請問,這種語言主要應用在什么領域?是游戲嗎?  回復  更多評論
  
# re: warcraft jass 2009-03-15 15:55 星綻紫輝
哦,是warcraft。。。  回復  更多評論
  
# re: warcraft jass 2011-10-01 13:52 奧貝利科斯
好一個
重劍無鋒 大巧不工  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产精品久久中文| 欧美日韩在线免费| 伊人成年综合电影网| 久久久在线视频| 快射av在线播放一区| 亚洲精品免费在线播放| 日韩亚洲成人av在线| 国产精品免费看| 久久综合国产精品台湾中文娱乐网| 久久久精品日韩| 日韩亚洲欧美中文三级| 一区二区三区精品| 国产一区清纯| 91久久精品日日躁夜夜躁欧美| 欧美日本韩国一区| 久久国产欧美日韩精品| 久久综合色婷婷| 亚洲在线视频| 老**午夜毛片一区二区三区| 亚洲永久免费观看| 葵司免费一区二区三区四区五区| 洋洋av久久久久久久一区| 性视频1819p久久| 亚洲精品日韩在线观看| 亚洲天堂免费在线观看视频| 亚洲高清123| 一区二区三区视频免费在线观看| 韩国av一区| 宅男噜噜噜66国产日韩在线观看| 一区在线免费| 亚洲在线视频网站| aaa亚洲精品一二三区| 久久av在线| 午夜精品影院在线观看| 欧美精品乱人伦久久久久久| 久久亚洲高清| 国产精自产拍久久久久久蜜| 亚洲精品美女在线观看播放| 国内精品免费午夜毛片| 亚洲午夜伦理| 亚洲午夜精品| 欧美国产视频日韩| 欧美高清在线一区| 国产综合第一页| 亚洲欧美另类中文字幕| 亚洲香蕉伊综合在人在线视看| 美日韩精品视频免费看| 久久久免费av| 国产一区自拍视频| 亚洲欧美综合网| 亚洲综合欧美日韩| 欧美三级中文字幕在线观看| 亚洲日本中文| 一本大道久久精品懂色aⅴ| 免费的成人av| 亚洲国产另类精品专区| 亚洲国产日韩欧美在线动漫| 久久影院午夜片一区| 久久亚洲国产成人| 在线观看日韩| 免费视频一区二区三区在线观看| 久久综合九色综合欧美就去吻 | 欧美大片在线看免费观看| 校园春色综合网| 欧美一级成年大片在线观看| 国产精品视频yy9099| 亚洲一区二区三区乱码aⅴ| 亚洲与欧洲av电影| 国产精品久久久久高潮| 午夜激情综合网| 久久精品一二三区| 曰本成人黄色| 免费在线观看成人av| 日韩视频免费观看高清在线视频 | 国产精品日韩在线播放| 亚洲综合国产激情另类一区| 久久精品动漫| 亚洲二区在线| 欧美巨乳在线观看| 亚洲亚洲精品在线观看| 久久国产精品亚洲77777| 狠狠久久五月精品中文字幕| 欧美成人免费网站| 一区二区三区毛片| 久久福利精品| 亚洲日本va在线观看| 欧美色播在线播放| 久久爱www| 91久久国产综合久久蜜月精品| 在线视频亚洲| 国产专区精品视频| 欧美激情aⅴ一区二区三区| 亚洲午夜在线观看视频在线| 久久精品一级爱片| 夜夜嗨网站十八久久| 国产日韩欧美视频在线| 欧美成人精品1314www| 一区二区欧美激情| 美女精品国产| 亚洲免费视频在线观看| 亚洲动漫精品| 国产精品国产三级国产aⅴ无密码| 欧美一区影院| 一区二区三区久久久| 免费在线欧美黄色| 午夜精品国产| 在线亚洲精品福利网址导航| 国产在线欧美日韩| 欧美午夜精品伦理| 欧美成人影音| 久久久久久久999| 午夜亚洲伦理| 中文在线一区| 亚洲日本中文字幕| 欧美成人伊人久久综合网| 欧美专区日韩专区| 亚洲一级特黄| 99国产欧美久久久精品| 亚洲国产1区| 红桃视频亚洲| 国产手机视频精品| 国产精品视频内| 欧美日韩免费一区二区三区| 另类欧美日韩国产在线| 久久精品欧美日韩精品| 亚洲在线观看免费视频| 一区二区三区导航| 一本色道精品久久一区二区三区| 欧美激情精品久久久久久久变态| 久久九九免费| 欧美一区国产二区| 新67194成人永久网站| 亚洲性xxxx| 亚洲一二三区视频在线观看| 一本色道久久综合亚洲精品婷婷| 在线日韩中文字幕| 激情久久五月天| 好看的日韩视频| 国产永久精品大片wwwapp| 欧美一级午夜免费电影| 欧美一区二区在线播放| 久久成人免费日本黄色| 欧美在线播放一区| 久久久一二三| 免费观看一区| 欧美另类69精品久久久久9999| 免费的成人av| 欧美日韩免费一区二区三区视频| 欧美日本在线看| 欧美日韩一级黄| 国产精品av一区二区| 国产九区一区在线| 国产专区精品视频| 亚洲激情第一区| 在线亚洲美日韩| 久久经典综合| 欧美激情精品久久久久久变态| 亚洲欧洲在线观看| 亚洲丝袜av一区| 欧美一区二区三区的| 久久一二三四| 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲精品久久嫩草网站秘色| aⅴ色国产欧美| 亚洲欧美日韩在线播放| 久久婷婷蜜乳一本欲蜜臀| 欧美黄色网络| 亚洲调教视频在线观看| 久久精品国产69国产精品亚洲| 蜜桃久久av一区| 国产精品高清免费在线观看| 国产一区二区三区久久 | 老司机午夜精品视频| 91久久香蕉国产日韩欧美9色| 在线亚洲+欧美+日本专区| 欧美一区二区视频在线观看| 欧美成人午夜激情视频| 国产精品色网| 亚洲日本中文字幕免费在线不卡| 亚洲欧美日韩综合aⅴ视频| 欧美xart系列高清| 亚洲欧美另类国产| 欧美精品一二三| 狠狠色噜噜狠狠色综合久| 亚洲一级特黄| 欧美激情女人20p| 欧美在线亚洲综合一区| 国产精品www网站| 亚洲欧洲在线一区| 久久美女艺术照精彩视频福利播放| 亚洲国产精品专区久久| 欧美亚洲一区二区在线观看| 欧美日韩国产高清视频| 亚洲第一精品福利| 欧美一区二区性| 一区二区激情小说| 欧美女激情福利| 亚洲国产精品一区在线观看不卡| 欧美一区日本一区韩国一区| 日韩视频在线一区二区|