素材を実行ファイルとは別のフォルダに保存したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
遊び人
記事: 28
登録日時: 9ヶ月前

素材を実行ファイルとは別のフォルダに保存したい

#1

投稿記事 by 遊び人 » 2週間前

お世話になっております。
DXライブラリにてゲーム等を作成する際、実行ファイル(exe)とゲームに使用する素材(画像、音楽等)が同じフォルダに入っていなければ実行ファイルが読み取ってくれません。
使用する素材が増えるとフォルダ内がごちゃごちゃして見にくくなってしまいますので、以下の画像のように分割したいのですが、可能でしょうか?

可能ならば方法を教えて下さると助かります。
開発環境はVS2017C++、Windows10です。
添付ファイル
d1b2bdc4d6602da552920ba97502d94f.png
d1b2bdc4d6602da552920ba97502d94f.png (8.74 KiB) 閲覧数: 162 回

Rei

Re: 素材を実行ファイルとは別のフォルダに保存したい

#2

投稿記事 by Rei » 2週間前

遊び人様のやろうとしていることを実現する方法は「絶対パス」を指定する方法と「相対パス」を指定する方法の二つがあります。
まず「絶対パス」の方法ですが、これはファイルのパスをすべて指定する方法です。たとえば表示したい画像の名前を「image.bmp」とし、これがC:\aaa\bbb\画像\image.bmpにあるとすると、

コード: 全て選択

LoadGraph(C:\\aaa\\bbb\\画像\\image.bmp);
のようにすれば画像を読み込めます。(もちろんLoadGraph関数以外でも同じです)

※注意※
C言語では文字として「\」を扱う場合は上のコードのように「\\」と、必ず二つ入力する必要があります。ここはつい忘れがちなので注意してください。


しかし、いちいちすべてのパス(フルパス)を指定するのは面倒です。そこで遊び人様には「相対パス」の方法をお勧めします。
遊び人様が添付された画像のように「画像」フォルダがexeファイルと同じディレクトリにある場合はいちいちフルパスを指定しなくても

コード: 全て選択

LoadGraph(画像\\image.bmp);
とすれば読み込めます。(より正確な話をするならこの方法が使えるのは「ファイルを読み込む時点でカレントディレクトリがexeファイルのあるディレクトリになっている場合」ですが、まだこの辺は気にしなくてもいいかと思います)
また、上級テクニックとして「画像」フォルダがexeファイルの一つ上のディレクトリにあるとき、例えば実行ファイル.exeはC:\aaa\bbb\実行ファイル.exeにあり、画像ファイルはC:\aaa\image.bmpにある場合などは

コード: 全て選択

LoadGraph(..\\image.bmp);
のように、「..\\」をパスの先頭につけてやればいいです。また、二つ上の場合は

コード: 全て選択

LoadGraph(..\\..\\image.bmp);
となるように、n個上のディレクトリにある時は「..\\を」n個つければOKです。
最後になりますが誤字脱字等あったらごめんなさい。

遊び人
記事: 28
登録日時: 9ヶ月前

Re: 素材を実行ファイルとは別のフォルダに保存したい

#3

投稿記事 by 遊び人 » 2週間前

Rei様、ご返答ありがとうございました。
無事解決できました。
詳細な説明を書いてくださりとても助かりました。
これでぐちゃぐちゃになっているファイルの中からexeファイルを1分以上探し続けるという事態がなくなります。

返信

“C言語何でも質問掲示板” へ戻る