• <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>
            隨筆 - 505  文章 - 1034  trackbacks - 0
            <2007年3月>
            25262728123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567


            子曾經(jīng)曰過:編程無他,唯手熟爾!

            常用鏈接

            留言簿(94)

            隨筆分類(649)

            隨筆檔案(505)

            相冊

            BCB

            Crytek

            • crymod
            • Crytek's Offical Modding Portal

            Game Industry

            OGRE

            other

            Programmers

            Qt

            WOW Stuff

            搜索

            •  

            積分與排名

            • 積分 - 917347
            • 排名 - 14

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜


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

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

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


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

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





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

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

            FeedBack:
            # re: warcraft jass 2009-03-15 15:54 星綻紫輝
            請問,這種語言主要應(yīng)用在什么領(lǐng)域?是游戲嗎?  回復(fù)  更多評論
              
            # re: warcraft jass 2009-03-15 15:55 星綻紫輝
            哦,是warcraft。。。  回復(fù)  更多評論
              
            # re: warcraft jass 2011-10-01 13:52 奧貝利科斯
            好一個
            重劍無鋒 大巧不工  回復(fù)  更多評論
              
            日韩久久久久久中文人妻| 狠狠精品干练久久久无码中文字幕| 国产精品久久一区二区三区| 久久综合五月丁香久久激情| 2020最新久久久视精品爱 | 久久久久久久尹人综合网亚洲| 色婷婷久久综合中文久久蜜桃av| 欧美日韩精品久久久免费观看| 蜜桃麻豆WWW久久囤产精品| 久久久久一本毛久久久| 久久激情亚洲精品无码?V| 国产成人香蕉久久久久| 久久久久国产精品三级网| 国产亚洲精久久久久久无码AV| 久久电影网| 久久人与动人物a级毛片| 亚洲人成伊人成综合网久久久| 无码人妻少妇久久中文字幕蜜桃| 狠狠色丁香婷综合久久| 国产精品久久久久乳精品爆| 亚洲国产精品成人久久蜜臀| 99久久这里只精品国产免费| 性欧美大战久久久久久久久| 欧美伊香蕉久久综合类网站| 亚洲国产婷婷香蕉久久久久久| 精品久久久一二三区| 久久精品国产精品亚洲毛片| 99久久夜色精品国产网站| 久久伊人精品一区二区三区| 久久国产高潮流白浆免费观看| 国内精品久久久久久久coent| 性做久久久久久久久浪潮| 久久精品无码专区免费东京热| 久久无码av三级| 中文字幕无码精品亚洲资源网久久| 国产一区二区精品久久| 精品久久久久久久中文字幕| 三上悠亚久久精品| 一极黄色视频久久网站| 久久综合狠狠色综合伊人| 国产激情久久久久久熟女老人|