複数のステートのうちどれかにかかっている場合にダメージがあがるダメージ計算について質問です。
ダメージ計算式にa.atk * 4 * b.isStateAffected(4)と入れて毒がかかっているときにダメージを上げるようにしているんですが、これを毒だけではなく暗闇や、沈黙がかかっている場合でもダメージがあがるようにするにはどのように記述すればよろしいでしょうか?
b.isStateAffected(4,5,6)とかb.isStateAffected(4 || 5 || 6 )みたいな感じだったと思いますが、わかりません。
他に方法があるかと海外のも調べてみたのですが見つけられませんでした。
ステートのダメージ計算式について【】解決済み
ステートのダメージ計算式について【】解決済み
最後に編集したユーザー エコー [ 2016年8月14日(日) 07:40 ], 累計 1 回
Re: ステートのダメージ計算式について
残念ながら、ご提示のコードは動作しません。
まず、isStateAffectedは引数を一つしか取ることができないので、下のような書き方はできません。
多少冗長ではありますが、以下のように記述してください。
また、計算式は1行での記述が前提になるので、特定の条件でダメージを変更したい場合、
条件演算子を使う必要があります。
・条件 (三項) 演算子
https://developer.mozilla.org/ja/docs/J ... l_Operator
上記を踏まえた場合の記述例です。
毒、暗闇、沈黙の場合ダメージが10000加算
毒、暗闇、沈黙の場合ダメージが2倍
まず、isStateAffectedは引数を一つしか取ることができないので、下のような書き方はできません。
コード: 全て選択
b.isStateAffected(4,5,6)
b.isStateAffected(4 || 5 || 6 )
コード: 全て選択
b.isStateAffected(4) || b.isStateAffected(5) || b.isStateAffected(6)
条件演算子を使う必要があります。
・条件 (三項) 演算子
https://developer.mozilla.org/ja/docs/J ... l_Operator
上記を踏まえた場合の記述例です。
毒、暗闇、沈黙の場合ダメージが10000加算
コード: 全て選択
a.atk * 4 - b.def * 2 + (b.isStateAffected(4) || b.isStateAffected(5) || b.isStateAffected(6) ? 10000 : 0)
コード: 全て選択
(a.atk * 4 - b.def * 2) * (b.isStateAffected(4) || b.isStateAffected(5) || b.isStateAffected(6) ? 2 : 1)
プラグイン関連のトラブルが発生した際の切り分けと報告の方法です。
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30
[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
http://qiita.com/triacontane/items/2e227e5b5ce9503a2c30
[Blog] : http://triacontane.blogspot.jp/
[Twitter]: https://twitter.com/triacontane/
[GitHub] : https://github.com/triacontane/
Re: ステートのダメージ計算式について
おはようございます!
よこからスイマセン。
ちょうど先日、関数型言語の本を読んで影響されています
以下のコードなのですが
some() と組み合わせると以下のどちらかのようにも書けます。
10個とか、多めのステートをチェックする場合に使ってみてください。
ではでは。
※ some の第2引数を忘れていたので、使った例を追記しました

よこからスイマセン。
ちょうど先日、関数型言語の本を読んで影響されています

以下のコードなのですが
コード: 全て選択
b.isStateAffected(4) || b.isStateAffected(5) || b.isStateAffected(6)
10個とか、多めのステートをチェックする場合に使ってみてください。
コード: 全て選択
[4,5,6].some(b.isStateAffected.bind(b))
[4,5,6].some(b.isStateAffected, b)
※ some の第2引数を忘れていたので、使った例を追記しました
最後に編集したユーザー yamachan [ 2016年8月06日(土) 14:52 ], 累計 1 回
Toshio Yamashita (yamachan)
Plugin https://github.com/yamachan/jgss-hack/b ... ADME.ja.md
Twitter https://twitter.com/yamachan360
私が作成して本サイトに投稿したコードは著作権を放棄し、利用・改変・配布など全て自由です。
ただし同じ投降内に制限を明記している場合はそちらが優先します。
Plugin https://github.com/yamachan/jgss-hack/b ... ADME.ja.md
Twitter https://twitter.com/yamachan360
私が作成して本サイトに投稿したコードは著作権を放棄し、利用・改変・配布など全て自由です。
ただし同じ投降内に制限を明記している場合はそちらが優先します。
Re: ステートのダメージ計算式について
トリアコンタン様、yamachan様、ありがとうございます。
すみませんが、いままでは見ようみまね程度でコードを組んでました。
なるほど、そのように記述するんですね。
そう思うと自分が書いたコードは確かに無理があります><
また条件演算子のページの紹介もありがとうございます。
yamachan様の方法もあるとは思いませんでした。
someとbind(b))は私の中のダメージ計算式では見たことない関数なので勉強になります。
どうやら私にはまだまだ学習しないといけないことがたくさんあるようですね。
まず条件演算子を完全に把握してないので初級から読み直してみようと思います。
お二人ともこんな初心的な質問にわざわざ付き合っていただきありがとうございました。
すみませんが、いままでは見ようみまね程度でコードを組んでました。
なるほど、そのように記述するんですね。
そう思うと自分が書いたコードは確かに無理があります><
また条件演算子のページの紹介もありがとうございます。
yamachan様の方法もあるとは思いませんでした。
someとbind(b))は私の中のダメージ計算式では見たことない関数なので勉強になります。
どうやら私にはまだまだ学習しないといけないことがたくさんあるようですね。
まず条件演算子を完全に把握してないので初級から読み直してみようと思います。
お二人ともこんな初心的な質問にわざわざ付き合っていただきありがとうございました。