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

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

Vic3 mod 制作教程 第四章 流程控制

2023-08-11 15:16 作者:普洛斯佩羅親王  | 我要投稿

流程控制是很多編程語言都擁有的概念,即判斷、循環(huán)、遍歷,P社的文本代碼也不例外,因此,本章就文本代碼進(jìn)行闡述。

# 第一節(jié)?? ?判斷

## 第一小節(jié) if else else_if

if, else, else_if可以說是伴隨很多編程用戶的常用關(guān)鍵詞,當(dāng)然,這個視頻也不是和人細(xì)說編程相關(guān)的東西,本視頻一直都面向于沒有任何基礎(chǔ)的玩家。

if和else_if都帶有一個名為limit的trigger上下文,如果limit為真,執(zhí)行下面語句,如果下面有else_if,繼續(xù)向else_if判斷,直到下面沒有else_if或者是else,或者完全沒有if,else,else_if的任一代碼為止。

下面就是實(shí)例, 隨便設(shè)置一個變量get_var, 使其值為9999:

通過改變get_var,使其值分別為9999,15000,30000,查看不同的效果

請注意else和else_if不能單獨(dú)使用,只能匹配在if或者else_if的后面,else只能使用一次,作為兜底的情況,而else_if可以根據(jù)limit內(nèi)trigger的不同而重復(fù)使用多次

所以就代碼習(xí)慣而言,建議else和else_if緊跟在上一句的右大括號后空一格

```perl
if = {
??? limit = { this.var:get_var < 10000 }
??? add_treasury = 10000
} else_if = {
??? limit = { this.var:get_var >= 10000 this.var:get_var <= 20000? }
??? add_treasury = 20000
} else = { # 如果沒有else,那么當(dāng)gdp > 20000的時候什么也不會發(fā)生
??? add_treasury = 30000
}

if = { # 此處開始第二個判斷,所以gdp< < 10000的國家其實(shí)能獲得40000
??? limit = { this.var:get_var < 10000 }
??? add_treasury = 30000
}

```
## 第二小節(jié) trigger下的 if,else,else_if

然而,請記住,不同的上下文有別,查閱文檔可得,這三者都是effect,所以,應(yīng)當(dāng)留意,它們是有對應(yīng)的trigger版本的。

只需要在前面添加`trigger_`就行。

自然,trigger下的trigger_if,trigger_else,trigger_else_if的里面全都是trigger,而limit里面的trigger決定了這個trigger是否顯示。

同樣的場景做出差不多的實(shí)例,同樣通過改變get_var,使其值分別為9999,15000,30000,查看不同的trigger效果

可以看到,它們只會顯示匹配trigger_if,trigger_else,trigger_else_if的情況,如果需要顯示limit里面的效果,建議是使用AND,OR,NOR,NAND這些trigger。

除此之外,trigger_if,trigger_else,trigger_else_if和它們的effect版本就沒有什么區(qū)別了,運(yùn)行邏輯和代碼建議,都是差不多的

```perl
trigger_if = {
??? limit = { has_variable = get_var this.var:get_var < 10000 }
??? this.gdp > this.var:get_var
} trigger_else_if = {
??? limit = { has_variable = get_var? }
??? this.gdp = this.var:get_var
} trigger_else = { # 如果沒有else,那么當(dāng)gdp > 20000的時候什么也不會發(fā)生
??? this.gdp > 1000000
}

# 只會顯示匹配trigger_if,trigger_else,trigger_else_if的情況
```


## 第三小節(jié) switch

switch也是判斷的老熟客,通過檢測一個確定的量然后根據(jù)不同的數(shù)值得出不同的結(jié)果。

在實(shí)例中把var:get_var設(shè)置為1或者2或者其他數(shù)字

在一些高級用法中,可以將一些變量的數(shù)值用flag:表示出來,可以得到相當(dāng)驚艷的效果,fallback是什么都沒有匹配到的情況,相當(dāng)于上文的else或者trigger_else,所以也可以不用寫,這樣當(dāng)什么都匹配不到的時候,就沒有任何效果

```perl
switch = {
??? trigger = var:get_var
??? 1 = {
??????? add_treasury = 1000
??? }
??? 2 = {
??????? add_treasury = 2000
??? }
??? fallback = { # 什么都沒有匹配到的情況,也可以不寫
??????? add_treasury = 1
??? }
}
```

switch在trigger和effect都通用,但是請注意上下文問題,不要在使用trigger的情況下用到effect。


同樣的,在trigger的上下文中,switch不同情況下大括號的文本代碼也應(yīng)當(dāng)是trigger,不能與effect混淆,不然一個都不會顯示

但是其他部分,則和effect版本沒有任何區(qū)別,使用起來相當(dāng)方便,比if,else,else_if方便多了,所以,為了方便維護(hù)和代碼運(yùn)行效率,在擁有一個確定對象作為trigger的時候,應(yīng)當(dāng)盡量使用switch

```perl
switch = {
??? trigger = var:get_var
??? 1 = {
??????? this.gdp > 1000000
??? }
??? 2 = {
??????? this.gdp > 2000000
??? }
??? fallback = { # 什么都沒有匹配到的情況,也可以不寫
??????? this.gdp = 3000000
??? }
}
```

# 第二節(jié)?? ?遍歷


Vic3 mod 制作教程 第四章 流程控制的評論 (共 條)

分享到微博請遵守國家法律
嘉禾县| 招远市| 湟源县| 内黄县| 三河市| 延川县| 西峡县| 雅江县| 无锡市| 嘉黎县| 讷河市| 河东区| 阳春市| 墨玉县| 凤城市| 林州市| 涡阳县| 五寨县| 台安县| 太康县| 资兴市| 广宁县| 丹寨县| 濮阳市| 常宁市| 新邵县| 宁都县| 乐清市| 板桥市| 大新县| 静海县| 绥滨县| 泸州市| 商河县| 东丽区| 宁安市| 彰化县| 夏邑县| 洪泽县| 大姚县| 贵阳市|