[過去ログ] 【ウディタ】WOLF RPGエディター 其の71 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
473(7): 2022/11/27(日)11:30 ID:ssUaNl7O(1/5) AAS
複数の変数を選んで「格納されている数字の順に命令を実行する」方法を教えてください
「仲間の並び順を常にキャラID順にする」というコモンを作ろうとしたのですが一晩作業しても無理でした
474: 2022/11/27(日)12:22 ID:BnLaP0T+(1) AAS
・別のDBにパーティ情報をコピーしてそれをバブルソートする
・別のDB(初期値0)の項目番号:パーティキャラの主人公ID番を1にする。最後にそのDBを項目番号順に調べて値が1のやつだけ処理する
好きな方どぞ
475: 2022/11/27(日)12:25 ID:Lz3W71eC(2/4) AAS
ソート用のDBを用意して0に本DBのID、1にソート用の数字を格納するという方法をよくやってたけど
3.0でDB操作ができたから直接ソートするのもありよね
476: 2022/11/27(日)14:03 ID:E9q8qygY(2/4) AAS
基本システムの「X┣◆行動順の計算」でバブルソートをやってるから
ソート初心者なら一度それを読んだ方がいいかも
477: 473 2022/11/27(日)14:10 ID:ssUaNl7O(2/5) AAS
IDの正確な数字ではなく「そのIDは全体(現パーティ)の中で上から何番目か」を割り出してその順番にパーティに再編入させるという形にしたいという意味なのですが
そのような判別方法は用意されていないのでしょうか
478: 2022/11/27(日)14:44 ID:Lz3W71eC(3/4) AAS
全体のID数を把握する方法は二通り
一つはDB操作でDBに格納されたデータ数を取得する
もう一つはDBのデータ数>実際のデータ数の場合のときには、ループでカウンターを0から1つずつ増やし、DBのデータを上から順に参照していく
例えば名前が空欄のデータを見つけたらそこでループ中断する、とか
すると、ループが中断した時のカウンター数が全体のID数になる
その前提で質問に戻ると「上から何番目」が能力値とかだとすると、対象の能力値をループで上から参照し、条件(変数)でカウンターn番目に来たときに任意の処理を入れればいい
479: 2022/11/27(日)14:56 ID:00dBib9q(1) AAS
3.081
画像リンク
480(1): 2022/11/27(日)15:38 ID:fferOYec(1) AAS
パーティ内の順番調べたいなら可変DB見れば一発だが
やりたい事がいまいち分からん
481(2): 473 2022/11/27(日)16:01 ID:ssUaNl7O(3/5) AAS
>>480
目的は「パーティ内のキャラの並び順をID番号の小さい順にする」こと
その為に必要なのは「そのキャラのIDは現パーティ内で何番目かを把握する」こと
その為に必要なのは「IDの数字を「順位」に直す」こと
例えばIDが 2 4 12 8 6 7 だったら
2 4 6 7 8 12 の順に並べ直した上で1~6までの数字に直してコモンセルフ変21~26にそれぞれ記録
一度仲間を全員外した後でそれを条件にして順番に再加入させる
これができれば「パーティ内のキャラの並び順をID番号の小さい順にする」というのができるんだけど、どうやら「複数の変数同士の数値を比べて順位付けする」という機能はないようです
482: 473 2022/11/27(日)16:04 ID:ssUaNl7O(4/5) AAS
×2 4 6 7 8 12 の順に並べ直した上で1~6までの数字に直してコモンセルフ変21~26にそれぞれ記録
〇2 4 6 7 8 12 の順に並べ直した上で1~6位までの順位に対応したコモンセルフ変数21~26にそれぞれ記録
483: 2022/11/27(日)16:22 ID:XNmcUDKt(1) AAS
>>481
複数変数内での順位を調べる関数的なのは無い
ただその目的であれば順位が分からなくてもバブルソートで行ける
484(1): 2022/11/27(日)16:26 ID:rql/XECy(4/7) AAS
あぁ、なるほど!
噛み砕いて説明すると、並び替えのことをソートっていうんだよね。
並び替えの方法の1つのバブルソートっていう方法があるんだ。
基本システム2の戦闘の行動順も実は、素早さの大きい順にバブルソートしてて、
バブルソートっていうのは、値を比較して大きい方が手前、又は小さい方が手前に来るように、
ループ内で何度も交換して、並び替える方法なんだ。
だから、バブルソートってさっき言っていた人は正解!
初心者は、専門用語急に言われてもわかんないよね……。
ただ、明確な定義が必要な場合って結構あるから、
どうしても専門用語できちゃうんだよね!
485: 2022/11/27(日)16:29 ID:rql/XECy(5/7) AAS
あ、ごめん、レス番号付けてない中、タイミング被っちゃったね……。
>>484 は >>481 に対するレスね。
紛らわしくてすまん。
486(1): 2022/11/27(日)16:47 ID:IXoV13Jw(1/2) AAS
なんでバブルソートなの?
クイックソートやマージソートではダメなの?
ソートできりゃ何でもいいと思うんだが
効率ガーとか言うならバブルソートは一番効率的なソート方法ではないでしょ
487: 2022/11/27(日)16:47 ID:IXoV13Jw(2/2) AAS
なんでバブルソートなの?
クイックソートやマージソートではダメなの?
ソートできりゃ何でもいいと思うんだが
効率ガーとか言うならバブルソートは一番効率的なソート方法ではないでしょ
488(1): 473 2022/11/27(日)16:48 ID:ssUaNl7O(5/5) AAS
どうにもならなそうなんで
「パーティメンバーを0にする」コモンを作ってメンバーチェンジのイベント時にコモン005の直前に使う
並び順はその時に記述して指定するというダサい方法で妥協します
制作者の方にはぜひ複数の変数を順位付けして扱える機能の実装を求めます
489(1): 2022/11/27(日)17:00 ID:iMvCzC53(1) AAS
普通に仲間DBの1から順に在籍判定していけよ……
んで、引っかかった奴から順に変数格納していくと。
CDB用意してバリアブルした後に「何番目か」決めるなんて可読性低いやろ。
490(2): 2022/11/27(日)17:08 ID:Lz3W71eC(4/4) AAS
バブルソート機能くらい自分で作ればいい
2,4,12,8,6,7なら、2と4、4と12…って比較・入れ替えしていってだんだんゴール地点を前にしていけばいい
ちなみにこのID数だとバブルソートの計算量が一番少ないと思う
画像リンク
491: 2022/11/27(日)17:22 ID:rql/XECy(6/7) AAS
>>473
元も子もないこと言うとプレイヤーが並び順を変えられるようにした方が、
プレイヤー側も使いやすいし、工数も減るから、ID順に並び替えちゃうのは勿体ない。
ソート機能入れるなら、ソート用の能力値を選べるようにして、
その能力値順に並び替えるくらいした方が喜ばれる。
>>486
バブルソートは、実装が簡単で、コムソートへの強化も容易だし、
他のソートを学ぶ良い練習になるから、基本システム2に入っているんだろうけど、
クイックソートやマージソートを選ぶ辺りガチ勢で草
>>490
計算量の程度がなんとなくでわかるくらい感覚が身に付いていて草
仕事でも日常的に使ってそう
492: 2022/11/27(日)17:57 ID:rql/XECy(7/7) AAS
(誉め言葉のつもりでございやしたけど、
絡まれるの嫌でしたらすいやせん……、自信失くしたんでROMりやす……)
493: 2022/11/27(日)18:34 ID:/CcSyHBt(2/2) AAS
ウディタは配列構造を持ってないから、デフォルトで適切なソート機能が無いのは仕方ない
大変かもしれんけど、自分で目的に合わせて作るのが一番良い
494: 2022/11/27(日)19:00 ID:uX30wO11(1) AAS
素早さで順番変えるソートのやり方がわからんから
変数を1ずつ減らしていってゼロになったら行動開始みたいな戦闘作ってた思ひ出
495: 2022/11/27(日)20:05 ID:E9q8qygY(3/4) AAS
そういう戦闘も面白いんだけどな
ターン制ではなくなるが
496: 2022/11/27(日)20:52 ID:BPuKCYxM(1) AAS
>>489
の案は設計が安定すぎる
パーティメンバーが有限なら、内部変数として重複しない裏IDを設定しておき、別項の有効/無効でスキップする
並べかえる場合も参照用DBを用意すればいいわけで、プレイ上の動作と内部処理を同じにする理由はない
データ型に極度の最適化を求めると、プレイ中のソート画面のUIデザインまで関係してくるから面倒よね
>>488
複数の変数を順位付けって、評価関数でまとめて出力できるよね?
ウディタには変数の変数呼び出しが実装されているわけだし、"体力x10^6 + 攻撃力x10^2 + ID"やら、好きに作れる
タイプ番号は固定なわけだから、比較する項目(変数)番号を改行込みの文字列につっこんでコモン呼び出し、
戻り値を保存。これをソートすればいい
497: 2022/11/27(日)22:53 ID:qzO1ulMA(1) AAS
変わり種で解こうとピクチャ使ってみた。計算量は知らん
WoditorEvCOMMAND_START
[121][4,0]<0>(1600012,-1,0,0)()
[179][1,0]<0>(6)()
[250][5,4]<1>(6,0,1,4096,1600011)("","","","")
[121][4,0]<1>(1600012,1600011,1,1536)()
[111][4,0]<1>(1,1600011,0,1)()
[401][1,0]<1>(1)()
[150][11,1]<2>(32,1600011,0,1,1,1,255,0,0,100,0)("")
[300][4,1]<2>(0,2,1,1600011)("○メンバーの増減")
[499][0,0]<1>()()
[498][0,0]<0>()()
[121][4,0]<0>(1600011,0,0,0)()
[179][1,0]<0>(1600012)()
[124][4,0]<1>(1600013,16384,1600011,9)()
[111][4,0]<1>(1,1600013,1,2)()
[401][1,0]<1>(1)()
[300][4,1]<2>(0,2,0,1600011)("○メンバーの増減")
[150][3,0]<2>(34,1600011,0)()
[499][0,0]<1>()()
[121][4,0]<1>(1600011,1,0,256)()
[498][0,0]<0>()()
WoditorEvCOMMAND_END
498: 2022/11/27(日)23:11 ID:36D3lPOa(1) AAS
要素数少なければバブルソートで十分高速
たかが数十や数百なら前準備の必要なクイックソートよりも速いだろ
499: 2022/11/27(日)23:29 ID:E9q8qygY(4/4) AAS
ってか基本システムにバブルソートあるって言ったじゃんよ
アレ戦闘でしか使わんし、適当に書き込んで使えば良くね?
ちょっと読めば0番はソートしないことも
データ数をどこに書き込めばいいかも分かるじゃん
ついでに言えば3つ以上の実数の大小を判定するには
結局2つの実数の大小の判定が必要なわけで
ソート機能がデフォであるかどうかに大層な意味なんて無いよ
500: 2022/11/28(月)01:00 ID:aHbDfZFH(1) AAS
説明してもガン無視だと正直教えようがない
分からなくて聞きに来たんだから理解に苦しむ部分があるなら徹底的に聞いて良いんよ
501(2): 2022/11/28(月)01:42 ID:ignY9oVm(1) AAS
お前ら将来的なブラウザ実装も見据えとけよ?
カッケー高速処理に変数やらCDBやら無駄に使って
セーブ容量増やす方が悪手だと思うぜ!
502: 2022/11/28(月)01:57 ID:S54jUEYF(1) AAS
そういえば-vinput、-sinput機能無くなったな
残念でもないし当然だけど
上下前次1-新書関写板覧索設栞歴
あと 500 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.017s