【完了】プラグインのレビュー依頼:敵グループのランダム化

アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: プラグインのレビュー依頼:敵グループのランダム化

投稿記事by Plasma Dark » 2020年3月29日(日) 16:25

conditionの宣言位置は変更前でも自動勝利しませんでした


おや、確かに、clearされていないので敵自体は出てくるんですね。
必ず1回目の戦闘と同じ構成で出てきそうです。

空配列で初期化していたのは、参考にしていたコードがそう書いていたからそのまま真似しました。
意味がないというのを直ぐに理解できませんでした。


参考にされたのは RandomEnemies.js のコードでしょうか。
https://github.com/RexGit/Random-Enemies/blob/master/js/plugins/RandomEnemies.js

これはNoteTagの内容を配列で返すためだと思われますが、コード的に参考にしちゃいけない類です。インデントもロジックも現代アートの領域ですね。忘れてください。

意味がないというのは、初期化の際に代入している [] (空配列)が、直後に selectEnemyId の戻り値で上書きされて捨てられるためです。
82.js では var が消えてしまっているので、エラーで怒られそうな気がします。

凄く短くなりますね…


短くはなるが、可読性的にちょっとだけ微妙な感じになりそうです。
このくらい読めるじゃんという人と、ぱっと見わかりにくいという人に意見が分かれそうなコードだと思います。

以下のようにして Game_Enemy に渡す敵IDと、敵キャラを隠す条件を明示してあげるとやさしいコードになりそうです。

コード: 全て選択

var randomEnemyId = selectEnemyId($dataEnemies[member.enemyId]);
var enemyId = randomEnemyId || member.enemyId;
var enemy = new Game_Enemy(enemyId, member.x, member.y);
var hideEnemy = randomEnemyId === 0 || member.hidden;
if (hideEnemy) {
  enemy.hide();
} else {
  condition = false;
}
this._enemies.push(enemy);


冗長になることは確かなので、どちらを選ぶかは好み次第だとは思いますが。


“MV:質問” へ戻る