有試過coding的玩家都知道,在同人陣弄出if-then-else是一件非常麻煩的一件事,人家在compiler輕鬆做到的事,同人總是用上多幾倍的功夫和事件才弄得出。 現在某FK終於成功想出一個辦法在同人中完美實現到「一事件if-then-else」,中文「一事件邏輯判定」,能在動作中進行邏輯判定。 但要各位有心理準備,這招其實省不了多少容量...
| LUA | 同人陣 (一個完全沒有檢查的事件) | if true then --true從邏輯運算得出 --在檢查通過時的動作 else --在檢查不通過時的動作 end | 定義ifdo ,一個擁有布冧(從邏輯運算得到的)為賦值的變數(整數形態) 定義action.0為不通過時的動作 定義action.1為通過時的動作 執行action.{ifdo} |
在同人陣中,變數是沒有True False的。 運算起來只有1和0,分別代表True和False 在本頁,如果檢查通過了,會輸出1作為True;輸出0作為false
下面就詳解各種運算子 如果看不明運作的邏輯,試試為x和y代入一堆數字,你便會明了
等於算子 ( == ) 現在有兩個變數,x和y,如果x的值等於y,FK就會說「這裡什麼都沒有」;否則呢,FK就會說「同人技術研討中心真棒」
| LUA | 路亞解說 | 同人陣 (一個完全沒有檢查的事件) | 同人陣解說 | if x==y then FK.talk(' 「這裡什麼都沒有」 ')
else FK.talk(' 「同人技術研討中心真棒」 ') end | //如果x的值是y值 //FK就會說「這裡什麼都沒有」
//否則呢 //FK就會說「同人技術研討中心真棒」 | action.1="「這裡什麼都沒有」" action.0=''「同人技術研討中心真棒」" bool.{x}=0 bool.{y}=1 ifdo=bool.{x}
人物說話 FK %{action.{ifdo}}% | //定義正輸出是「這裡什麼都沒有」 //定義負輸出是「同人技術研討中心真棒」 //先定義x任何值bool.{x}都會成了0 //再定義當bool.{y}是1 //如果x等於y,bool.{x}=bool.{y}=1; 反之,第四行會改不回bool.{x}做1,ifdo會繼續有0為賦值 //輸出對應的項目 | 現在你會發現,同人陣比真正的程式語言更仆街了所以我說,如果你真的想認真弄遊戲的話,放棄同人陣吧
不等於算子 ( != ) 現在有兩個變數,x、y,如果x的值不是y,FK就會說「他們不一樣哦」;否則呢,FK就會說「他們是一對DER」
| LUA | 路亞解說 | 同人陣 (一個完全沒有檢查的事件) | 同人陣解說 | if x~=y then FK.talk(' 「他們不一樣哦」 ')
else FK.talk(' 「他們是一對DER」 ') end | //如果x的值不等於y的值 //FK就會說「他們不一樣哦」
//否則呢 //FK就會說「他們是一對DER」 | action.1=''「他們不一樣哦」" action.0="「他們是一對DER」" bool.{x}=1 bool.{y}=0 ifdo=bool.{x}
人物說話 FK %{action.{ifdo}}% | //定義正輸出是「他們不一樣哦」 //定義負輸出是「他們是一對DER」 //先定義x任何值bool.{x}都會成了1 //再定義當bool.{y}是0 //如果x等於y,bool.{x}=bool.{y}=0; 反之,第四行會改不回bool.{x}做0,ifdo會繼續有1為賦值 //輸出對應的項目 |
現在你會再次發現,同人陣真的真的比真正的程式語言更仆街了 但是,沒有最仆街,只有更仆街。更仆街的就在後頭:大於算子、小於算子、大於或等於算子、小於或等於算子
大於算子和小於算子 ( > 和 < ) 現在有兩個變數,x、y,如果x的值大於y,FK就會說「叉叉大一點哦」;否則呢,FK就會說「x沒有大過y」
| LUA | 路亞解說 | 同人陣 (一個完全沒有檢查的事件) | 同人陣解說 | if x>y then FK.talk(' 「叉叉大一點哦」 ')
else FK.talk(' 「x沒有大過y」 ') end | //如果x的值大於y的值 //FK就會說「叉叉大一點哦」
//否則呢 //FK就會說「x沒有大過y」 | action.1='「叉叉大一點哦」" action.0="「x沒有大過y」" ifdo=x-y ifdo=ifdo/2147483647 無條件進位 人物說話 FK %{action.{ifdo}}% | //定義正輸出是「叉叉大一點哦」 //定義負輸出是「x沒有大過y」 //x大於y就出正數,x=y出0,x小於y出負數 //再將正數變1,0和負數變0 //輸出對應數值 |
如果是小於算子的話,i.e. x<y,你要改成y>x,明啦(X
大於或等於算子和小於或等於算子 ( >= 和 <= ) 現在有兩個變數,x、y,如果x的值大於或等於y,FK就會說「哈哈哈」;否則呢,FK就會說「噢」
| LUA | 路亞和C++的解說 | 同人陣 (一個完全沒有檢查的事件) | 同人陣解說 | if x>=y then FK.talk(' 「哈哈哈」 ')
else FK.talk(' 「噢」 ') end | //如果x的值大於或等於y的值 //FK就會說「哈哈哈」
//否則呢 //FK就會說「噢」 | action.1='「哈哈哈」" action.0="「噢」" ifdo=x-y ifdo=ifdo+1 ifdo=ifdo/2147483647 無條件進位 人物說話 FK %{action.{ifdo}}% | //定義正輸出是「哈哈哈」 //定義負輸出是「噢」 //x大於y就出正數,x=y出0,x小於y出負數 //將0(等於的結果)也變成正數 //再將正數變1,0和負數變0 //輸出對應數值 |
如果是小於或等於算子的話,i.e. x<=y,你要改成y>=x,明啦(X
In a nutshell 總括而言
| 算子 | a==b | a!=b | a>b 或 b<a | a>=b 或 b<=a | | 同人動作 | action.1="正輸出" action.0=''負輸出" bool.{a}=0 bool.{b}=1 ifdo=bool.{a} 人物說話 FK %{action.{ifdo}}% | action.1=''正輸出" action.0="負輸出" bool.{a}=1 bool.{b}=0 ifdo=bool.{a} 人物說話 FK %{action.{ifdo}}% | action.1="正輸出" action.0="負輸出" ifdo=a-b ifdo=ifdo/2147483647 無條件進位 人物說話 FK %{action.{ifdo}}% | action.1="正輸出" action.0="負輸出" ifdo=a-b ifdo=ifdo+1 ifdo=ifdo/2147483647 無條件進位 人物說話 FK %{action.{ifdo}}% |
最後附上一句:勿死版,學懂靈活變通 只學懂同時運算一個邏輯判定是不夠的,還要學懂and or not來串連多個邏輯判定。 有興趣的點我
|
|
|