【解決済み】ツクールの計算式に出てくる記号について

アバター
UPV17745
記事: 57
登録日時: 2018年12月03日(月) 21:30

【解決済み】ツクールの計算式に出てくる記号について

投稿記事by UPV17745 » 2019年8月17日(土) 17:35

初心者質問で申し訳ないんですが、調べても理解できず「?」ってなってるものがあります。
例えば以下のような式なんですが…

 a.atk * 4 *(a.hp <= a.mhp / 5 ? 2 : 1) - b.def * 2

…における”?”と”:”は何を意味しているんでしょうか?(´・ω・`)
基本的な足引乗除はわかるんですが、他にもこの記号はこういう意味であるよということがあれば知りたいです。
最後に編集したユーザー UPV17745 on 2019年8月17日(土) 18:15 [ 編集 1 回目 ]

アバター
WTR
記事: 558
登録日時: 2015年12月22日(火) 19:14

Re: ツクールの計算式に出てくる記号について

投稿記事by WTR » 2019年8月17日(土) 17:49

条件式 ? A : B

条件式が成立していればA、そうでなければBが返ってきます。
if ~ else の短縮記述と考えてよろしいかと思います。


(a.hp <= a.mhp / 5 ? 2 : 1) の部分だけ抽出すると

a の hp が mhp の 1/5 以下なら 2 で、そうでなければ 1 という感じかと

↓と同じ意味になると思います。たぶん。。

if (a.hp <= a.mhp / 5) {
a.atk * 4 * 2 - b.def * 2
} else {
a.atk * 4 * 1 - b.def * 2
}
Twitter、はじめました。
https://twitter.com/wtr_in_reverie/
アバター
ツミオ
記事: 83
登録日時: 2017年4月02日(日) 13:46
連絡を取る:

Re: ツクールの計算式に出てくる記号について

投稿記事by ツミオ » 2019年8月17日(土) 17:56

こんにちは。
その「?」や「:」は三項演算子と呼ばれています。
以下のような形式になります。

コード: 全て選択

(条件式) ? (条件式がtrueのとき実行) : (条件式がfalseのとき実行)


したがって、

コード: 全て選択

(a.hp <= a.mhp / 5 ? 2 : 1)

の意味は以下の通りです。

・「使用者の現在HP」が「使用者の最大MP/5」以下ならば「2」を返す。そうでなければ「1」を返す

もう少し分解すると、
・条件式→a.hp <= a.mhp / 5
・条件式がtrueのとき実行→2
・条件式がfalseのとき実行→1
となります。

さらに詳しく三項演算子について知りたい場合は、以下のサイトが詳しいです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

以上、何か参考になりましたら幸いです。

*追記
書いてる間にすでに別の方が回答してましたね……。せっかく書いたので残しておきます。
【Twitter】https://twitter.com/TsumioNtGame/
【GitHub】https://github.com/Tsumio/rmmv-plugins

有償の依頼も募集中。
今まで有償で制作したものは実績をご覧ください。
アバター
UPV17745
記事: 57
登録日時: 2018年12月03日(月) 21:30

Re: ツクールの計算式に出てくる記号について

投稿記事by UPV17745 » 2019年8月17日(土) 18:15

>WTR様、ツミオ様
 わかりやすい説明ありがとうございます!
 なるほど、if文みたいなもの、と捉えるのは分かりやすいです。
 最初は比率か何かかなって思ってしまったので…

 とても助かりました。ありがとうございます!

“MV:質問” へ戻る