最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

心靈終結(jié)3.3.6萌新教程第20篇:局部變量(一)

2023-02-07 17:08 作者:不會(huì)游泳的企鵝24  | 我要投稿

一、什么是局部變量

?????? 局部變量在戰(zhàn)役中是一個(gè)重要的控制觸發(fā)條件的手段。所謂“變量”,指的就是一個(gè)可以在游戲過程中變化的數(shù)值,它的取值可以是0或1。所謂“局部”,指的是這個(gè)變量只在這一張地圖當(dāng)中發(fā)揮作用,與它相對(duì)應(yīng)的是“全局變量”。

?????? 在地編中“編輯——局部變量”中,你可以編輯局部變量。剛開始沒有局部變量的時(shí)候只有一條“No Name”,我們只需要在“變量名稱”那里作修改,就相當(dāng)于新建一個(gè)局部變量了,然后它就會(huì)自動(dòng)新增一行“No Name”以供我們新建第二個(gè)局部變量?!熬植孔兞俊苯缑鏇]有“刪除”鍵,把“Name”這一行清空就算刪除了,但地編仍然會(huì)這一個(gè)空行顯示出來,除了不好看之外沒有任何影響(當(dāng)然你也可以不刪除,只要在后面的觸發(fā)中不涉及到這個(gè)局部變量就行了)。局部變量的“預(yù)設(shè)值”就是它一開始是取0還是1,這個(gè)并不重要,只要和之后的觸發(fā)相匹配就可以了。另外,雖然我沒有試過使用中文命名局部變量會(huì)不會(huì)出問題,但還是建議局部變量的名稱中只使用英文字母

新建一個(gè)名為Test的局部變量,預(yù)設(shè)值為0
清除局部變量的名稱之后,空行仍會(huì)保留

?二、局部變量的基本運(yùn)行原理

?????? 當(dāng)某局部變量的取值為0時(shí),我們稱該局部變量處于“被清除”的狀態(tài),當(dāng)取值為1時(shí),我們稱它處于“被設(shè)置”的狀態(tài)。

?????? 觸發(fā)中分別有兩個(gè)條件和兩個(gè)結(jié)果與局部變量有關(guān)。條件36:局部變量被設(shè)置,指的是相應(yīng)局部變量值為1時(shí)滿足該條件;條件37:局部變量被清除,指的是相應(yīng)局部變量值為0時(shí)滿足該條件;結(jié)果56:設(shè)置局部變量,指的是將相應(yīng)局部變量的值設(shè)為1;結(jié)果57:清除局部變量,指的是將相應(yīng)局部變量的值設(shè)為0。注意“將局部變量的值設(shè)為1”并不一定就是讓這個(gè)局部變量的值“從0變成1”,也有可能在觸發(fā)這個(gè)結(jié)果時(shí)該局部變量的值本來就是1,此時(shí)“設(shè)置局部變量”這個(gè)結(jié)果就相當(dāng)于沒有任何效果。

??? ??? 我們用兩個(gè)簡單的例子來說明和局部變量有關(guān)的觸發(fā)是怎么運(yùn)行的。

??????? 例1:

??????? 首先新建一個(gè)局部變量Test,預(yù)設(shè)值為0.

????????觸發(fā)1:條件:流逝時(shí)間20秒;結(jié)果:設(shè)置局部變量,參數(shù)值選剛才新建的Test.

??????? 觸發(fā)2:條件:局部變量被設(shè)置,參數(shù)選Test;結(jié)果:文本觸發(fā)事件,隨便選一句文本。

????????游戲開始時(shí),局部變量Test的初始值為0;20秒后,觸發(fā)1生效,Test的值變成1,此時(shí)滿足了觸發(fā)2的條件,因此觸發(fā)了文本。

??????? 例2:

????????新建一個(gè)局部變量Test2,預(yù)設(shè)值為1.

????????觸發(fā)1:條件:被任一所屬方摧毀;結(jié)果:清除局部變量Test2。該觸發(fā)的關(guān)聯(lián)對(duì)象為建筑A.

????????觸發(fā)2:條件:局部變量Test2被清除;結(jié)果:變賣關(guān)聯(lián)建筑。該觸發(fā)的關(guān)聯(lián)對(duì)象為建筑B.

????????游戲開始時(shí),Test2的初始值為1;當(dāng)摧毀建筑A時(shí),觸發(fā)1的條件被滿足,Test2的值變?yōu)?,此時(shí)觸發(fā)2的條件被滿足,因此變賣B建筑。

????????要指出的是,在上面兩個(gè)例子中,預(yù)設(shè)值、條件、結(jié)果這三者可以同時(shí)進(jìn)行相應(yīng)變化,對(duì)觸發(fā)效果不會(huì)有任何影響。比如在例1中也可以把預(yù)設(shè)值設(shè)為1,同時(shí)相應(yīng)地把觸發(fā)1的結(jié)果改為“清除局部變量”,把觸發(fā)2的條件改為“局部變量被清除”,效果完全相同。

三、為什么要使用局部變量

????????我們用了兩個(gè)例子來說明局部變量的運(yùn)行原理,不過,顯然可以看出來,如果要實(shí)現(xiàn)這兩個(gè)例子中的效果,根本不需要使用局部變量。例1只要一個(gè)觸發(fā)就能搞定,例2由于涉及到關(guān)聯(lián)對(duì)象的問題,需要將兩個(gè)觸發(fā)分開,但是只需要用“允許觸發(fā)”將兩個(gè)觸發(fā)聯(lián)系起來即可(詳見教程第8篇的例1),也不需要使用局部變量。那么在什么情況下我們才會(huì)用到局部變量呢?

????????我們在教程第3、4篇曾經(jīng)使用過這么兩個(gè)觸發(fā)條件:條件7(或48):關(guān)聯(lián)對(duì)象被摧毀;條件82:所屬方不存在科技類型。對(duì)于“摧毀xxx”這樣的任務(wù)目標(biāo),一般來說需要被摧毀的對(duì)象是不可再造的,使用這兩個(gè)條件作為任務(wù)完成的判定都可以。那么,當(dāng)要被摧毀的目標(biāo)在地圖上唯一存在的時(shí)候,這兩個(gè)條件究竟有沒有區(qū)別呢?請(qǐng)看下面的例子:

????????現(xiàn)在地圖上有且只有一個(gè)蘇軍建造場,所屬方為蘇俄。

????????例3:

????????觸發(fā)1:初始禁止,條件:關(guān)聯(lián)對(duì)象被摧毀;結(jié)果:文本觸發(fā)事件。關(guān)聯(lián)對(duì)象為蘇軍建造場。

????????觸發(fā)2:初始允許,條件:流逝時(shí)間30秒;結(jié)果:允許觸發(fā)1。

????????例4:

????????觸發(fā)1:初始禁止,觸發(fā)所屬方蘇俄,條件:所屬方不存在科技類型,數(shù)值為0,科技類型為蘇軍建造場;結(jié)果:文本觸發(fā)事件。

????????觸發(fā)2:初始允許,條件:流逝時(shí)間30秒;結(jié)果:允許觸發(fā)1。

????????在例3中,如果蘇軍建造場在游戲開始30秒之后被摧毀,那么在摧毀之后立即觸發(fā)文本;但如果在游戲開始30秒內(nèi)被摧毀,那么即使過了30秒,也不會(huì)觸發(fā)文本

????????而在例4中,如果蘇軍建造場在游戲開始30秒之后被摧毀,與例3一樣,立刻觸發(fā)文本。但如果在游戲開始30秒內(nèi)被摧毀,則會(huì)在游戲開始30秒之后顯示文本

????????我們分析一下兩者不同的原因:例3中觸發(fā)1的條件“關(guān)聯(lián)對(duì)象被摧毀”,只有當(dāng)蘇軍建造場被摧毀的一瞬間會(huì)被判定為滿足條件。如果我們在30秒內(nèi),比如,第20秒時(shí)摧毀了蘇軍建造場,那么雖然觸發(fā)1的條件滿足,但它此時(shí)仍處于禁止?fàn)顟B(tài),因此不會(huì)觸發(fā)結(jié)果;而到了30秒,觸發(fā)1被允許了,但是“蘇軍建造場被摧毀”的這一瞬間已經(jīng)過了,之后不會(huì)再判定滿足觸發(fā)1的條件,因此也就不會(huì)顯示文本了。而例4中,觸發(fā)1的條件是“蘇俄沒有建造場”,那么從建造場被摧毀的那一刻開始,蘇俄就一直沒有建造場了,也就是說這個(gè)條件一直成立,因此一旦觸發(fā)1被允許,就會(huì)立刻執(zhí)行相應(yīng)結(jié)果。

????????在此,我將“關(guān)聯(lián)對(duì)象被摧毀”這樣,只能在某個(gè)瞬間被滿足的條件稱為“瞬時(shí)型條件”,將“所屬方不存在科技類型”這樣,一旦某個(gè)動(dòng)作發(fā)生,之后就一直滿足,除非之后有另外一個(gè)動(dòng)作(比如蘇俄又造了一個(gè)基地車并打開)使得條件不再滿足,這樣的條件稱為“持續(xù)型條件”。

????????例5:

????????在某個(gè)戰(zhàn)役中,我們想實(shí)現(xiàn)以下的效果:游戲開始30分鐘后,如果玩家進(jìn)入過敵軍的基地,則從地圖外刷出一支敵軍,否則無事發(fā)生。注意,我們并不是說“玩家進(jìn)入敵軍基地之后再經(jīng)過30分鐘刷兵”,我們是想要游戲一開始就計(jì)時(shí),30分鐘后進(jìn)行判定,如果在0到30分鐘這一段時(shí)間內(nèi)玩家“進(jìn)入過”敵方基地就視為滿足條件,即使玩家的部隊(duì)又從敵方基地出來或者被消滅也算。

????????我們打算用“進(jìn)入事件”來作為“玩家進(jìn)入敵軍基地”的判定條件,在敵軍基地周圍圍上一圈單元標(biāo)記。不過,“進(jìn)入事件”是一個(gè)“瞬時(shí)型條件”,它只有在所屬方的單位從外邊“進(jìn)入”單元標(biāo)記所在格的一瞬間會(huì)被判定為“條件滿足”。

??? ????第一種錯(cuò)誤實(shí)現(xiàn)方法:

????????觸發(fā):條件1:流逝時(shí)間30分鐘;條件2:進(jìn)入事件,所屬方為玩家;結(jié)果:援軍。關(guān)聯(lián)對(duì)象為一圈單元標(biāo)記。

????????這樣將兩個(gè)條件寫在一個(gè)觸發(fā)中時(shí),只有當(dāng)兩個(gè)條件同時(shí)滿足才會(huì)實(shí)現(xiàn)觸發(fā)結(jié)果。因此這個(gè)觸發(fā)的效果是:在30分鐘后玩家第一次踩上某個(gè)單元標(biāo)記時(shí)觸發(fā)援軍,不論前30分鐘的情況。例如玩家在第15分鐘、25分鐘、35分鐘、45分鐘四次踩上了單元標(biāo)記,則會(huì)在35分鐘時(shí)刷兵。這與我們想要實(shí)現(xiàn)的效果不符。

????????第二種錯(cuò)誤實(shí)現(xiàn)方法:

????????觸發(fā)1:初始禁止,條件:進(jìn)入事件,所屬方為玩家;結(jié)果:援軍。關(guān)聯(lián)對(duì)象為一圈單元標(biāo)記。

????????觸發(fā)2:條件:流逝時(shí)間30分鐘;結(jié)果:允許觸發(fā)1

????????這種方法的錯(cuò)誤原因和例3相同,因?yàn)椤斑M(jìn)入事件”是一個(gè)瞬時(shí)型條件,當(dāng)觸發(fā)1被允許時(shí),并不會(huì)因?yàn)椤爸斑M(jìn)入過單元標(biāo)記所在單元格”就判定滿足觸發(fā)1的條件。這樣做的效果和第一種錯(cuò)誤實(shí)現(xiàn)方法相同,都是在30分鐘后玩家第一次踩上單元標(biāo)記時(shí)刷兵。

????????有了例3和例4的經(jīng)驗(yàn),我們想到一個(gè)可能的解決辦法,就是修改觸發(fā)1的條件,把“進(jìn)入……”變成“進(jìn)入過……”,改成一個(gè)“持續(xù)型條件”,也就是說玩家第一次踩進(jìn)單元標(biāo)記之后就一直視為“滿足條件”,就像將“關(guān)聯(lián)對(duì)象被摧毀”改成“所屬方不存在科技類型”一樣。但是很可惜,地編中并沒有這樣的表示“進(jìn)入過……”的持續(xù)型條件。

????????解決該問題的關(guān)鍵在于,我們需要將“玩家單位進(jìn)入單元標(biāo)記”這一個(gè)“瞬間型”的信息保存下來,變成一個(gè)“持續(xù)型”的信息,以便我們之后取用。而保存這一信息的最好方式就是局部變量。

????????正確實(shí)現(xiàn)方法:

????????新建局部變量,命名為Enter Enemy's Base,預(yù)設(shè)值為0

????????觸發(fā)1:初始允許,條件:進(jìn)入事件,所屬方為玩家;結(jié)果:設(shè)置局部變量Enter Enemy's Base.

????????觸發(fā)2:初始禁止,條件:局部變量Enter Enemy's Base被設(shè)置;結(jié)果:援軍

????????觸發(fā)3:初始允許,條件:流逝時(shí)間30分鐘;結(jié)果:允許觸發(fā)2

????????此時(shí),我們?nèi)绻?0分鐘內(nèi)進(jìn)入了敵軍基地,此時(shí)局部變量就會(huì)被設(shè)為1,但是由于觸發(fā)2處于禁止?fàn)顟B(tài),所以不會(huì)刷兵;游戲開始30分鐘后,觸發(fā)2被允許,此時(shí)局部變量為1,觸發(fā)2的條件滿足,因此就會(huì)立刻刷兵。注意:“局部變量被設(shè)置”這一條件是一個(gè)持續(xù)型條件,它的意思是“局部變量的值為1”而不是“局部變量的值從0變成1”,“被設(shè)置”這一表述可能有些歧義,會(huì)讓人以為只有“設(shè)置局部變量”這一動(dòng)作完成的瞬間才滿足條件。這一條件更準(zhǔn)確的表述應(yīng)該是“局部變量處于‘被設(shè)置’的狀態(tài)”?!熬植孔兞勘磺宄币差愃?。

????????由此可見,“局部變量”的作用在于:將“瞬間型條件”轉(zhuǎn)化為“持續(xù)型條件”。

????????本篇教程就到這里,后面還會(huì)講更多應(yīng)用局部變量的情形。

心靈終結(jié)3.3.6萌新教程第20篇:局部變量(一)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
博湖县| 黔东| 德州市| 和硕县| 开化县| 东乡族自治县| 旌德县| 彰化市| 甘南县| 镇沅| 昌乐县| 历史| 田林县| 万盛区| 巴马| 米林县| 仁寿县| 河北省| 石棉县| 楚雄市| 高邑县| 竹溪县| 舞钢市| 信丰县| 文化| 金堂县| 舒城县| 莱阳市| 天水市| 瑞昌市| 广昌县| 九龙坡区| 凉山| 建昌县| 西贡区| 通渭县| 延长县| 临桂县| 尼玛县| 沂水县| 阿图什市|