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

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

Simple AvZ v1.0.0 發(fā)布

2023-09-27 08:21 作者:Crescebdo  | 我要投稿

Simple AvZ, 即 "AvZ 簡化版", 是基于 AvZ 1 設(shè)計(jì)的一套用于精簡腳本的語法框架.



使用方式


從零開始安裝 AvZ 1 與 Simple AvZ 的視頻教程:見此


如果你已安裝 AvZ 1 環(huán)境,只需通過?Get AvZ Extension 下載本插件的最新版本后, 在腳本中加入 #include "SimpleAvZ/lib.h" 即可.


若 Get AvZ Extension 不可用, 可從本倉庫 /release 目錄中手動下載. (https://gitlab.com/avzlib/AvZLib/-/tree/main/crescendo/SimpleAvZ/SimpleAvZ).



設(shè)計(jì)理念

  • 簡潔 好于 冗長

  • 聲明 好于 命令

  • 安全 好于 效率

下面舉一些例子說明上述理念.



剔除 SetTime


Simple AvZ 的重要目標(biāo)之一, 是讓腳本中不再出現(xiàn) SetTime 與 Delay.


以 [PE]. 最后之作 的減速波為例:


如果你剛寫完這段腳本, 并不會覺得有違和感.


可當(dāng)一段時(shí)間后重讀, 或是其他人閱讀此段時(shí), 大家關(guān)心的是具體操作及時(shí)機(jī), 可滿眼望去卻都是 SetTime, Delay, 和反復(fù)出現(xiàn)的神秘嘉賓 -373.


使用 Simple AvZ, 以上代碼簡化為:


代碼行數(shù)減半, 重要信息一覽無余, 且十分接近我們熟知的軌道語言, 一看就懂.


我們知道炮的飛行時(shí)間, 知道當(dāng)前場景, 更知道 PE 下多數(shù)情況不是炸 2,5 就是炸 1,5 路. 既然如此, 為何不對這些信息加以利用呢? 這是 Simple AvZ 的初衷.



以生效時(shí)機(jī)思考


對手控玩家而言, 掐時(shí)機(jī)至關(guān)重要, 什么時(shí)候點(diǎn)冰, 什么時(shí)候拖炮都有講究.


可在鍵控領(lǐng)域, 我們更關(guān)心生效時(shí)機(jī)!


使用 Simple AvZ, 你可以寫出這樣的代碼:


聲明我要在 318cs 于 8.8 列生效并炸炮.


至于 PP 炸哪行? 如果有上界之風(fēng), 應(yīng)如何修正發(fā)炮時(shí)間? 這一切都由 Simple AvZ 自動推測, 編寫者無需多慮.


這就是所謂的聲明式編程, 即以結(jié)果為導(dǎo)向,而非以過程為導(dǎo)向.


這不僅讓代碼更簡潔易懂, 增加編寫效率, 更避免了一些本不必要的 bug. 例如炮擊泳池飛行 378cs, 炮擊平地飛行 373cs, 若不小心區(qū)分很容易混淆, 可多數(shù)情況下我們本不關(guān)心這些, 只是想在特定時(shí)機(jī)讓炮生效罷了.



基于炮的時(shí)間體系


由于游戲的蛋疼設(shè)定, 每幀結(jié)算順序?yàn)?[植物] --> [僵尸] --> [子彈].


說來也巧, 由于冰與灰燼(櫻辣窩核)屬于 [植物], 而炮又屬于 [子彈], 兩者相對于 [僵尸] 的結(jié)算順序便有了 1cs 偏差.


簡單來說, x cs 生效的炮 = x + 1 cs 生效的卡.


這個(gè)不一致性在 AvZ 1 設(shè)計(jì)伊始就已顯現(xiàn), 如 AvZ::SetPlantActiveTime(), 即 Ice3 函數(shù), 其實(shí)際效果為將冰生效時(shí)機(jī)修正為設(shè)定時(shí)機(jī)的 下一 cs.


一說這有道理, 因?yàn)榘唇┦瑫r(shí)間, 巨人確實(shí)運(yùn)動了 105/210cs, 只是由于冰早于僵尸結(jié)算, 故實(shí)際要 +1cs. 一說這不科學(xué), 其它用卡用炮皆以實(shí)際時(shí)機(jī)書寫, 為何冰要特殊處理?


Simple AvZ 對此的解決思路如下.


首先,基于聲明好于命令的理念, 櫻辣窩核這四張卡以炮時(shí)機(jī)書寫更優(yōu), 因?yàn)閷?shí)際時(shí)機(jī)不如等效炮時(shí)機(jī)好用. 如此便有:


櫻桃實(shí)際在 360 生效, 但編寫者和讀者無需考慮這樣的細(xì)枝末節(jié), 統(tǒng)一作 359 即可, 清晰易懂.


由于櫻辣窩核以炮時(shí)機(jī)書寫甚為合理, Simple AvZ 選擇將冰也納入此體系, 以炮為綱, 一統(tǒng)江湖. 這也使得其對舊腳本的兼容性更佳, 且更符合 AvZ 的設(shè)計(jì)初衷.



自動設(shè)定波次


原生 AvZ 中, 我們常用 for (auto wave : {...}) 書寫循環(huán), 但循環(huán)節(jié)內(nèi)部首次 SetTime 時(shí), 必須不能忘記帶上 wave, 否則 AvZ 很生氣, 后果很嚴(yán)重.


既然這種寫法如此常用, 為何不自動設(shè)定波次呢? 于是就有了:


使用 Simple AvZ 提供的 waves() 函數(shù), 媽媽再也不擔(dān)心我忘記設(shè)定波次啦.


不僅如此, 你還可以用 waves() 表達(dá)更復(fù)雜的循環(huán):

更便捷的用卡


原生 AvZ 有以下三種常用的用卡方式:


可在實(shí)戰(zhàn)中, 我們經(jīng)常需要:


長久以來, 我們都習(xí)慣了這樣寫. 可既然這兩種情況如此常見, 為何不提供更便捷的寫法呢?


對常用的植物與僵尸, Simple AvZ 提供了(合理的)縮寫.


有種即有鏟. 你可以便捷地傳入鏟除時(shí)機(jī):


此外, 你也可以指定延遲 x cs 生效卡, 或是直接調(diào)用鏟除函數(shù)等, 詳見完整 API.



安全優(yōu)先


不知道你是否曾手滑, 寫出過下面這樣的代碼呢?


PvZ 里當(dāng)然沒有 8525 列, 可 AvZ 對于這樣的語句全程不會報(bào)錯(cuò), 徒留你在游戲里看著莫名奇妙軌跡的炮獨(dú)自凌亂.


游戲設(shè)定是明確的, 發(fā)射 0.0~10.0 列之外的炮必定沒有意義. 既然如此, 我們可以增加報(bào)錯(cuò)信息, 讓你在手滑后第一時(shí)間就能發(fā)現(xiàn)錯(cuò)誤.


Simple AvZ 提供的每一個(gè)函數(shù)都會對輸入進(jìn)行嚴(yán)格檢查. 在 AvZ 調(diào)用 Script(), 也就是剛點(diǎn)進(jìn) Survival Endless 模式時(shí), 就會告知玩家代碼中的錯(cuò)誤.


上面的代碼若用 Simple AvZ 提供的 P 函數(shù), 將報(bào)如下錯(cuò):


此外, Simple AvZ 會自動檢測 waves() 調(diào)用的波次是否有重復(fù)的, 避免寫錯(cuò)波次造成的不必要的麻煩.



API 一覽 (v1.0.0)


設(shè)定波次

Simple AvZ 的函數(shù)除非標(biāo)注"[外]", 都需在 waves() 循環(huán)節(jié)內(nèi)部使用.



設(shè)定時(shí)間

大多數(shù) Simple AvZ 函數(shù)的第一個(gè)參數(shù)為時(shí)間. after() 可以取負(fù)值, 但不推薦這樣做, 因?yàn)闀档涂勺x性.



用炮

發(fā)射一組并炸炮. 若省略行數(shù), 六行場地炸 2,5 路, 五行場地炸 2,4 路. 若省略列數(shù), 默認(rèn)炸 9 列.


用炮生效時(shí)機(jī)的變種. 其它函數(shù)也可使用.


發(fā)射一組攔截炮. 若省略行數(shù), 六行場地炸 1,5 路, 五行場地炸 1,4 路. 若省略列數(shù), 默認(rèn)炸 9 列.


發(fā)射一門炮. 可指明要用哪門炮. 可視情況選用 P, B, D 三種標(biāo)簽之一, 傳達(dá)用炮意圖.


不使用特定炮, 或重置為使用所有炮.


在屋頂場合, 你可以聲明多個(gè) CobOperator, 然后使用以上函數(shù).



用卡 / 用鏟

冰, 核, 櫻, 辣, 窩 默認(rèn)使用炮等效時(shí)間, 見[基于炮的時(shí)間體系].

夜間用冰. 自帶生效時(shí)機(jī)修正. 若不指定生效時(shí)間, 默認(rèn)在本波 601cs 生效.


白晝設(shè)置存冰位置. 若不指定生效時(shí)間, 默認(rèn)在 wave 1, -599cs 生效.


白晝點(diǎn)冰. 自帶生效時(shí)機(jī)修正. 若不指定生效時(shí)間, 默認(rèn)在本波 601cs 生效.


用卡. 可提供單一坐標(biāo), 多行同列, 或多卡同坐標(biāo).


用卡生效時(shí)機(jī)的變種.


指定用卡后的鏟除時(shí)機(jī).


鏟除植物. 可提供單一坐標(biāo), 多行同列. 也可指定要鏟除的植物種類.



演示功能

確保本波某類僵尸出現(xiàn)在某行, 主要用于錄制演示視頻.


請勿在實(shí)際沖關(guān)或批量測試中使用.



智能用卡

根據(jù)本行僵尸情況決定是否用卡. 提供"僵尸是否存在", 以及"僵尸x是否小于某值"兩種判斷方式. 主要用于實(shí)際沖關(guān)或批量測試.


錄制演示視頻時(shí), 更推薦用 EnsureExist, 因?yàn)檫@樣可以展現(xiàn)最復(fù)雜的情況.



腳本示例


參見此處.



了解更多


要查看 Simple AvZ 開發(fā)幕后的碎碎念, 請參閱?https://gitlab.com/avzlib/AvZLib/-/blob/main/crescendo/SimpleAvZ/doc/About.md.



Simple AvZ v1.0.0 發(fā)布的評論 (共 條)

分享到微博請遵守國家法律
乐业县| 四平市| 铁岭市| 德庆县| 天气| 南江县| 陆良县| 大埔县| 北流市| 固始县| 镇康县| 浑源县| 河源市| 清水河县| 淳化县| 调兵山市| 漯河市| 安国市| 黑山县| 上杭县| 柳林县| 古交市| 靖边县| 响水县| 永川市| 阿瓦提县| 裕民县| 鄄城县| 石楼县| 西青区| 莲花县| 阿勒泰市| 嫩江县| 西昌市| 镇宁| 九龙县| 清流县| 宜君县| 阳新县| 大冶市| 新晃|