特定範囲におけるスイッチのうち、ONになっているスイッチの数を数える方法を教えてほしいです。
例えば、スイッチ1~100の範囲で50個のスイッチがONになっている場合に、『50』という数字を数えて変数に代入したいです。
やりたいことは、プレイヤーにアイテムのコンプリート状況を伝えたいのですが現状下記のように実装しようとしてまして、その際に必要になるためです。
1.アイテム取得時にそのアイテムに対応するスイッチをONにする
2.そのスイッチがONの時に『取得アイテムを数える変数』を1加算する。これを繰り返して現在のアイテムの取得数を数える
この2の作業で現状ですと、アイテムの数だけ条件分岐を用意する必要がありまして、アイテムの数が増えるほど手間もミスも増えるため質問させて頂きました。
【解決済み】スイッチがONになっているスイッチ数を数える方法
【解決済み】スイッチがONになっているスイッチ数を数える方法
最後に編集したユーザー ninjaman [ 2025年4月24日(木) 01:36 ], 累計 1 回
- DoujinRuis
- 記事: 166
- 登録日時: 2022年10月25日(火) 10:59
Re: スイッチがONになっているスイッチ数を数える方法
これでどうでしょうか?
その時点でのゲームスイッチを全て確認してのカウントの方が使いやすいですかね?
// スイッチ1~100のONの数をカウントして、変数1番に代入
let count = 0;
for (let i = 1; i <= 100; i++) {
if ($gameSwitches.value(i)) {
count++;
}
}
$gameVariables.setValue(1, count); // 変数1番にセット
その時点でのゲームスイッチを全て確認してのカウントの方が使いやすいですかね?
// スイッチ1~100のONの数をカウントして、変数1番に代入
let count = 0;
for (let i = 1; i <= 100; i++) {
if ($gameSwitches.value(i)) {
count++;
}
}
$gameVariables.setValue(1, count); // 変数1番にセット
ゲーム制作情報共有ディスコード
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
discord.com/invite/dzUAC3CSMH
普段Youtubeで同人ゲームの情報を発信しています
https://www.youtube.com/@DoujinRuis/videos
Re: スイッチがONになっているスイッチ数を数える方法
こういった方法もあります。
スイッチの連番ではなく、変数の名前に、指定した文字が含まれた場合を対象とします。
アイテム追加やスイッチの範囲が変わったときに、スクリプトの編集はミスも起きやすく、可読性も悪いので。
変数の操作のスクリプト:
''で囲まれた、[アイテム]のみ変更します。
サンプル:
スイッチの連番ではなく、変数の名前に、指定した文字が含まれた場合を対象とします。
アイテム追加やスイッチの範囲が変わったときに、スクリプトの編集はミスも起きやすく、可読性も悪いので。
変数の操作のスクリプト:
コード: 全て選択
((switcheName = '[アイテム]') => $dataSystem.switches.reduce((a, c, i) => a + (c.match(switcheName) && Number($gameSwitches.value(i)) || 0), 0))()
サンプル:
コード: 全て選択
◆スイッチの操作:#0001 [アイテム]鍵 = ON
◆スイッチの操作:#0121 [アイテム]水晶 = ON
◆変数の操作:#0001 取得アイテムの数 = ((switcheName = '[アイテム]') => $dataSystem.switches.reduce((a, c, i) => a + (c.match(switcheName) && Number($gameSwitches.value(i)) || 0), 0))()
◆文章:なし, なし, ウィンドウ, 下
: :\v[1]個のアイテムを取得済み
Re: スイッチがONになっているスイッチ数を数える方法
DoujinRuis様、 chro 様
ご返信ありがとうございます!
どちらの方法でもやりたいことが実現できそうです。
この度はご回答ありがとうございました!
ご返信ありがとうございます!
どちらの方法でもやりたいことが実現できそうです。
この度はご回答ありがとうございました!
Re: 【解決済み】スイッチがONになっているスイッチ数を数える方法
追加です。
範囲指定する場合の1行のスクリプトです。
1から100まで。[1 , 100]の数値のみ変更。
範囲指定する場合の1行のスクリプトです。
1から100まで。[1 , 100]の数値のみ変更。
コード: 全て選択
((range = [1 , 100]) => Array(range[1] - range[0] + 1).fill().reduce((a, c, i) => a + Number($gameSwitches.value(i + range[0])) || 0, 0))()