2011年11月17日星期四

KAG教學---如果......否則,if 條件判斷(2)

上次介紹的[if]真的是十分好用,幫我解決了不少難題。>( ゚ω゚ s)

(k ゚∀゚)<既然如此,不如嘗試解決以下的情況。如果f.a、f.b、f.c是三個角色a、b、c的好感度,當角色a、b、c的好感度都大於3,就顯示Good Ending,否則就顯示Bad Ending。

唔......是不是好像這樣?>( ゚ω゚ s)

[if exp="f.a>3&&f.b>3&&f.c>3"]
Good Ending
[endif]
Bad Ending

(k ゚∀゚)<當然不對,雖然"Good Ending"這句可以正確地顯示,不過不論f.a、f.b、f.c的數值是什麼,"Bad Ending"這句一定會被顯示。

唔......如果改成這樣行嗎?>( ゚ω゚ s)

[if exp="f.a>3&&f.b>3&&f.c>3"]
Good Ending
[endif]
[if exp="f.a<=3||f.b<=3||f.c<=3"]
Bad Ending
[endif]

任何變數只要小於或等於3,就會顯示"Bad Ending"這一句。>( ゚ω゚ s)

(k ゚∀゚)<上述的答案的確可以解決這情況,不過有一個更好的方法可以判斷,看看以下的範例。

[if exp="f.a>3&&f.b>3&&f.c>3"]
Good Ending
[else]
Bad Ending
[endif]

(k ゚∀゚)<在上述的範例裡,我們用到了[else],[else]是當[if]裡的條件不成立時,[else]和[endif]之間的內容就會被執行,不過若果[if]裡的條件成立時,執行的範圍就會由[if]至[else]了,這點必須留意。

(k ゚∀゚)<所以當f.a、f.b、f.c都大於3的話,吉里吉里就會顯示"Good Ending"這一句,若果是不符合這條件的情況,即是f.a、f.b、f.c任何一個數值小於或等於3,則會顯示"Bad Ending"這一句。

(k ゚∀゚)<再嘗試解決以下的情況吧,如果f.a、f.b、f.c是三個角色a、b、c的好感度,當角色a、b、c的好感度都小於或等於3時,就顯示"Bad Ending",而f.a大於3時,顯示"Ending A",而f.b大於3時,顯示"Ending B",而f.c大於3時,顯示"Ending C"。

(k ゚∀゚)<這次我有另一個條件,每個條件都有優先順序,f.a、f.b、f.c有兩個以上的數值大於3,優先順序是先考慮f.a是否大於3,再考慮f.b是否大於3,最後才考慮f.c是否大於3。

好像有點難,是不是這樣子?>( ゚ω゚ s)

[if exp="f.a>3"]
Ending A
[endif]
[if exp="f.b>3"]
Ending B
[endif]
[if exp="f.c>3"]
Ending C
[endif]
[if exp="f.a<=3&&f.b<=3&&f.c<=3"]
Bad Ending
[endif]

(k ゚∀゚)<不太對,若果f.a、f.b、f.c三個數值都大於3,吉里吉里就會同時顯示"Ending A"、"Ending B"和"Ending C"這三句。

唔......如果改成這樣行嗎?>( ゚ω゚ s)

[if exp="f.a>3"]
Ending A
[endif]
[if exp="f.b>3&&f.a<=3"]
Ending B
[endif]
[if exp="f.c>3&&f.a<=3&&f.b<=3"]
Ending C
[endif]
[if exp="f.a<=3&&f.b<=3&&f.c<=3"]
Bad Ending
[endif]

(k ゚∀゚)<嗯,上述的答案是其中一個可行的方法,不過有一個更好的方法可以判斷,看看以下的範例。

[if exp="f.a>3"]
Ending A
[elsif exp="f.b>3"]
Ending B
[elsif exp="f.c>3"]
Ending C
[else]
Bad Ending
[endif]

那麼容易就可以!?>( ゚ω゚ s)

(k ゚∀゚)<上述的範例裡,我們使用到[elsif],[elsif]是[else]和[if]的結合。上一句[if]或[elsif]的條件不成立,[elsif]裡的條件就會被考慮。

(k ゚∀゚)<例如當f.a大於3,吉里吉里就會顯示"Ending A",然後跳到[endif],其餘[elsif]的條件將不會被考慮,所以就算f.b大於3,也不會顯示"Ending B"。

(k ゚∀゚)<必須當"f.a大於3"不成立,"f.b大於3"這條件才被考慮,這意味著如果吉里吉里顯示"Ending B",f.a必須小於或等於3("f.a大於3"不成立),並且f.b要大於3,即是跟"f.b>3&&f.a<=3"這句的意思一樣。

(k ゚∀゚)<同樣地,f.a和f.b必須小於或等於3,並且f.c要大於3,吉里吉里才會顯示"Ending C"。

(k ゚∀゚)<若果上述所有條件都不成立時,即是f.a、f.b和f.c都小於或等於3,吉里吉里將會顯示"Bad Ending"。

[elsif]和[else]真是令條件簡化了不少啊。>( ゚ω゚ s)

(k ゚∀゚)<[elsif]和[else]還有另一個好處,若果我們使用四個[if],無論前面的條件是否成立,吉里吉里都會判斷這四個條件,但若果像上述的範例,只要滿足了其中一個條件,吉里吉里就不會理會後面的條件,這樣可以減少沒必要的條件判斷和運算。

(k ゚∀゚)<這次介紹差不多了,下次再見。

沒有留言:

發佈留言