偶久网

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索

网站魔兽热门地图

楼主: 无界の灵

JASS入门到提高教程,想学J的进来!

  [复制链接]
无界の灵
 楼主| 发表于 2011-9-16 22:42:32
第二节    二维数组
    早先我就说过,在JASS里面没有二维数组,只有一维数组,这在我们进行运用的时候有很大的不方便。但是由于有了GC和RB,让我们进行一个二维数组的摸拟是完全可行的。
由于无论是何种数据,我们都可以使其与整型数据挂够。所以我们只需要将前面所讲的GC相关函数进行一下修改即可。为了方便我们进行后面的讲解,先在此将所需要的函数进行一下修改。
+  Shingo Jass Highlighter 0.41 function  H2I  takes handle h returns integer
    return h
    return 0
endfunction
function  I2U takes integer i returns unit
                    return   i
                    return   null
               endfunction
               function I2G takes integer i returns group
                    return i
                    return null
               endfunction
               function  I2T takes integer i returns timer
                    return   i
                    return   null
               endfunction
               function  I2It takes integer i returns item
                    return i
                    return null
               endfunction
               function  I2Ef takes integer i returns effect
                    return i
                    return null
               endfunction
               function I2Li takes integer i returns lightning
                    return i
                    return null
               endfunction
function game takes nothing returns gamecache  
    if bj_lastCreatedGameCache==null then  
        call FlushGameCache(InitGameCache("Alex.w3v"))  
        set bj_lastCreatedGameCache=InitGameCache("Alex.w3v")
    endif
    return bj_lastCreatedGameCache
endfunction
function RealArrayStore takes real i,string name,integer project, integer node returns nothing
    call StoreReal(game(),name+I2S(project),I2S(node),i)
endfunction  
function IntegArrayStore takes integer i, string name,integer project, integer node returns nothing
    call StoreInteger(game(),name+I2S(project), I2S(node),i)
endfunction  
function IntegArrayRead takes string name,integer project,integer node returns integer
    return GetStoredInteger(game(),name+I2S(project), I2S(node))
endfunction  
function RealArrayRead takes string name,integer project,integer node returns real
    return GetStoredReal(game(),name+I2S(project), I2S(node))
endfunction  
function FlushData takes string name,integer project returns nothing
    call FlushStoredMission(game(),name+I2S(project))
endfunction  
function FlushCache takes nothing returns nothing
    call FlushGameCache(game())
endfunctionj/abc
我们在进行实例讲解的时候仅以整数为例,实数就不用了。也就是说,我们现在只需要用到以下三个函数了:
j/function IntegArrayStore takes integer i, string name,integer project, integer node returns nothing
    call StoreInteger(game(),name+I2S(project), I2S(node),i)
endfunction  
function IntegArrayRead takes string name,integer project,integer node returns integer
    return GetStoredInteger(game(),name+I2S(project), I2S(node))
endfunction  
function FlushData takes string name,integer project returns nothing
    call FlushStoredMission(game(),name+I2S(project))
endfunction

那么我们就用例子来进行讲解吧。
Eg.1:现有5个英雄ABCDE,分将他们的3围存贮起来,在需要的时候读取出来。
分析:5个英雄;3围。这就是传出中的5行3列2维数组。如果用C语言表示就是这样的Hero[4][2],为了顺应编程习惯,下标均从0开始。那么我们就开始进行摸拟了。
+  Shingo Jass Highlighter 0.41 //存贮
function StoreHeroAtr takes nothing returns nothing
     local    unit    array      Heros
     local    string             ArrayName
     local    integer            i = 0
     set   Heros[0] = A
     set   Heros[1] = B
     set   Heros[2] = C
     set   Heros[3] = D
     set   Heros[4] = E
     loop
         exitwhen i == 5
         call IntegArrayStore(GetHeroAgi(Heros<i>),ArrayName,i,0)
         call IntegArrayStore(GetHeroStr(Heros<i>),ArrayName,i,1)
         call IntegArrayStore(GetHeroInt(Heros<i>),ArrayName,i,2)
         set i = i + 1
    endloop
endfunction

这样一来,我们就把不同英雄的三围都存入到了一个叫做ArrayName的“二维数组中去了”
当我们需要的时候只需要  +  Shingo Jass Highlighter 0.41 call IntegHandleRead(ArrayName,x,y)

因为ArrayName是一个变量,表示这个二维数组的名字,就像一维数组名那样。于是在一个地图中可以有多个这样的“二维数组了”。
其实这一节也应该算是“人贱合一”内容,我之所以单独拿出来讲,一方面是为了加强大家对“人贱合一”的理解,另一方面也是为了告诉大家,JASS也可以拥有二维数组,而且要比其他任何一种语言都要灵活。因为Returnbug的存在,我们可以将任意数据转换成整数,在我们需要的时候再转换成对应的数据,这是其他语言所不具备的。
单一例不知道大家是否能够理解“二维数组”。因为为了例子而想问题总归是想不出来那么多例子,因此我也就无法为大家讲解更多的“二维数组”的例子了,但是大家在将来的实际练习过程中也许会碰到这样的问题,到时候只希望你能将所学的运用上去,并且自己有所创新。
无界の灵
 楼主| 发表于 2011-9-16 22:49:58
给你们一个TXT文件,不过好像少了一章,放不进图······



Jass教程.txt

60.72 KB, 下载次数: 590

5

无界の灵
 楼主| 发表于 2011-9-16 22:50:14
J技能上来了~


大家自己下载啊~


[SB_spell]の一个破漩涡‘J’.w3x

45.69 KB, 下载次数: 150

[SB_spell]の盗版毒龙钻‘J’.w3x

19.96 KB, 下载次数: 105

[SB_spell]の跳跃‘J’【return bug】.w3x

19.17 KB, 下载次数: 103

[SB_spell]の地狱鬼面蛇‘J’.w3x

24.79 KB, 下载次数: 134

[SB_spell]の凤舞九天-时空异洞‘J’.w3x

42.19 KB, 下载次数: 126

[SB_spell]の克隆单位‘J’.w3x

1.09 MB, 下载次数: 203

DONGGAN
发表于 2011-9-17 02:23:47
{:4_130:}
发表于 2011-9-17 09:56:07
gan970729
发表于 2011-9-17 12:32:57
346863096
发表于 2011-9-17 14:48:30
好啊  楼主辛苦了

评分

1

查看全部评分

发表于 2011-9-17 15:27:58
啊啊老高这个干什么
My丶风
发表于 2011-9-17 15:34:45
= = 回复看看 但是看这么多楼 楼主啊 这要多少字呢- -

点评

没去统计的说··· 很多很多···  详情 回复 发表于 2011-9-17 15:52
鬼子
发表于 2011-9-17 15:43:04
不适合新手。。。

点评

估计适合学J的~ 但对WE不熟的人就不适合了~  详情 回复 发表于 2011-9-17 15:53
快速回复 返回顶部 返回列表