1 名前:名前は開発中のものです。 [2007/08/06(月) 19:12:57 ID:CjKwgtC1] ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。 自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。 マルチポストはやめましょう。個人叩きも禁止です。 ※スレで質問をするときは、ドキュメント、スレの過去ログ、公式掲示板のログ、 FAQ、Google等で調べてからにしましょう。 前スレ(その11) ttp://pc11.2ch.net/test/read.cgi/gamedev/1175480292/l50 吉里吉里2/KAG3雑談質問スレ_過去ログ ttp://www.geocities.jp/kirikiri_log/ 吉里吉里ダウンロードページ ttp://kikyou.info/tvp/ 詳しくは>>2-5 辺りを参照のこと。
125 名前:名前は開発中のものです。 mailto:sage [2007/08/25(土) 00:27:18 ID:+Ct+P2W7] >>123 KAGだけだと難しいんじゃないかな? TJSがある程度分かるなら、 MessageLayer.tjs 内の highlightLink もしくは internalMouseMove をいじってみるとか。 俺はhighlightLinkをいじって、矩形表示じゃなくて 選択肢左にカーソルを出すように改造できたから、 矩形表示を消すくらいなら出来るんじゃない?
126 名前:名前は開発中のものです。 mailto:sage [2007/08/25(土) 03:39:03 ID:p8ksEMQn] >123 KAGのソース見たら、実はlinkタグにopacity属性を指定すると矩形の不透明度が変えられるようになってるね。 リファには書いてないけど。
127 名前:名前は開発中のものです。 mailto:sage [2007/08/25(土) 09:51:00 ID:gUE5l5/+] そういうのいくつかあったような。 使ってないのもあった気がする。将来用?
128 名前:名前は開発中のものです。 mailto:sage [2007/08/26(日) 01:12:47 ID:nqqmrYPp] 非推奨ってだけな気も。 もしくはリファ掲載忘れ。
129 名前:名前は開発中のものです。 mailto:sage [2007/08/27(月) 00:57:22 ID:jXsjYeLw] >もしくはリファ掲載忘れ。 たぶんこれだな。
130 名前:名前は開発中のものです。 mailto:sage [2007/08/27(月) 02:50:03 ID:/ISNwuy1] TJS側も最近ソース読むとドキュメント化されてない引数取ってたりするもんな。 仕様が固まってなくて隠したいのか 単に忘れてんのか区別付かないんでそういうのは 互換性のために使わないようにしてるが。
131 名前:名前は開発中のものです。 mailto:sage [2007/08/27(月) 23:46:14 ID:EpCIcKGg] 最新開発版の吉里吉里を使用しているのですが、Shift+F11などを無効にしたいと思ってます。 そのためkrkrconfでホットキーを無効にしているのですが、その設定が.cfファイルに書き出されるため.cfファイルを消すとホットキーが有効になってしまいます。 ユーザーの誤操作防止のため、出来ればユーザーが誤って消さないような形でShift+F11などを無効にしたいのですが、 何か良い手ご存知の方いらっしゃいましたらアドバイス願いします。
132 名前:名前は開発中のものです。 mailto:sage [2007/08/28(火) 01:02:04 ID:ZXoRjeUe] >>131 krkr.exe のバイナリ中 の "XOPT_EMBED_AREA_" という文字列の直後から、 リリース用オプション(cfファイルの中身と同様の書式) \0 無視するオプション項目(カンマ区切り) \0 という形で文字列がうまってるので、そこを書きかえれば良い。後ろをずらさないよう
133 名前:名前は開発中のものです。 mailto:sage [2007/08/28(火) 01:15:33 ID:kbMfCGvy] ファイルをリードオンリーにしただけじゃ削除は出来るんだっけ?
134 名前:名前は開発中のものです。 [2007/08/28(火) 23:25:22 ID:ap8CUtqf] タグをそのままコピペしてシナリオに書き入れてみたんだがBGMがならない [fadeinbgm storage="test.wav" loop=true time=3000] フォルダのファイルがちゃんと入っているのになんでだ?
135 名前:名前は開発中のものです。 mailto:sage [2007/08/28(火) 23:27:18 ID:YtOhwXNI] config.tjs
136 名前:名前は開発中のものです。 [2007/08/28(火) 23:30:25 ID:ap8CUtqf] >>135 MIDIからwaveにちゃんと書き換えたのにSEもBGMも鳴らないんだよ
137 名前:名前は開発中のものです。 mailto:sage [2007/08/28(火) 23:33:07 ID:YtOhwXNI] playbgm playse
138 名前:名前は開発中のものです。 [2007/08/28(火) 23:50:28 ID:ap8CUtqf] >>137 フォルダもタグも直したが鳴らない
139 名前:名前は開発中のものです。 mailto:sage [2007/08/28(火) 23:53:36 ID:nRDIgrKO] プラグインよみこんでない
140 名前:名前は開発中のものです。 mailto:sage [2007/08/28(火) 23:54:47 ID:nA6g/CjX] ('A`)つttp://homepage1.nifty.com/gutchie/kirikiri_kag2/faq.html#faq_error105.html
141 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 00:25:42 ID:gtxeTC/a] >>132 ありがとうございます。 ご指摘の方法でこちらの希望する動作が実現する事を確認致しました。
142 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 02:43:10 ID:XBBh2O7y] 厨房は夏休みの宿題でもやっとけよ
143 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 05:01:47 ID:RQh+/BIx] 音源と設定は音鳴るようにできてんのか? ファイルはまともか?
144 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 07:13:56 ID:Q6W1FWj3] >134 fadeinbgmでボリュームを指定してないからミュートで流れてる
145 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 07:57:57 ID:uiup7AQw] 二次元配列のソート、例えば f.test[i][5] (仮にi=0〜10くらいとする)番目の要素を昇順・降順ソートしたいとすると、 (f.test[0][5] = 4、f.test[1][5] = 12……という風に値が入っている) その場合どうすればいいでしょうか?
146 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 09:44:00 ID:G1wLM+RC] >>145 「ソート アルゴリズム」でぐぐれ。
147 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 09:58:35 ID:8AYyO6OI] sortメソッドに比較関数を渡せばおk f.test.sort(function(a, b) { return a[5] < b[5]; }, true);
148 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 13:36:26 ID:uiup7AQw] >>146 >>147 ありがとうございます、比較関数の方法で出来ました。 function downsort(array, num) { do { var j = 1; var c = 0; for (i=0; j<array.count; i++) { if (array[i][num] > array[j][num]) { array[i] <-> array[j]; c++; } j++; } } while (c != 0); return; } こんな関数を作ってみたりしたのですが、ソートの完了を判断する所で詰まってました。
149 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 14:21:42 ID:QrtVn23d] それはバブルソートを書こうとしたのか
150 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 16:31:00 ID:uVBEZhL2] 今どきソートの実装なんて誰も気にしねぇよ XBox版カルドセプト以外はな
151 名前:名前は開発中のものです。 mailto:sage [2007/08/29(水) 23:25:48 ID:GGUKfeuL] >>150 その話はやめてくれ。 友人と上位bitか下位bitでもめて俺が疑似乱数なんて所詮、漸化式って言ったら友人キレたw >>148 前提条件でぐぐれ。
152 名前:名前は開発中のものです。 mailto:sage [2007/08/30(木) 07:18:54 ID:2dUYEvCQ] Auto Path Table に登録されたファイル一覧みたいなものは取得可能なんでしょうか?
153 名前:名前は開発中のものです。 mailto:sage [2007/08/30(木) 12:10:00 ID:wdLWmfL6] 俺は必要だから自分で管理している。
154 名前:名前は開発中のものです。 mailto:sage [2007/08/30(木) 22:52:58 ID:stgXZKwj] >>134 実は拡張子が wav で中身が mp3 とか?
155 名前:名前は開発中のものです。 mailto:sage [2007/08/31(金) 04:24:12 ID:bUmv3QO3] 地味な嫌がらせだなw まあ、一度コーデック確認してみると良いんじゃない?
156 名前:名前は開発中のものです。 mailto:sage [2007/09/01(土) 21:52:50 ID:K5U/ZpZG] 吉里吉里2 2.29-dev.20070901が公開され検証依頼が出ているわけだが俺には対応できそうに無いorz ベテラン諸氏にお任せしますね。 ttp://kikyou.info/diary/?200709#i1_1
157 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 06:01:34 ID:6PyOsUM/] ベンチマークって以前の吉里吉里のバージョンでもできる?
158 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 16:33:45 ID:mKfO9Dnq] 吉里吉里でテキストファイルに abcd とか出力することってできんのかな?
159 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 17:33:37 ID:hZOg3bG2] >>158 できます
160 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 17:45:43 ID:mKfO9Dnq] できるのか! よかったらやり方教えてくれ
161 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 18:18:41 ID:NsV4FRbI] var mess='abcd'; mess.save('abcd.txt',''); ただしこれだとある不具合が起こるから、後は自分で考えてみ。
162 名前:名前は開発中のものです。 mailto:sage [2007/09/02(日) 22:20:29 ID:mKfO9Dnq] やっと出来ました ありがとうございます
163 名前:名前は開発中のものです。 mailto:sage [2007/09/03(月) 20:02:11 ID:hmL3wcEz] new CSVParser()とinitStorageで配列に読み込んだCSVファイルの 行数を取得する方法はありませんか? forループで行の末端まで回したいのですが、途中でvoidを返したらbreakで抜ければいいんですけど Arrayクラスのcountに相当するものがあれば良いかなと思ったので
164 名前:名前は開発中のものです。 mailto:sage [2007/09/04(火) 03:34:09 ID:qFzdTxhy] >>163 csv.initStorage('xxx.csv'); while((cell = csv.getNextLine())){ if (cell === void) break; // } こうですか?わかりません><
165 名前:名前は開発中のものです。 mailto:sage [2007/09/04(火) 06:31:24 ID:6QBnuvNC] まー、質問の意図としては「count 相当」っていってるから、 initStorage直後に全行数の取得方法が無いかどうかを 知りたいだと思うんだけど、それで言うと「無い」。 getNextLine() の度に逐次パースする実装になってるのよ。
166 名前:名前は開発中のものです。 mailto:sage [2007/09/04(火) 07:44:10 ID:+sDb9/K3] >>164-165 言葉足らずな説明でしたが御回答ありがとうございました。 素直にvoidとbreakで抜ける事にします。
167 名前:名前は開発中のものです。 mailto:sage [2007/09/04(火) 09:31:59 ID:7cVbmaSk] 激しく無駄だが、行数を知りたいだけならArray.loadで読み込んだ行数を使うとかな。 var list = []; list.load("xxx.csv"); csv.initStorage("xxx.csv"); for (var i = 0; i < list.count; i++) { var line = csv.getNextLine(); ... } あるいはparseStorageで全部取得してからその行数を調べる方法とか。 var csvdata = %[ result:[] ]; csvdata.doLine = function(list) { result.add(list); } incontextof csvdata; var csv = new CSVParser(csvdata); csv.parseStorage("xxx.csv"); for (var i = 0, result = csvdata.result; i < result.count; i++) { ... } ちょいトリッキーだが、クラス書いてインスタンスつくるよか手短になるので辞書を使ってみた。
168 名前:名前は開発中のものです。 mailto:sage [2007/09/04(火) 09:41:41 ID:7cVbmaSk] 連投スマンが、直接CSVParserのインスタンスに差し込んだ方が楽だった var csv = new CSVParser(); csv.result = []; csv.doLine = function(line) { result.add(line); } incontextof csv; csv.parseStorage("xxx.csv");
169 名前:名前は開発中のものです。 mailto:sage [2007/09/04(火) 09:56:04 ID:6QBnuvNC] >>167 CSV は、単純なファイル行数≠エントリ数(getNextLine()1回を1エントリ)なんで、 Array#load() だとちとアカンですな。まあ、クオートされた文字列中に改行が 含まれないことが保証されていれば問題ないかな。 そうでなければ、やっぱ一通り CSVParser に食わせて数えるしかないやね。
170 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 01:11:03 ID:eyToDUpX] 凄く初歩的な質問なのですが、式を評価する時に使う 「===」というのは、「==」と何がどう違うのでしょうか?
171 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 01:15:36 ID:3ko+xHlL] >>170 リファレンス嫁
172 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 01:21:49 ID:eyToDUpX] >== 演算子は型が異なれば適切に変換されてから比較 >=== 演算子(識別比較演算子)は型の変換は行われず、 >型までもが一致しなければ真にならない どうも失礼しました
173 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 09:02:39 ID:1YUuZJE3] ,, -─‐-、,,-─-,、 / ,'⌒ヽ\ 〈 ,‐-⌒-、ノ,,, |. \ /, ミ、Vヽl〉| | |,,, |. \ '|\Nヘ「ヽ||_|__,|. \ |L.| | ヽ、 | | ,,,|, .l . |_|_,|| .ノ |::|::: :|_| ,ノ | rrr´‐::: :j. L,,---‐‐'´ ノ i´^^i´ ̄~  ̄ ̄ ̄~i‐⌒ヽ, ヽ、__ヽ、______」-、__.⌒っ  ̄ 売れない僻みで、必死に偽ハッシュを投下・・・ オレたちが斜め上の努力をしてる間に、 売れてる作家はその時間で正攻法の努力っ・・・更なる飛躍っ・・・ 差が開く一方・・・ だが・・・ここでやめるわけにはいかないっ!! 賽は投げられたのだっ!
174 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 13:30:48 ID:iylqPPj2] >== 演算子は型が異なれば適切に変換されてから比較 >=== 演算子(識別比較演算子)は型の変換は行われず 関係ないがjavascript1.3に移行したときはこれ混乱したな・・・。
175 名前:名前は開発中のものです。 [2007/09/05(水) 16:52:41 ID:1aQXf4+A] javascriptはバージョン変わるごとに仕様が変わったり戻ったりしているから困ったことあったな。
176 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 19:36:30 ID:2DwcKv4X] 最近の等値性比較演算子と同一性比較演算子の両方を持つスクリプト言語は ecma-262と同じ意味だけどアリスのSystem4.0だけjs1.2のままなんだよな。まあ、元もとアレはスクリプト言語としておかしな設計だが。
177 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 22:24:09 ID:wushZy2l] JavaScriptもスクリプト言語としておかしな設計だし、 下敷きにしたTJSもおかしいよな。
178 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 22:57:51 ID:a5xDNyHJ] じゃあなんだったらいいんだ
179 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 23:01:04 ID:tcseuKyF] ここで満を持して ひまわり の登場です!
180 名前:名前は開発中のものです。 mailto:sage [2007/09/05(水) 23:07:29 ID:74ijxx8F] いや FORTRAN COBOL APL きっとこのあたり
181 名前:名前は開発中のものです。 mailto:sage [2007/09/06(木) 00:12:29 ID:XDEo8NLL] jsはそもそも関数型言語をC構文にしただけだし。 そのせいで関数型のパラダイムを理解出来ない奴が叩いてるだけ。 TJS2の仕様は昔のNSのjs2.0草案の劣化版。 そりゃ変に見える奴にはとことん変に見えるだろ。両方とも。
182 名前:名前は開発中のものです。 mailto:sage [2007/09/06(木) 01:16:16 ID:XwlU/szQ] いやJavaScriptが叩かれる要因はほかにもいろいろあるとおもうがw 弱い型付け、暗黙の型変換、扱いづらいオブジェクト指向モデルなどなど
183 名前:名前は開発中のものです。 mailto:sage [2007/09/06(木) 13:31:38 ID:eNp4qSO1] >扱いづらいオブジェクト指向モデル これ言いだすと宗教問題になると思うよ。 クラスベースかプロトタイプかは。 作った本人としては動的に書けるからプロトタイプベースにしただけなんだろうからそれ以上争う話でもないだろうし。 けど、TJS2の実装見てるとdeeタンがイマイチ元にしてるJSのプロトタイプの 仕組み理解してない部分があるように見える。 現状、TJS2はオブジェクトを動的に変更可能なクラスベースな状態だけど、 ES2共々メインパラダイムをどっちかはっきりしないと実装が困難になるだけでコード書く方はgdgdコードになりかねん。 Java厨 vs C#厨やPython厨 vs Ruby厨みたいな争いに加わりたくはないw
184 名前:名前は開発中のものです。 mailto:sage [2007/09/06(木) 16:04:55 ID:mJ+xYya0] tjsで一番変態なのは incontextof
185 名前:名前は開発中のものです。 mailto:sage [2007/09/06(木) 17:42:25 ID:AkvD/ZjP] やり方が違うだけでコンテキストの書き換えが出来る言語は他にもあるぞ。 invokeしてるのと同じ事だからリフレクションでも出来ないことはないし。
186 名前:名前は開発中のものです。 [2007/09/07(金) 03:49:40 ID:Gxn0uWUD] 質問です。 右クリックした時に、前景レイヤー0も消すように @layopt layer=0 autohide=true としています。 ゲームの途中の一部分だけ、前景レイヤー1も一緒に右クリック時に消したかったので @layopt layer=1 autohide=true として、消しておきたい部分が終わったら再度前景レイヤー0のみ消える ようにしようと思い、 @layopt layer=1 autohide=false を挿入したのですが、右クリックすると前景レイヤー1も消えてしまいます。 どうしたらよいでしょうか?
187 名前:186 mailto:sage [2007/09/07(金) 03:56:53 ID:Gxn0uWUD] すみません、勘違いでした。 挿入部分が間違っていたため、訂正したらちゃんと消えました、失礼しました…
188 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 12:47:09 ID:/HtJ/PzP] いつの間にかKKDE使いやすくなってた と思ったら起動5分でおかしなエラー吐いて気のせいだった
189 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 13:12:37 ID:y3SMZJhh] す、スレチかもしれませんが質問です。 最近、ちょあでぃふぇんすという同人ゲームがサイト上でアップされましたが、 あーいう風にMAPにコマを配置するにはどうすれば出来ますか。 どこを見ればわかりやすいとか示唆がでも構いません情報がほしいです。
190 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 14:42:13 ID:/HtJ/PzP] KKDEってまだ背景色を変えられないのか まだまだかぐや姫Studioが現役のままだなこりゃ
191 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 16:27:32 ID:gx3lT2vJ] 「ちょあでぃふぇんすという同人ゲーム」、「あーいう風に」なんて聞かれて 答えられるやつがいるとでも思うのか。その同人ゲームを知らないやつが ほとんどだろうし、知らないやつはわざわざゲーム名でぐぐってまでお前の 質問に答えようとはしない。 「あーいう風にMAPにコマを配置」ってところを、具体的に分かりやすく お前が説明しろ。
192 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 16:28:22 ID:X/wOMBuQ] つーかサンプル画像持ってこい
193 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 18:00:28 ID:y3SMZJhh] す、すいませんでした。 画像を用意しました。 マスにそってコマを置いていくというものなのですが、 RPGツクールなどのように画像を等間隔に配置 していく感じです。 vista.undo.jp/img/vi8915545097.jpg
194 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 18:05:19 ID:D3ZislDS] レイヤーを等間隔に配置するだけじゃないか
195 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 20:08:38 ID:jQIVwKv+] キャプをヒントにやっとぐぐれたよ。いちおう吉里吉里なんだな。 KAGリファレンスやテンプレのサイトを参考に>>194 をやってみるといい。 話はそれからだ。
196 名前:名前は開発中のものです。 [2007/09/07(金) 20:14:12 ID:7jYc5R4s] unxp3とかxp3decでソース抽出して読め 読みにくいけどそこまでひどくはない
197 名前:名前は開発中のものです。 mailto:sage [2007/09/07(金) 20:16:53 ID:y3SMZJhh] >>194-196 わかりました。示唆ありがとうございます。 頑張ります。
198 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 02:37:44 ID:RITYgY6W] つーかC++とかjavaとかああいう言語で作った方が楽そうだな。
199 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 03:16:27 ID:fInbOD0W] >>198 C++やJava使うなら、TJS使って吉里吉里を直接叩いたほうがラクだと思う。
200 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 03:20:35 ID:psxOKq1m] >>193 未だに見つけられないけどタイトル間違ってね?
201 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 03:29:06 ID:92vPEHUG] >>200 間違ってるな。 キャプのを見れば?
202 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 03:36:40 ID:psxOKq1m] >>201 キャプにタイトル載ってた悪い
203 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 03:36:42 ID:92vPEHUG] PSP2で動かしたいなぁ
204 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 04:58:52 ID:Knrt4QsC] >>199 TJSで書くとメインループが変態になるし標準ライブラリが無さ過ぎだからそれはない。 LLで書きたいならRubyなり、Pythonなり何でもあるし吉里吉里はKAGありき。 ミドルウェア作る手間が無い上に、ソースいじれるのは相当なアドバンテージ。
205 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 05:53:10 ID:psxOKq1m] 二次元配列(Array)に対して、findを使って添え字を返す事は出来ませんか? 例えばArray[0][5]〜Array[20][5]の中から、aaaという文字が現れる添え字を返す、というような
206 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 05:57:26 ID:fInbOD0W] >>205 多値を返す関数を作りたいって事?
207 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 06:17:49 ID:psxOKq1m] 作りたいというか、例えば hoge = [0,2,0,4,5,3] とかだと、hoge.find(2)とかで2の入ってる値を返せると思うんですけど hoge = [[1,3], [4,9], [5,10], [7,3]] とかだと、hoge[i][1]の中の10の入ってる添え字を返してほしいと思っても、単純に hoge.find(10) = 2 というようにはいかないので・・・
208 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 13:35:25 ID:MdoufHni] 位置が(3, 2)だからhoge.find(10) => 2は絶対にあり得な様な・・・。 多値を返したいんじゃなくてn次元の深さを考慮したいならループ回せばいいだけじゃない? ただ、外側のインデックスも欲しいなら配列で返さないといけないような気がするけど。
209 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 13:39:12 ID:92vPEHUG] 多次元配列で、一致する値のキーを取り出したって事? 専用関数がないなら、ループが早いかな。
210 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 13:56:04 ID:GR0gOYSF] ループが基本として、 サイズが固定なら設計をかえて1次元配列に格納してしまうというのもありかと。 hoge[y*サイズ+x] の形でつかう。find したあとは y = i / サイズ, x = i % サイズで逆算
211 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 14:28:35 ID:jV8L49pw] 配列で返すのが無難
212 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 15:54:43 ID:52YGSB/b] 検索する回数が多いんであれば、辞書配列と組み合わせてみるとか。 配列に格納するタイミングで辞書配列にも格納するとか。 array[3][2] = "aaa"; なら hash["aaa"] = "3,2"; みたいな(格納方法は色々あるけど) tjsのループは遅いから、メモリを消費したほうが効率がいいかもしれない。
213 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 22:31:06 ID:NNwR9/3A] 配列hogeの中身自体は配列objectだからそりゃfindじゃ探せない 内容である[5,10]の中のポインタなり文字列表現なりをfindに放り込まないと駄目だな 暇だしちょっと多元配列の中身探す関数でも書いてみるか少しかかる >>208 indexは0から始まるから[5,10]のindexは2であってる hogeが外側でhoge[n]はむしろ内側な気がするんだが
214 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 23:00:27 ID:NNwR9/3A] //こんな感じか //ポイント //配列はArrayクラス(型)のオブジェクトである //tjsの多元配列はArrayオブジェクトを要素として持つ配列に過ぎない function recursiveFind(array, value) { for(var i = 0; i < array.count; i++) { //お馴染み配列要素ループ if(array[i] == value) { //配列内要素が検索値と一致する場合 //インデックスを配列に格納して返す return [i]; } if(array[i] instanceof "Array") { //配列内要素が子配列であった場合 //子配列を対象に再帰 var result = recursiveFind(array[i], value); if(result instanceof "Array") return result.insert(0, i); } } return -1; //検索値valueが見つからない場合は-1を返す }
215 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 23:17:10 ID:NNwR9/3A] //階層化された辞書配列にも対応するとなると面倒だな function recursiveSearch(object, value) { if(object instanceof "Array") { for(var i = 0; i < object.count; i++) { if(object[i] == value) return [i]; var result = recursiveSearch(object[i], value); if(result instanceof "Array") return result.insert(0, i); } }
216 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 23:17:42 ID:NNwR9/3A] //続き if(object instanceof "Dictionary") { //辞書配列を配列に展開する時に //添え字の降順で展開されるのを保障しないと駄目だけどメンドイ var dicarray = [].assign(object); while(dicarray.count > 0) { if(dicarray[1] == value) return [dicarray[0]]; var result = recursiveSearch(dicarray[1], value); if(result instanceof "Array") return result.insert(0, dicarray[0]); dicarray.erase(0); dicarray.erase(1); } } return -1; }
217 名前:名前は開発中のものです。 mailto:sage [2007/09/08(土) 23:22:22 ID:NNwR9/3A] 動作チェックしてねー うまく動かないときの修正は自分で何とかしてください 返り値の配列には hoge = [[1,3], [4,9], [5,10], [7,3]] に対して recursiveFind(hoge, 10)の場合は[2,1] recursiveFind(hoge, 3)の場合は[0,1] hoge = [%["a"=>1,"b"=>3], %["c"=>4,"d"=>9], %["e"=>5,"f"=>10]] に対して recursiveSearch(hoge, 10)の場合は[2,"f"]が返るハズ
218 名前:名前は開発中のものです。 mailto:sage [2007/09/09(日) 04:03:47 ID:qk5Qqg96] >ID:NNwR9/3Aさん ありがとうございます、早速試してみたのですが recursiveFindの方は、if(array[i] instanceof "Array") {〜の所が上手く動いていないようで エラーにはならないものの値が帰ってきませんでした。(-1も帰ってこない) recursiveSearchの方は、while(dicarray.count > 0) {の所でエラーが出てしまいました。 自分ではちょっと分からないので、とりあえずこのままにしておきます。 わざわざ済みませんでした。
219 名前:名前は開発中のものです。 mailto:sage [2007/09/09(日) 10:55:56 ID:gBJvuiSC] //はーい、array.insertは値を返さないのが原因でしたね //これでおk //recursiveSearchも手直しするか function recursiveFind(array, value) { for(var i = 0; i < array.count; i++) { //お馴染み配列要素ループ if(array[i] == value) { //配列内要素が検索値と一致する場合 //インデックスを配列に格納して返す return [i]; } if(array[i] instanceof "Array") { //配列内要素が子配列であった場合 //子配列を対象に再帰 var result = recursiveFind(array[i], value); if(result instanceof "Array") { result.insert(0, i); return result; } } } return -1; //検索値valueが見つからない場合は-1を返す }
220 名前:名前は開発中のものです。 mailto:sage [2007/09/09(日) 11:10:27 ID:gBJvuiSC] function recursiveSearch(object, value) { if(object instanceof "Array") { for(var i = 0; i < object.count; i++) { if(object[i] == value) return [i]; var result = recursiveSearch(object[i], value); if(result instanceof "Array") { result.insert(0, i); // return result; //ココが原因でvoidが返ってた } } }
221 名前:名前は開発中のものです。 mailto:sage [2007/09/09(日) 11:12:37 ID:gBJvuiSC] if(object instanceof "Dictionary") { //辞書配列を配列に展開する時に //添え字の降順で展開されるのを保障しないと駄目だけどメンドイ var dicarray = []; // dicarray.assign(object); // Array.assignも値を返さなかった while(dicarray.count > 0) { if(dicarray[1] == value) return [dicarray[0]]; var result = recursiveSearch(dicarray[1], value); if(result instanceof "Array") { result.insert(0, dicarray[0]); // ココが原因でvoidが返ってた return result; } dicarray.erase(0); dicarray.erase(0); //配列の短縮処理が間違ってた } } return -1; }
222 名前:名前は開発中のものです。 mailto:sage [2007/09/09(日) 22:51:06 ID:BYjQlIfL] そろそろうざいから消えろよ^^
223 名前:名前は開発中のものです。 mailto:sage [2007/09/09(日) 23:06:00 ID:RII2Su3r] 半日もレス付いてないんだから黙ってれば良いだけだろ。 自分で蒸し返してどうする。
224 名前:名前は開発中のものです。 mailto:sage [2007/09/10(月) 03:18:17 ID:9r8dLBdh] >>223 さらに煽りたいだけだから無視するんだ
225 名前:名前は開発中のものです。 mailto:sage [2007/09/10(月) 07:12:58 ID:HRJrQ8HB] >>ID:gBJvuiSCさん 新しい記述の方で、思っているような二次元配列からの指定の値の位置を取得できました。 お手間をお掛けしまして本当にありがとうございました。