皆様、親切にご回答いただきありがとうございます。
いろいろな記述方法について学べて大変満足です。
一旦解決済みということにさせていただきます。
「こんな書き方もあるよ!」な意見があればぜひ聞いてみたいので、何かあれば引き続き回答いただければと思います。
ありがとうございました!
検索結果 29 件
- 2021年6月17日(木) 12:19
- フォーラム: MZ:質問
- トピック: 【解決済】JSキレイに書けないか質問
- 返信数: 13
- 閲覧数: 5235
Re: JSキレイに書けないか質問
奏ねこま様、回答ありがとうございます。
var x = ($gameActors.actor(1).equips()[0] || { note: 1}).note;
2つ目は論理和( || )の特性を利用した書き方です。
装備の有無によって論理和の左側を使うか右側を使うかが変わります。
装備があるとき: ($gameActors.actor(1).equips()[0]).note
装備がないとき: ({ note: 1 }).note
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference ...
var x = ($gameActors.actor(1).equips()[0] || { note: 1}).note;
2つ目は論理和( || )の特性を利用した書き方です。
装備の有無によって論理和の左側を使うか右側を使うかが変わります。
装備があるとき: ($gameActors.actor(1).equips()[0]).note
装備がないとき: ({ note: 1 }).note
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference ...
- 2021年6月17日(木) 11:55
- フォーラム: MZ:質問
- トピック: 【解決済】JSキレイに書けないか質問
- 返信数: 13
- 閲覧数: 5235
Re: JSキレイに書けないか質問
chro様、回答ありがとうございます。
reduceメソッド、存在は知っていたのですがとっつきにくく、敬遠していました・・・
今の自分のレベルでは後で見返した時にもちんぷんかんぷんな事になりかねないので、
教えていただいた手前申し訳ないですが、今回は愚直に書こうと思います・・・
即時実行関数式などは、今後役に立つと思いますので、しっかり読んで勉強しておきます!
reduceメソッド、存在は知っていたのですがとっつきにくく、敬遠していました・・・
今の自分のレベルでは後で見返した時にもちんぷんかんぷんな事になりかねないので、
教えていただいた手前申し訳ないですが、今回は愚直に書こうと思います・・・
即時実行関数式などは、今後役に立つと思いますので、しっかり読んで勉強しておきます!
- 2021年6月17日(木) 11:44
- フォーラム: MZ:質問
- トピック: 【解決済】JSキレイに書けないか質問
- 返信数: 13
- 閲覧数: 5235
Re: JSキレイに書けないか質問
Plasma Dark様、回答ありがとうございます!
ところで、コードをキレイに書くことの目的ははっきりしているでしょうか。
きれいなコードそのものを目的にしてしまう人もいますが、たいていの場合、目的は明日(あるいは1週間後、1ヶ月後、もしかしたら1年後)の自分が迷わず読めるコードにすることです。
そして、それにはだいぶ書き手の好みが反映されます。
私は今回のような例であれば、コードの横幅を考えて、変数を作ってしまうことが多いですね。
確かに、後から読む分には横幅などを考えれば一旦変数に入れるべきですね・・・
自分が後で見やすいように、というのを意識してみます ...
ところで、コードをキレイに書くことの目的ははっきりしているでしょうか。
きれいなコードそのものを目的にしてしまう人もいますが、たいていの場合、目的は明日(あるいは1週間後、1ヶ月後、もしかしたら1年後)の自分が迷わず読めるコードにすることです。
そして、それにはだいぶ書き手の好みが反映されます。
私は今回のような例であれば、コードの横幅を考えて、変数を作ってしまうことが多いですね。
確かに、後から読む分には横幅などを考えれば一旦変数に入れるべきですね・・・
自分が後で見やすいように、というのを意識してみます ...
- 2021年6月17日(木) 11:01
- フォーラム: MZ:質問
- トピック: 【解決済】JSキレイに書けないか質問
- 返信数: 13
- 閲覧数: 5235
Re: JSキレイに書けないか質問
$gameActors.actor(1) が null だと equips() を呼んだ時点でエラーになるので
うるさいくらい null チェックして…
actor1がいないことはないんだろうと思いますが actorId も変数になる場合は気にした方がいいのかなぁと
WTR様、追記ありがとうございます。
参考になります。
今回はパーティは主人公オンリーの構想で組んでいるので、
$gameActors.actor(xx)のnullチェックとかは全く考えてなかったです(笑)
しかし、今後アクターを指定するような構想を組む場合には必要な情報だと思うので、記憶の片隅に置いておきます ...
- 2021年6月15日(火) 22:17
- フォーラム: MZ:質問
- トピック: 【解決済】JSキレイに書けないか質問
- 返信数: 13
- 閲覧数: 5235
Re: JSキレイに書けないか質問
質問されてないところですが
ツクールには Math.randomInt() なる便利関数がいますね。
以下は等価です。
Math.floor(Math.random() * 6);
Math.randomInt(6);
damage のリミット処理…
//damage = damage<=1 ? 1 : damage;
//$gameVariables.setValue(2, damage);
$gameVariables.setValue(2, Math.max(1, damage));
とかでも?
奏ねこまさんのは…私も??でした 奥が深いなぁ
WTR様 ...
ツクールには Math.randomInt() なる便利関数がいますね。
以下は等価です。
Math.floor(Math.random() * 6);
Math.randomInt(6);
damage のリミット処理…
//damage = damage<=1 ? 1 : damage;
//$gameVariables.setValue(2, damage);
$gameVariables.setValue(2, Math.max(1, damage));
とかでも?
奏ねこまさんのは…私も??でした 奥が深いなぁ
WTR様 ...
- 2021年6月15日(火) 21:29
- フォーラム: MZ:質問
- トピック: 【解決済】JSキレイに書けないか質問
- 返信数: 13
- 閲覧数: 5235
Re: JSキレイに書けないか質問
このケースの場合は素直に変数に一度入れたほうが良いと思いますが。
私も何かと短く書きたがりなので案を出してみます。
var x = (e => e ? e.note : 1)($gameActors.actor(1).equips()[0]);
var x = ($gameActors.actor(1).equips()[0] || { note: 1}).note;
果たしてこれを「キレイなJS」と言えるかどうか。
1つ目のほうは変数に入れるのとやってることは同じですね。
回答ありがとうございます!
う、うわあぁぁぁ▂▅▇█▓▒('ω ...
私も何かと短く書きたがりなので案を出してみます。
var x = (e => e ? e.note : 1)($gameActors.actor(1).equips()[0]);
var x = ($gameActors.actor(1).equips()[0] || { note: 1}).note;
果たしてこれを「キレイなJS」と言えるかどうか。
1つ目のほうは変数に入れるのとやってることは同じですね。
回答ありがとうございます!
う、うわあぁぁぁ▂▅▇█▓▒('ω ...
- 2021年6月15日(火) 20:09
- フォーラム: MZ:質問
- トピック: 【解決済】JSキレイに書けないか質問
- 返信数: 13
- 閲覧数: 5235
【解決済】JSキレイに書けないか質問
もはやツクールほぼ関係なくてアレなのですが。
自作のスクリプトなのですが、この一行もっと美しく書けないでしょうか?
var x = $gameActors.actor(1).equips()[0]==null ? 1 : $gameActors.actor(1).equips()[0].note
$gameActors.actor(1).equips()[0]
を二回書いているのが気持ち悪くて、だけどこれだけのために変数作るのもなぁって思ってます・・・
ささいな問題なんですが、気になってしまうと落ち着かない性分なんです。
助言いただけると嬉しいです。
追記:スクリプトの全文です ...
自作のスクリプトなのですが、この一行もっと美しく書けないでしょうか?
var x = $gameActors.actor(1).equips()[0]==null ? 1 : $gameActors.actor(1).equips()[0].note
$gameActors.actor(1).equips()[0]
を二回書いているのが気持ち悪くて、だけどこれだけのために変数作るのもなぁって思ってます・・・
ささいな問題なんですが、気になってしまうと落ち着かない性分なんです。
助言いただけると嬉しいです。
追記:スクリプトの全文です ...
- 2021年6月13日(日) 22:27
- フォーラム: MZ:質問
- トピック: 【解決済み】アクターの装備更新反映のタイミングについて
- 返信数: 2
- 閲覧数: 1540
Re: アクターの装備更新反映のタイミングについて
回答ありがとうございます!WTR さんが書きました:$dataActors はデータベースに設定したアクター情報です。
プレイ中の状態は別途 $gameActors に保持されます。
アクター1の装備スロット3のメモならばで取得できるかと思います。コード: 全て選択
$gameActors.actor(1).equips()[3].note
いただいたコードで実現できました!
$dataActors と$gameActors の役割を勘違いしていました。
助かりました。ありがとうございました。
- 2021年6月13日(日) 17:06
- フォーラム: MZ:質問
- トピック: 【解決済み】アクターの装備更新反映のタイミングについて
- 返信数: 2
- 閲覧数: 1540
【解決済み】アクターの装備更新反映のタイミングについて
マップ上で装備を変更しても、スクリプトで変更後の装備情報が取得できません。
マップ上でアクター1の装備3を変更した後に、
$dataArmors[$dataActors[1].equips[3]].note
のスクリプトで装備している防具のメモ欄を取得しようと思っているのですが、
変更前の防具のメモを取得していしまいます。
(noteをidやnameにしても、前装備のものを取得)
装備変更はツクールのデフォルト機能で行っていて、画面上は正常に更新されています。
スクリプトは、マップの切り替え等をしても前装備の情報を取得してしまいます。
確認方法はconsloe.log();です ...
マップ上でアクター1の装備3を変更した後に、
$dataArmors[$dataActors[1].equips[3]].note
のスクリプトで装備している防具のメモ欄を取得しようと思っているのですが、
変更前の防具のメモを取得していしまいます。
(noteをidやnameにしても、前装備のものを取得)
装備変更はツクールのデフォルト機能で行っていて、画面上は正常に更新されています。
スクリプトは、マップの切り替え等をしても前装備の情報を取得してしまいます。
確認方法はconsloe.log();です ...