【ウディタ】WOLF RPGエディター 其の72 (956レス)
1-

452: 名前は開発中のものです。 [] 2023/09/04(月) 11:34:11.82 ID:OWDsRNFb(1/2) AAS
4桁の数字をランダムに入れ替えるのを文字列使わずに実現するには
どうすればいいでしょうか
453: 名前は開発中のものです。 [] 2023/09/04(月) 14:02:42.34 ID:OWDsRNFb(2/2) AAS
追記:桁数は4桁限定にはしないつもりなのですが、とりあえず4桁で
454
(1): 名前は開発中のものです。 [sage] 2023/09/04(月) 20:07:09.18 ID:5XhRwxM2(1/2) AAS
ver3だと「DBから1つ抜きだす」処理があるから、それを使えば楽
1.数値を順番にDBへ書き込む
(書き込む数値=処理する桁の値と考えれば良い)
元の数値が4桁と分かっているなら/1000と%1000でそれぞれ4桁の数値と残り3桁が出る、以後は繰り返し
書き込みのIDは初回0、以後は毎回+1される
2.変数=[0〜格納数-1]で取り出すIDを決める(格納数=基本的には該当DBのデータ数。ただし格納0でもデータは1つはある)
3.取り出したら、そのIDを抜き出し処理で消去
4.取り出した値は処理の回数に応じて*1000、*100、*10、*1して加算処理で格納
2〜3を4回ループで終わり
桁数を増やす場合、/、%、*の数値が増えるぐらいで大した差は無い
この処理は「一度引き出した値が消えるような処理全般」に使える
455
(1): 名前は開発中のものです。 [sage] 2023/09/04(月) 20:09:29.07 ID:5XhRwxM2(2/2) AAS
最後は2~4をループだった
まあ、分かると思うけど
456
(1): 名前は開発中のものです。 [] 2023/09/06(水) 14:48:05.57 ID:fDHZxigB(1/5) AAS
作った見たのですが今4以降のランダムに並び替える処理について考えています。
何か良案はないでしょうか?
457: 名前は開発中のものです。 [] 2023/09/06(水) 16:08:24.59 ID:fDHZxigB(2/5) AAS
>>455
もう往復して5回ぐらい消してるので、是非アイディアを頂きたいです
458
(1): 名前は開発中のものです。 [sage] 2023/09/06(水) 19:43:03.12 ID:6m0W3hTG(1) AAS
>>456
おそらく2でランダムなIDを取り出すんだぞ
459: 名前は開発中のものです。 [] 2023/09/06(水) 22:13:19.40 ID:fDHZxigB(3/5) AAS
|▼ 2.3.
|■変数操作: CSelf55[2進数列] = 1 + 0
|■回数付きループ [ CSelf45[チョイス] ]回
| |■変数操作: CSelf55[2進数列] *= 10 + 0
| |■
|◇ループここまで◇◇
|■回数付きループ [ CSelf45[チョイス] ]回
| |▼ 1.
| |■変数操作: CSelf53[抜き出す数] = CSelf42[方角] % 10
| |■変数操作: CSelf42[方角] /= 10 + 0
| |▼ 0を数えるだけの処理
| |■変数操作: CSelf57[0カウンター] = 0 + 0
| |■変数操作: CSelf52[一時変数] = CSelf55[2進数列] + 0
| |■回数付きループ [ CSelf45[チョイス] ]回
| | |■変数操作: CSelf58[判定] = CSelf55[2進数列] % 10
| | |■変数操作: CSelf55[2進数列] /= 10 + 0
| | |■条件分岐(変数): 【1】 CSelf58[判定] が 0 と同じ
| | |-◇分岐: 【1】 [ CSelf58[判定] が 0 と同じ ]の場合↓
| | | |■変数操作: CSelf57[0カウンター] += 1 + 0
| | | |■
| | |◇分岐終了◇
| | |■
| |◇ループここまで◇◇
460: 名前は開発中のものです。 [] 2023/09/06(水) 22:14:28.91 ID:fDHZxigB(4/5) AAS
| |■変数操作: CSelf55[2進数列] = CSelf52[一時変数] + 0
| |▼ ここまで
| |▼ 4.
| |▼ 指定の0の位置探しの旅
| |■変数操作: CSelf54[乱数] = 1 〜 CSelf57[0カウンター]
| |■変数操作: CSelf51[桁毎に10倍] = 1 + 0
| |■変数操作: CSelf52[一時変数] = CSelf55[2進数列] + 0
| |■回数付きループ [ CSelf45[チョイス] ]回
| | |■変数操作: CSelf58[判定] = CSelf55[2進数列] % 10
| | |■変数操作: CSelf55[2進数列] /= 10 + 0
| | |■条件分岐(変数): 【1】 CSelf58[判定] が 0 と同じ
| | |-◇分岐: 【1】 [ CSelf58[判定] が 0 と同じ ]の場合↓
| | | |■条件分岐(変数): 【1】 CSelf50[桁数] が CSelf57[0カウンター] と同じ
| | | |-◇分岐: 【1】 [ CSelf50[桁数] が CSelf57[0カウンター] と同じ ]の場合↓
| | | | |■ループ中断
| | | | |■
| | | |◇分岐終了◇
| | | |■
| | |◇分岐終了◇
| | |■変数操作: CSelf51[桁毎に10倍] *= 10 + 0
| | |■変数操作: CSelf50[桁数] += 1 + 0
| | |■
| |◇ループここまで◇◇
| |■変数操作: CSelf56[結果] = CSelf53[抜き出す数] * CSelf51[桁毎に10倍]
| |■
|◇ループここまで◇◇

変数56を24もしくは42にしたいのですがどうすればいいでしょうか
461: 名前は開発中のものです。 [] 2023/09/06(水) 22:21:19.46 ID:fDHZxigB(5/5) AAS
>>458
自分コモンイベントのみでやろうかと考えていまして
462
(1): 名前は開発中のものです。 [sage] 2023/09/06(水) 23:15:26.43 ID:SMHV0eKm(1) AAS
>>454を作ろうとしてつまったじゃないんかい
エスパーじゃないんだから何も言わなきゃ応用編やってるなんてわからんよ
>>454そのままは作れた? 作れたならデータベースを使うところを変数呼び出し値を使うように改造すればいける
463: 名前は開発中のものです。 [sage] 2023/09/07(木) 01:52:02.47 ID:PYxet5X3(1) AAS
見よう見まねに変に難しい処理作るくらいならもう適当な可変DBに一桁ずつぶっ込んだデータを適当に100回くらい入れ替えする簡単な処理でいいんじゃないの
464: 名前は開発中のものです。 [] 2023/09/07(木) 16:10:48.43 ID:QAmT0Nw/(1) AAS
>>462
すみません

でもこの方法だと変数を桁の数だけ使いますよね?
そこは諦めた方がいいですか?
465
(1): 名前は開発中のものです。 [sage] 2023/09/08(金) 02:49:15.05 ID:gruEaJ4o(1/2) AAS
変数にも桁はあるのでコード化を用いれば行けるとは思うよ
ただ、そんなことをやる意味が今の時代にあるかどうかは怪しいぞ
466: 名前は開発中のものです。 [] 2023/09/08(金) 03:12:30.76 ID:UgEva+3O(1) AAS
>>465
やってみたいです。是非教えて下さい。ダメだったら変数を桁の数だけ並べます。
467
(2): 名前は開発中のものです。 [sage] 2023/09/08(金) 12:28:12.95 ID:gruEaJ4o(2/2) AAS
例えば桁ごとに「1」「7」「2」「3」と入れるのを
変数1つに「1723」を格納して
出す時に/や%を駆使するだけ
3桁目を取り出すなら%1000と/100の2つの計算で取り出せるわけだ
ってか元の処理でもほぼ同じことをやってるはず
基本システムでも装備中の武器防具はこれで格納していて
万の桁がアイテムの種別を示し、9999以下がIDなんて感じだ
ただ、基本システムのコレは2つの情報を一気に取り出せるのに対して
並び替え処理では1つの情報を出すために複数の計算をすることになるから
本当にセルフ枠の圧迫を避ける意味しかない
468: 名前は開発中のものです。 [sage] 2023/09/08(金) 19:58:44.07 ID:2hGiGeEl(1) AAS
聞いてるのと別人だけど>>467は参考になった
ボタンの含まれる領域とボタン番号の両方を一度に出せんかなあと思ってたんだ
469: 名前は開発中のものです。 [sage] 2023/09/08(金) 20:59:29.57 ID:HCUrvZvi(1) AAS
DBに入れる変数の桁数を増やしたら処理遅くなる?
470: 名前は開発中のものです。 [sage] 2023/09/08(金) 21:21:22.71 ID:STyWSTDd(1) AAS
桁数が増えればループの回数も増えるんだからそりゃ遅くなる
でも人間が差を認識できるほどには変わらない
471: 名前は開発中のものです。 [sage] 2023/09/09(土) 00:47:54.43 ID:22AG7RUx(1/4) AAS
0〜99をそれぞれ別に格納してランダムに全て取り出しても負荷としてはショボイ
毎フレーム実行しても問題ないレベルだよ
(デバッグ文にして毎フレーム100行書いても平気かどうかは知らない)
472: 名前は開発中のものです。 [sage] 2023/09/09(土) 00:50:45.67 ID:22AG7RUx(2/4) AAS
ってか書き込む数字の桁数の話だったか
10000と0で負荷が変わるかというと、多分ほぼ変わらないと思うぞ
473
(1): 名前は開発中のものです。 [sage] 2023/09/09(土) 21:43:55.94 ID:TOhQYwEe(1) AAS
ウディタの数字は必ず32桁の二進数で表すという決まりがあってな
10000も0も32桁だから桁数は増えてないんだ
1を入れてるつもりでも0を31個入れた後に1を1個入れてるんだ
474: 名前は開発中のものです。 [sage] 2023/09/09(土) 23:03:21.42 ID:TEf6Sw0G(1) AAS
>>473
それをさらっと知ってる辺りウホイイ男なんだよな……
夜道には気を付けろよ
475: 名前は開発中のものです。 [sage] 2023/09/09(土) 23:45:23.76 ID:22AG7RUx(3/4) AAS
その手の話と読み取り速度問題はまた別と聞いたことがある
16bitの処理が32bitより遅いことがあるっていうやつ
あと厳密な意味で0と1のどちらの読み取りが早いかって問題はまだ別だと思う
つまり0000000と01111111では処理速度が違うのかも
476: 名前は開発中のものです。 [sage] 2023/09/09(土) 23:52:26.91 ID:22AG7RUx(4/4) AAS
すまん、そもそもウディタは32bitだけなんだから
16bit遅い問題はまったく関係ねえわ
上の話は忘れてくれ
1-
あと 480 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.013s