[過去ログ] DXライブラリ 総合スレッド その19 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
473
(1): 2018/09/07(金)15:35 ID:SP/YWN4v(7/13) AAS
>>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);してます。

これで問題なくないですか?
省5
474: 2018/09/07(金)15:45 ID:SP/YWN4v(8/13) AAS
なぜ、FileRead_openを使ってるのに、
FileRead_openを使ってないときのバグが出るんでしょうか。
でも、archive化しなければ、FileRead_openを使ってるそれでも正常に動くのです。

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

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

もしよかったら頭から数字,数字,.....というdataが入ったcsvを
省5
475: 2018/09/07(金)15:48 ID:6e9JnvLB(1) AAS
それ逆じゃないのか?
476
(6): 2018/09/07(金)17:09 ID:stA8I9vh(1/2) AAS
良く分からんけど、こんな感じの事がしたいの?
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 );
省18
477
(7): 2018/09/07(金)20:11 ID:stA8I9vh(2/2) AAS
>>473
int fh = FileRead_open(s.c_str());
while(fh && getline(fh,buf[line])){line++;}

ん?
FileRead_readとかのDXライブラリ関数じゃなくて
getlineが使われてる様だが?

例えばabc.csvを他のファイルと纏めて
Archive.dxaっていうアーカイブにした場合、

std::ifstream t;
t.open( "abc.csv");とかしたって読み込まないよ
省3
478: 2018/09/07(金)22:11 ID:SP/YWN4v(9/13) AAS
>>477
>getlineが使われてる様だが?

int fh = FileRead_open(s.c_str());
えっと、まずこれをした時点で、
ファイル内の文字がfhに入ってると思ってるんで
それをgetline(fh,buf[line]))するわけですから
問題ないかと思っているんですが、、私、なにか勘違いしてるのでしょうか、、

>t.open( "abc.csv");とかしたって読み込まないよ
>そんなファイル無いんだから

これはどーいうことですか?パスの表記の話でしたら
省8
479: 2018/09/07(金)22:15 ID:SP/YWN4v(10/13) AAS
>>477
あ、今気づきました、
自分FileRead_read使ってないですね、、、
FileRead_openとFileRead_readと一緒くたに考えてソース作ってしまってました。
FileRead_openもDXライブラリの関数でそれで開いてるから

DXライブラリArchiveしたファイルを開く問題はすでにクリアしたと。
480
(2): 2018/09/07(金)22:26 ID:2W2TZVJf(4/4) AAS
薄々気づいていたけど、あまりにも基本的なことがわかってなさすぎる
勘違いですらなくて、全くわかってない

int fn はただのハンドル(識別番号)だし、ファイルオープンと読み込みは違うし、アーカイブファイルについても全くわかってないし、その知識でバイナリファイルを理解できるわけがない

あんま厳しいこと言いたくないけど、拾ってきたコピペを組み合わせて作ろうと思わず
c++の基本から勉強して、一文字ずつ自分で打ち込んだほうがいい
481
(2): 2018/09/07(金)23:04 ID:SP/YWN4v(11/13) AAS
>>476
すみません、今まで使ったことない関数や表現がありますのでよかったら教えて頂けませんでしょうか、、
自分は今成長したいんで、非常に関心がありますのでぜひともお願いします。
質問1、
if( isdigit( t_Char ) != 0 )
ここの意味は、isdigitで「t_Charの(頭が)空じゃ無いなら」の認識で正解ですか?
判定関数のisdigitを利用したことないもので、、
質問2、
もし1の私の認識が当たっているとすれば
do{ t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' );
省22
482: 2018/09/07(金)23:12 ID:SP/YWN4v(12/13) AAS
>>480
経験が浅いのは認めます、、
特に外部ファイルをいじるのと、archiveファイルについてはほんと理解度が低いです。
でも、ここでそう指摘されることも、
また私が質問させていただくことも自分が成長するひとつの事柄にはなりませんでしょうか、、
ただコピペしたいのでは無く、ソースを理解したくて>>481でも質問させて頂きました。

未熟者なのは認めます、疑問に思ったことをまず自分で検索で調べてみての質問です。
教えて頂けないでしょうか。。
正直、DXライブラリのアーカイブを使わなければ
ゲームは動くのですが、DXライブラリのアーカイブでつまずいてしまっています。
省1
483: 2018/09/07(金)23:21 ID:SP/YWN4v(13/13) AAS
>>480
C++を熟知せずとも、便利な関数のおかげで
手軽にゲームを作れる、それがDXライブラリの良さであり、
短所でもあるのだと思います。

画像を描画するのも関数ひとつです。それで表示できるので
つまずきませんでした。
でもmap情報を外部ファイルにして読むことは、つまずています。
厳密にはアーカイブしなけば読むことは成功していますが、、

「お前は基本がなっていない」と言われたらそうなんですが
でもチュートリアル的なブログや参考書でも、ひとつひとつ完全に理解しようとすると挫折するから
省5
484
(1): 2018/09/07(金)23:54 ID:VUsIud2k(1) AAS
長い。

【1・2】isdigitが分からないならisdigitについて調べれば?
【3】教科書の最初に載ってるはずだが「'0'」は0という文字そのものを表す
【4】適当に数字を入れて計算してみれば?
485: 2018/09/08(土)00:37 ID:DgEMMqli(1/21) AAS
>>484
【4】適当に数字を入れて計算してみれば?

これ、今やってるんですが、目から鱗です、、、
すごい、添字の回し方、こんなシンプルな表現方法がったなんで
すごい!
486
(1): 2018/09/08(土)00:38 ID:DgEMMqli(2/21) AAS
stA8I9vhさん、天才だ、、参考書やブログで見たことないですよ、
こんな回し方してる人。
487: 2018/09/08(土)00:46 ID:DgEMMqli(3/21) AAS
>>481の4、まじでやばい質問でしたね。アホすぎる、というか
検証しろって感じですよね。ほんとすみません。

ただ、[ t_LoadNum / t_Width ][ t_LoadNum % t_Width ]では
配列の列数と添字とが同じ値だからこそできる計算式ですね。

ちぐはぐの場合は、やはり
for(int line=0; line<y; line++){
    for(int col=0; col<x; col++){
を使うしか無い。

ネットで見たことないのは、
配列の列数と添字とが同じ数にぶちこむケースがあまりないから
省1
488
(1): 2018/09/08(土)00:51 ID:zhYpFAkU(1/4) AAS
>>486
やり方としては定番だよ
初心者向けの記事とかだと説明しないだけで
489: 2018/09/08(土)00:57 ID:DgEMMqli(4/21) AAS
>>488
はい、シンプルですごく驚きました。

それに、二次元配列の要素を回す場合は
これが使えるのは両方の値が同じ場合だけですよね?
自分が要する配列は添字より列数が多い場合ばかりなので
この方法は使えない。
要は>>476さんはソースの参考にということで
記載してくれたので、ちゃんと自分のやりたいことに
組み込めってことですよね。
490: 2018/09/08(土)01:05 ID:DgEMMqli(5/21) AAS
でも少しでも認めて頂けると嬉しいのです。
初心者ですが、昨今ゲーム制作においてもっともポピュラーなUnityでは無く
人口が減少しつつあるC++やDXライブラリでゲームを作ろうとしてる私のこのヤル気を。

まあ、csvのarchiveファイルから読み込む云々でモチベ下がりましたけど
なんで画像やサウンドみたくスムーズに利用できないのか、と
なんら問題なく進められたのに。。
簡単な話、DXライブラリの関数に
getline(識別番号,配列[]))の代わりになるものがあればよかったのに。
引数が違うじゃないですが、どれも。
491
(1): 2018/09/08(土)01:09 ID:zhYpFAkU(2/4) AAS
し らんがな
ね ろ
492: 2018/09/08(土)01:12 ID:DgEMMqli(6/21) AAS
>>491
この問題を考えているので寝ることができないです

t_Sum = ( t_Sum * 10 ) + ( t_Char - '0' );
これの ( t_Char - '0' ); はなにを表しているんですか?

t_Char - '0'です。
なぜ、文字列の'0'を引く必要があるのか、知りたいのです。
1-
あと 510 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.012s