省容量‎ > ‎一事件‎ > ‎

一事件邏輯判定



有試過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==ba!=b a>b 或 b<aa>=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來串連多個邏輯判定。有興趣的點我