X



DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
垢版 |
2016/01/05(火) 23:44:29.77ID:fkNSYSkc
Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。

【公式】
http://homepage2.nifty.com/natupaji/DxLib/

【関連スレ】
C/C++ゲーム製作総合スレッド Part7 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1420939171/
ゲームプログラムなら俺に聞け32(c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1441693570/

●DXライブラリではなくDirectXの質問ならこっちへ
【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1418438785/
0378名前は開発中のものです。
垢版 |
2018/04/18(水) 22:24:37.19ID:+i4Yavlh
サポートに時間かけて逆に開発が遅延してるけどな
スマホ対応おそすぎどんだけ遅れればいいんだ
0381名前は開発中のものです。
垢版 |
2018/04/19(木) 06:32:44.17ID:GWEoEFzB
言うほど後追いしてる?
0383名前は開発中のものです。
垢版 |
2018/04/19(木) 12:47:14.74ID:Q0kUJgfG
369 名前:名前は開発中のものです。[sage] 投稿日:2018/04/13(金) 13:56:40.97 ID:Q35NURll
自分はどっちかといえばunity目指してほしい
上級者の玩具にするとDXライブラリの意味がなくなる


こいつ利用者で一番馬鹿だわ
0386名前は開発中のものです。
垢版 |
2018/04/22(日) 18:51:58.41ID:cgPT0kaN
今のゲームが当たり前に実装する物理レンダや物理演算は
ラッパーライブラリじゃあ実装できない
Direct Xのラッパーライブラリ作れば時代の最先端だったというのはもうずっと昔の話でしょ
過去の成功体験を忘れられないってか老害よな
0387名前は開発中のものです。
垢版 |
2018/04/22(日) 19:03:54.96ID:jyQNA3uE
それらが出来ないライブラリのスレに居座る老害が何いってんだ
乞食らしくUnity(笑)でも使っとけ
0389名前は開発中のものです。
垢版 |
2018/04/22(日) 20:26:07.89ID:cgPT0kaN
>>387-388
お前らはそこでUnityやUE4への批判をしてしまうところがよくない
DXライブラリでも面白いゲームは作れる!と熱っぽく語るべきだろ
DXライブラリが本当にダメみたいじゃないか
0390名前は開発中のものです。
垢版 |
2018/04/22(日) 20:34:19.03ID:w7fu0Q1x
スーファミレベルの2Dゲームが作れれば満足な俺みたいなおっさんには
今のゲームが当たり前に実装する物理レンダや物理演算なんぞ要らんのです
0391名前は開発中のものです。
垢版 |
2018/04/23(月) 07:23:43.24ID:zTmnRfht
>>398
ゲーム制作ツールとライブラリの区別もつかないとか
先に病院で頭見てもらうべきなんじゃないの?
0392名前は開発中のものです。
垢版 |
2018/04/23(月) 15:53:58.50ID:wUUOYYgP
2D作るにしても物理演算はあった方が便利っしょ。box2dくらいは使えるようになった方がいい。
0394名前は開発中のものです。
垢版 |
2018/04/25(水) 18:53:22.42ID:pNPtAbT4
とある意見「Box2Dぐらいは使えるようになった方がいい(便利だし開発が楽だから)」
とあるマゾ「俺は楽したくない変態だから物理演算はいらない。他の人間もそうあるべき」
俺「開発の効率を上げるのを拒む人間って害悪だよなあ。真空管でパンチカードでも通してろよ・・・」
0395名前は開発中のものです。
垢版 |
2018/04/25(水) 21:42:09.32ID:wCZSlXnR
>>394
その人にとって不必要な機能が追加されることは開発の効率を上げることに繋がらないどころか
その人の必要な機能に対して公式のサポートの手が回りにくくなることから
その人にとっては開発の効率が下がることに繋がるってことを理解しようぜ

機能はあればあるだけいいってもんじゃない、必要な機能だけあるのが一番いい
必要な機能は人それぞれ
0397名前は開発中のものです。
垢版 |
2018/04/26(木) 06:43:12.80ID:Q6Y0G65Q
>>394
Box2D使えばええやん
0398名前は開発中のものです。
垢版 |
2018/04/26(木) 08:55:16.56ID:8FkhnZEo
自分で組んでbox2Dより洗練された高速演算のライブラリを書けるならまあいいけどさ
物理挙動は入れずに衝突判定だけ取ることも出来るんだよ。そこに使うだけでもめっちゃ楽。
0400名前は開発中のものです。
垢版 |
2018/04/26(木) 21:26:57.30ID:O7SEtfFF
>>395
うーん、とりあえず君はプログラム云々以前に日本語を勉強すべきかな
日本語も満足に操れない人間がプログラミングなんてちゃんちゃらおかしいよ
0401名前は開発中のものです。
垢版 |
2018/04/27(金) 19:02:34.86ID:uyUfvLGU
資本力がないとゲームエンジンが開発できなくなったんだよね、今の時代
物理演算、物理レンダ、2Dボーン、タイルマップエディタ、シェーダーのビジュアルスクリプト
こういう「早い」「安い」「うまい」が実現できなければユーザー離れが起きる
0403名前は開発中のものです。
垢版 |
2018/04/27(金) 22:07:00.13ID:uyUfvLGU
ん、君はプログラマーか?
最近はタイルマップエディタとかビジュアルスクリプトが普通に使えるようになったから、
プログラマの負担が減らせるわけで、それはいいことなんじゃないの
(DXライブラリではよく知らんが、少なくともUnityやUE4では)
0406名前は開発中のものです。
垢版 |
2018/04/28(土) 15:19:30.35ID:o1LwlEpU
無駄なものを無駄と判断して切り捨てる能力こそシステム開発において至高

キャラを動かしてるだけで気持ちイイという操作感を追求するのなら物理も有益
0409名前は開発中のものです。
垢版 |
2018/04/29(日) 13:55:41.62ID:S7kv9d23
>>406
方向キー入れた瞬間から等速直線運動スタートしてくれた方が気持ちよくない?
確かにキャラが歩きだす時は加速度運動するのが物理的に正しいけど咄嗟の回避とか間に合わなくてストレスあるね
0410名前は開発中のものです。
垢版 |
2018/04/29(日) 19:49:17.45ID:SoZNbWO3
>>408
誰かと勘違いしてるのかな? 謝らなくていいからキチガイは病院へ行こうねw
0411名前は開発中のものです。
垢版 |
2018/04/30(月) 08:39:38.91ID:tt/t6/9o
>>410
煽られてキレて顔赤くするくらいなら煽らなきゃいいのに
煽らなかったら煽られないんだよ?わかる?w
0414名前は開発中のものです。
垢版 |
2018/04/30(月) 20:09:14.02ID:KhVGgt2z
このスレのレベルが低いのはわかりきってるのになぜわざわざ言葉に出すのか・・・・
0415名前は開発中のものです。
垢版 |
2018/05/07(月) 13:58:29.93ID:Vfb9Bs9K
確かにうんこ旨そうだよな
0422名前は開発中のものです。
垢版 |
2018/06/10(日) 16:27:22.57ID:qJZsL4jW
>>421
さあ、クソの役にも立たないゴミみたいなマウンテンゴリラレスはやめて
人の役に立つレスをしようぜ
0424名前は開発中のものです。
垢版 |
2018/06/13(水) 01:02:11.08ID:zpWb0K6R
最新のハードに対応するのはいいが、
グラフィックがもう10年前くらいの旧世代なのをなんとかしてほしいな
シェーダー使えないとか、HDR対応してないとか
形だけ対応して中身がついてきてない感じだ
0427名前は開発中のものです。
垢版 |
2018/06/30(土) 00:04:57.83ID:QTwf7deE
ジオメトリシェーダとハルシェーダが使えないのは別に文句ないけど
technique使用不可なのは地味にイライラする
0428名前は開発中のものです。
垢版 |
2018/07/04(水) 18:03:25.24ID:GKLylxjM
DXライブラリのシェーダーまわりはそれだけじゃないつーか
DirectX9とDirectX11でコーディング方法が違ったり、
Android版ではそもそもシェーダー使用不可能だったり、
2Dスプライトの表示にシェーダー使えなかったりして
あれもないこれもないって感じになっちゃうなぁ。まあそういうのがいらない人向けなんだろうけど
0429名前は開発中のものです。
垢版 |
2018/08/09(木) 02:58:08.73ID:w7j+HefU
VRoidのVRMファイルの読込に対応しようとしたらマテリアルが物理レンダのパラメータで
DXライブラリだとVRMファイル読込むのは難しそうだ
物理レンダ対応してくんないかな
0430名前は開発中のものです。
垢版 |
2018/08/11(土) 12:47:56.79ID:RmGfKRPO
DxLibのシェーダーのSamplerで、テクスチャごとに違うフィルタリングモードでSamplerを作りたいんだけど無理かな?
プログラム側でSetDrawModeで設定したフィルタリングモードになっちゃうんだけど
0434名前は開発中のものです。
垢版 |
2018/08/12(日) 00:15:54.84ID:DLCHw2GI
時代に遅れすぎた理由は、アセットストアがないせいだな
いまだにアセットがひとつもないのは、アセットおじさんも真っ青だわ
0436名前は開発中のものです。
垢版 |
2018/08/15(水) 02:14:13.34ID:I59D2OX6
DXライブラリでようやく地面モデルと線分の当たり判定つけられた
そこに主人公モデルの位置を同じにした
まだモーションつけてないから
主人公が棒立ちのまま移動した
坂道登れるだけで感動した(小並感
0440名前は開発中のものです。
垢版 |
2018/08/30(木) 08:01:34.88ID:w5Eoz0MG
>>439
多分そこが一番誤解されやすいとこだよな。
基本はDirectXで自前で全部作りたいけれどめんどくさい設定周りだけはやって欲しい人向けのお助けラッパーだよね。
そこにDirectX以上の機能はいらないし。今の状態で十分。
0441名前は開発中のものです。
垢版 |
2018/08/30(木) 14:26:51.75ID:83gEz2C2
「各種ゲーム用エンジン紹介」みたいなところで触れられる分には「そんなもんか」って感じだけど
「ゲームエンジンを使っている」カテゴリの中にDXライブラリ製ゲームが含まれるとあれ?って思う
自分でも基準がよく分からない
0442名前は開発中のものです。
垢版 |
2018/08/31(金) 10:19:13.96ID:MuDS6z7U
教えてほしいんですが
int fp = FileRead_open("csvファイル");
この場合、fpにはcsvがそのまま入ってるという解釈でいいですか?
つまり、ifstream ifs(fp);が可能になるのかが知りたいです。

ifstream ifs(FileRead_open("csvファイル"));は無理ですか?

なんでこんな面倒なこと考えるかというと、
archive化したファイル内のcsvを読みたいんです。
0443名前は開発中のものです。
垢版 |
2018/08/31(金) 10:29:38.50ID:MuDS6z7U
>archive化したファイル内のcsvを読みたいんです

厳密に言いますと、
ifstream ifs();で読み込んで
string buf[要素数];
while(ifs && getline(ifs,buf[line])){
line++;
}
とbuf[]に一旦、そのままcsvの中身を格納したいんです。

普通なら、
ifstream ifs(csvファイル);で問題ないじゃないですか?
でも、そのcsvがarchiveしたファイルから読み込む場合
ifstream ifs(csvファイル);だと読み込みません。
そこでFileRead_openを使うわけですが、
自分はどうしても
ifstream ifs(csvファイル);
string buf[要素数];
while(ifs && getline(ifs,buf[line])){
line++;
}
の流れで利用したいんです。
なので、ifstream ifs(csvファイル);に来る前に
FileRead_openを使い終わらせ、
あとはFileRead関数系を使わなくて済む様にしたいんです。

、、伝わりますか?僕の言いたいこと。。
0444名前は開発中のものです。
垢版 |
2018/08/31(金) 23:18:37.63ID:8gsP87Iw
archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから
最初にファイルサイズを計って1行ではなく全部をchar[filesize]に読み込むしかないんじゃない?
0445名前は開発中のものです。
垢版 |
2018/09/01(土) 06:52:39.05ID:RWsTVHZH
>>444
>archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから

え、それ本当ですか?

>最初にファイルサイズを計って1行ではなく全部をchar[filesize]に読み込むしかないんじゃない?

すみません、もう少し具体的に教えてください!
0446名前は開発中のものです。
垢版 |
2018/09/01(土) 07:02:25.87ID:BLfEX+5a
>>445
ファイルサイズが1000なら
char t_data[ 1000 ] にファイルのデータを格納する

で、後は添え字で任意のデータにアクセスする
0448名前は開発中のものです。
垢版 |
2018/09/01(土) 14:32:20.17ID:PENKT9BN
>>445
2chは長い行で書き込めないのよ

string all;
char* path = "./hello.csv";
int size = (int)FileRead_size( path ) ; // 1char = 1byte
char* buffer = new char[size];
int id = FileRead_open( path, false ) ;
FileRead_read( buffer, size, id) ;
all = buffer; // copy to string
delete[] buffer;
FileRead_close(id);

// allをcsvのrow(\r\n)とcol(,)でパースする。csv書式の不正チェックとか丁寧にやると長くなるので以下適当
string csv[ROW][COL];
string tmp = "";
int x = 0; int y = 0;
for(int i=0; i<all.length(); i++){
char c = all[i];
if(c == ',') {
csv[y][x] = tmp; tmp = ""; x++;
} else if (c == '\n') { // 本当は\r\nの2つで改行なんだけど
csv[y][x] = tmp; tmp = ""; x = 0; y++;
} else { tmp += c; }
}
csv[y][x] = tmp; // 最後の一個
文字列(string)から数値(intとか)に変えるときはatoiじゃなくてstrstreamだかを使うとよい
0449名前は開発中のものです。
垢版 |
2018/09/01(土) 14:44:21.63ID:PENKT9BN
追記
csvファイルの最後に無駄な改行がついてたりすると配列のサイズ超えたりしがちなので注意
0450名前は開発中のものです。
垢版 |
2018/09/01(土) 14:53:41.96ID:PENKT9BN
さらに追記
csvの最後ってヌル文字で終わってないだろうから自分で足したほうがいいかも

string all;
char* path = "./hello.csv";
int size = (int)FileRead_size( path ) ;

// '\0'が無い文字列char*をstringに渡すと長さ不定でまずい
char* buffer = new char[size+1];
buffer[size] = '\0';

int id = FileRead_open( path, false ) ;
FileRead_read( buffer, size, id) ;
all = buffer; // copy to string
delete[] buffer;
FileRead_close(id);
0453名前は開発中のものです。
垢版 |
2018/09/03(月) 23:58:20.90ID:JgPc/ZW2
「,」じゃなくてTABスペースで区切るとか
「'座標(x,y)'」みたいにシングル・ダブルクォーテーションで囲む「,」を含むセルだとか
CSVも奥が深い
0454名前は開発中のものです。
垢版 |
2018/09/04(火) 02:54:31.44ID:jVVbpFTb
ヘッダにコメントにセル内改行に空白セルに非固定列数に…
あれやこれや対応させると面倒なので、仕様はExcel出力版に決めうちとかしちゃう
それでいてExcel経由でもやり方によって微妙に違ったりするけど
0458名前は開発中のものです。
垢版 |
2018/09/04(火) 18:21:03.16ID:87Ucq8PA
ワロタw
そもそも「小数点の区切りがカンマ」って別に変な日本語じゃないと思うけど?
0459名前は開発中のものです。
垢版 |
2018/09/05(水) 02:54:47.49ID:6fPtkJ/i
「(整数と)小数の区切り記号がカンマ」か
「小数点という区切り記号がカンマ」かってとこじゃない?
まあいずれにせよ通じる内容、普通に見落としちゃうレベルではある
0460名前は開発中のものです。
垢版 |
2018/09/05(水) 23:25:30.03ID:jdPHLPpw
もう>>442は投げ出しているだろうよ
0461名前は開発中のものです。
垢版 |
2018/09/07(金) 06:49:13.67ID:SP/YWN4v
>>460
投げ出していません。
>>448さんのせっかくのソースがちょっと複雑で、、、
言葉でなにをしなければならないのか、アドバイスほしいです。

要は、
archive化したテキストファイルは改行コード\nが消えたバイナリファイル化してるから
普通にCSVを開くプログラムを書いていると
archive後、正常に読み込まないってことですよね?
ということは、バイナリ状態のCSVを読み込むプログラム文を書けってことですか?
でも、それだとビジュアルスタジオ上のデバッグプレイじゃ
バイナリ化してないcsvなんでエラーが起きますよね?

だからすごく困っています。
どうすればいいのか
0462名前は開発中のものです。
垢版 |
2018/09/07(金) 12:19:35.09ID:knV8JfdB
>>461
>>でも、それだとビジュアルスタジオ上のデバッグプレイじゃ
>>バイナリ化してないcsvなんでエラーが起きますよね?
何を言っているのか分からん

デバッグモードだろうがバイナリ形式のファイルを読み込むプログラムを書けばバイナリ形式で読み込むし、
テキスト形式を読み込むプログラムを書けばテキスト形式で読み込むでしょ
0463名前は開発中のものです。
垢版 |
2018/09/07(金) 12:41:21.71ID:SP/YWN4v
>>462
えっと、自分の知識不足かもしれませんが
普通に数字と「,」だけが詰まったcsvファイルを用意していても
バイナリ形式で読むプログラムを書いていれば
バイナリ形式で読むってことですか?

バイナリ形式で読むプログラムを書いた場合は
用意するファイルもバイナリ形式で保存されたファイルじゃないと
ダメなのかなと思っているんですけど。
0464名前は開発中のものです。
垢版 |
2018/09/07(金) 13:34:50.10ID:knV8JfdB
>>463
そもそも上の方に書いてあった
「バイナリ形式は改行が削除される」っていうのが表現として適切じゃないな

改行コードを改行として認識するのがテキスト形式
改行コードをそのまま文字の羅列として認識するのがバイナリ形式

テキスト形式のファイルをバイナリ形式で読み込んだら
そのテキスト内の改行コードがそのまま文字列として読み込まれるだけ
0465名前は開発中のものです。
垢版 |
2018/09/07(金) 13:46:37.16ID:2W2TZVJf
1 複数データを一つにまとめたい(暗号化したい)
2 読み込みプログラム(csvパーサー?)は既存のものをそのまま流用したい
ってことなのかな……

>>444,>>446,>>448のキモは、DXアーカイブファイルを一本のchar配列に読み込む(バイナリデータとして扱う)という部分なので、
結局DXアーカイブもifstreamも関係なくて、char配列内のバイナリデータを自力で解析できるかという話になる

パソコンで使うデータは全てバイナリデータと言えるので、csvだろうが音声だろうがDXアーカイブファイルだろうが全てバイナリ形式で読み込める
0466名前は開発中のものです。
垢版 |
2018/09/07(金) 14:40:43.77ID:SP/YWN4v
>>462
>パソコンで使うデータは全てバイナリデータと言えるので、
>csvだろうがDXアーカイブファイルだろうが全てバイナリ形式で読み込める

その理論だとcsvや音声などの外部素材データをDXarchiveファイルにしたとしても、
archiveする前、つまりはビジュアルスタジオのプロジェクト上で
ビルドして正常に機能してるプログラムそのままでも
archive後も正常に機能するはずではないですか?

もう少し具体的に言いますと>>442で説明しきれなかったんですが
ifstream ifsを利用して、csvの中の数値を配列に入れ込むプログラムを
自分は書いてまして、そのプログラムで問題なく動いてるゲームがあるんですが、
それの完成後にreleaseビルドして、使用してるサウンドやcsvの素材は
フォルダごとarchiveファイル化したんですよ(配布する場合は皆さんそうしますよね?。
そしてexeファイルを実行したところ、画像やサウンドは正常に読み込むんですが、
csvだけ正常に読み込んでくれないんです。
エラーになるというよりは、数値を正しく読み込んで無いようで、配列を利用した背景画像が
バグります。
例えばそこで素材をarchiveファイル化せずに、素材が入ったフォルダをそのままで
利用すると画像やサウンドはもちろん、csvも正常に読み込み、ゲームも正常に動くんです。
なので、私は、こう思ったわけです。
「csvについては、archiveファイル化すること前提にしたプログラムを組まないと
正しく読めないのかな」と。
それで、「FileRead_open」を使わないとダメなのかなと。
archiveファイルのcsvを読み込む場合、FileRead_openを利用しろと言われたことがあるので。
でもあなたの話を聞いてたら、違うのかな、とか。。。
0467名前は開発中のものです。
垢版 |
2018/09/07(金) 15:06:25.39ID:knV8JfdB
>>466
アーカイブは言わば「バイナリ形式」のファイルでしょ?

「テキスト形式のファイルを読み込むプログラム」でバイナリ形式のアーカイブを読み込もうとしてるからバグってるんじゃない?

123
456
789

上記のファイルがあったとして「1行読み込む」関数を使った場合
「123」「456」「789」って読み込むだろうけど
アーカイブ化(バイナリ形式)すると「1行読み込む」関数を使うと
「123\r\n456\r\n789」みたいに 一つの文字列として全部読み込むから数値が正常に読み取れてないと思うんだけど
0468名前は開発中のものです。
垢版 |
2018/09/07(金) 15:15:20.85ID:2W2TZVJf
まず、DXアーカイブファイルは全部のファイルを無理矢理合体&暗号化した完全独自形式のものなので、基本的にDXライブラリが用意した専用の関数でしか読み込めない

画像やサウンドはDXライブラリの読み込み関数を使うから、何もせずともDXアーカイブファイルから読み込めるようになってるんだよ
LoadGraph等には、内部的にFileRead_openが入ってるので、元のフォルダだろうとアーカイブだろうと読み込める

ただ、暗号化されてない場合に限り、小細工を弄すればバイナリファイルとして直接読める。(フォーマットを理解して自力でポインタ移動する必要がある) 上でみんなが説明してるのはこれ

これまでのやり取りを見る限り、バイナリファイル云々は今の君の知識で理解するのはたぶん無理なので、DXライブラリの関数使って地道にがんばったほうがいい
というかなぜFileRead_openを拒むのかがわからない……
0469名前は開発中のものです。
垢版 |
2018/09/07(金) 15:15:27.11ID:SP/YWN4v
呼び出し LoadData(int,int,string);//縦、横、csvファイルパス

void LoadData(int y,int x,string s){
  m_line = y; m_col = x;
  int line = 0;int count = 0;int sum = 0;int nokorinoketa=0;

  ifstream ifs(s);
  string buf[3000];
  Map.resize(m_line);//resizeで行数を決める
  for(int i = 0; i<m_line; i++){Map[i].resize(m_col);}//resizeで各行の列数を決める
  while(ifs && getline(ifs,buf[line])){line++;}
  
  for(int line=0; line<y; line++){
    for(int col=0; col<x; col++){
      if(col < x-1){
       sum = buf[line][count]-48;
       count++;
       while(isdigit(buf[line][count])){
          sum = sum*10 + (buf[line][count])-48;
          count++;}
       Map[line][col] = sum;//Noが格納
          count++;}
       if(col == x-1){//最後の数字
           nokorinoketa = buf[line].size()-count;
           sum = buf[line][count] - 48;
           while(nokorinoketa > 1){
             count++;
             sum = sum*10 + (buf[line][count])-48;
             nokorinoketa--;}
           Map[line][col] = sum;//Noが格納
         }}
     count=0;}}
0470名前は開発中のものです。
垢版 |
2018/09/07(金) 15:22:35.20ID:SP/YWN4v
行数制限のせいで見づらいソースになってますが、ご了承ください。
処理内容は引数で配列の縦と横の値と、csvファイルのパスを受け取り、
まず、bufに全部入れてから、map配列に入れていく感じです。
呼び出しはLoadData(4,4,"h/m/data.csv");みたいな感じで書きます。
archiveファイル化しなければ、これで正常に動きます。

>>468
>基本的にDXライブラリが用意した専用の関数でしか読み込めない
>画像やサウンドはDXライブラリの読み込み関数を使うから、
>何もせずともDXアーカイブファイルから読み込めるようになってるんだよ

納得です。それを聞きたかったんです。わかりやすいです。

>>というかなぜFileRead_openを拒むのかがわからない……
拒んでいません。
一応、FileRead_openを>>469のプログラムに組み込んで動くようにしたんです。
問題なく、動きます。それはプロジェクト上で、ですが。
で、やっぱり外部ファイルをarchiveしたら、そのプログラムではうまくcsvを読み込まないんです。
FileRead_openを組み込んだのに、FileRead_openを組み込む前と同じバグの状況です。
0472名前は開発中のものです。
垢版 |
2018/09/07(金) 15:28:30.17ID:SP/YWN4v
あ、ちなみに>>469で利用しているMap配列の要素数は決めておらず、
vector<vector<int>>Map;と宣言しており、
第一、第二引数を受け取ってから要素数を決定させています。
0473名前は開発中のものです。
垢版 |
2018/09/07(金) 15:35:23.97ID:SP/YWN4v
>>471
ちゃんとFileRead_readで読むプログラムに修正しました。

具体的には、
ifstream ifs(s);
while(ifs && getline(ifs,buf[line])){line++;}
の箇所を
int fh = FileRead_open(s.c_str());
while(fh && getline(fh,buf[line])){line++;}
と変更するだけです(この場合は最後にFileRead_close(fh);してます。

これで問題なくないですか?
実際に、visualstudioのプロジェクト上でビルドすると
正常に動いています。

なのに、releaseビルドして、素材ファイルをarchiveした途端
csvは正常に読み込まないんです、、、、ほんと参ってます。。

なにが悪いんでしょう?
0474名前は開発中のものです。
垢版 |
2018/09/07(金) 15:45:28.86ID:SP/YWN4v
なぜ、FileRead_openを使ってるのに、
FileRead_openを使ってないときのバグが出るんでしょうか。
でも、archive化しなければ、FileRead_openを使ってるそれでも正常に動くのです。

引数でcsvファイルのパスを受け取っているのが問題なんでしょうか?
でも、利用するcsvファイルがいくつもあるので呼び出し命令の引数でファイルを選択してやらないと
困るんですよね。
もちろん、引数では数値を受け取り、switchで数値ごとにcsvを選択させてもいいですが、、
でも引数が問題では無いとも思うんですよ、、、、、。

なんでなのか、もう何日も悩んでいます。

もしよかったら頭から数字,数字,.....というdataが入ったcsvを
FileRead_openで開いて、配列に入れていくという
シンプルなソースを書いてみてくれませんか?

DXライブラリのリファレンスにはcsvを使ったものが載ってないんですよ、、
なので、見せてほしいです。それを理解して応用させたいので。
お願いします、ほんと凄く困っていまして、、、
0476名前は開発中のものです。
垢版 |
2018/09/07(金) 17:09:17.90ID:stA8I9vh
良く分からんけど、こんな感じの事がしたいの?
void LoadData( int t_Width, int t_Height, std::string t_FileName )
{
int t_FileHandle = FileRead_open( t_FileName.c_str() );
int t_FileSize = FileRead_size( t_FileName.c_str() );
std::vector< std::vector< int > > t_MapDataVec;
int t_LoadNum = 0;
char t_Char;

//マップの配列を確保
t_MapDataVec.resize( t_Height );
for( int i = 0; i < t_Height; i++ )
{
t_MapDataVec[ i ].resize( t_Width );
}

//正常に1文字を読み込める間、繰り返す
while( ( t_Char = FileRead_getc( t_FileHandle ) ) != -1 ){
if( isdigit( t_Char ) != 0 ){
int t_Sum = 0;
do{
t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' );
t_Char = FileRead_getc( t_FileHandle );
}while( isdigit( t_Char ) != 0 );

t_MapDataVec[ t_LoadNum / t_Width ][ t_LoadNum % t_Width ] = t_Sum;
++t_LoadNum;
}
}
FileRead_close( t_FileHandle );
}
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況