なんで?(質問掲示板

投稿: User icon mini 退会したユーザー 投稿:2011/10/29 17:32:29(最新:2011/10/29 19:32:29)
getFlag("プニョプニョ仲間入り")
!getFlag("プニョプニョ逃がした")

と開始条件に入れると
getFlag("プニョプニョ仲間入り")

こちらが動作していませんでした。
仕様ですか?

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2011/10/29 19:32, 履歴)
なお、各条件の結合の仕方の違いは
以下のとおりです。

どちらも成立(AND結合)「&&」
条件1 条件2 結果
 ×   ×   ×
 ○   ×   ×
 ×   ○   ×
 ○   ○   ○


いずれかが成立(OR結合)「||」
条件1 条件2 結果
 ×   ×   ×
 ○   ×   ○
 ×   ○   ○
 ○   ○   ○
Cdv30200 aoi icon mini aoihikawa(投稿日:2011/10/29 19:28, 履歴)
最初の場合、判定が2つある
getFlag("プニョプニョ仲間入り") #判定1
!getFlag("プニョプニョ逃がした") #判定2

そのため後者の判定2のみ判断されています。


修正版の場合、判定が結合され1つになる
#判定1と判定2がどちらも成立
getFlag("プニョプニョ仲間入り") && !getFlag("プニョプニョ逃がした") 

#判定1と判定2のいずれかが成立
getFlag("プニョプニョ仲間入り") || !getFlag("プニョプニョ逃がした") 

そのため、正常に動作します。


修正版の上と下、どちらを使うかは
行いたい内容に合わせてください。
User icon mini 退会したユーザー(投稿日:2011/10/29 18:58, 履歴)
詳しい説明ありがとうございます
でも両方成立の意味があまり分からないので教えてくださりますか?
動作するという意味ですか?
      mini きゅうり(投稿日:2011/10/29 18:47, 履歴)
 aフラグが立っていたら表示。
       ↓
     と思ったら、
       ↓
bフラグが立っていなかったら表示。

よって最後の判定で動作します。
つまり仕様ですね。
以下余談

両方成立している必要があるなら、
getFlag("プニョプニョ仲間入り") && !getFlag("プニョプニョ逃がした")

どちらかが成立している必要があるなら、
getFlag("プニョプニョ仲間入り") || !getFlag("プニョプニョ逃がした")

でokです。

「a == 0 && b == 1」などと書くと、
「aが0でbが1であれば真 それ以外は偽」
と判断します。つまり「&&」は、その左と右両方成立していれば真と判断する条件式です。

「a == 0 || b ==1」などと書くと、
「aが0か、bが1であれば真 それ以外は偽」
と判断します。つまり「||」は、その左と右どちらかが成立していれば真し判断する条件式です。