絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Mam坂

絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

#1

投稿記事 by Mam坂 » 11年前

 [1.1]
      絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。
      作ったゲームを他のパソコンでも問題なくプレイできるようにしたいです。
 [1.2]
      DXライブラリでゲームを作成しました。
      その際画像や音声ファイルを以下のようにロードしようとしました。
      int img_title;
      img_title=LoadGraph("title.png");
 
[1.3]
      デバッグ時には問題なくtitle画像表示されるのですが、
      実際にDebugフォルダに出来上がった実行可能ファイルを実行すると、title画像は表示されない状態です。

      ファイル実行時のLogを確認すると、
      766:画像ファイル title.png がありません
      との記述がありました。

      どうやらパスが通っていないようなのです。
      なのでこのように絶対パスでコードを書いてやり直しました。

      int img_title;
      img_title=LoadGraph("C:\\Users\\mine\\Documents\\Visual Studio 2010\\Projects\\PerfectGirl\\title.png");


      すると、title画像は表示されました。
      しかし絶対パスで記述していては、他のパソコンでゲームをプレイすることが出来なくなってしまいます。

      title画像だけなら他の画像にするとかなんとか対処できますが、全てのファイルが上手く読み込めない状態なので困っています。

 [1.4]
      どうにかして他のパソコンでもゲームをプレイ出来るようにしたいです。


[2] 環境
      Windows7、VC++2010
      DXライブラリ使用(最新のやつ)

[3] その他
      C言語は入門書程度の知識ぐらいしかありません。
      ゲームを作ってみたのも初めてで、やっと完成したと思ったらこのありさまです…。
      どうかよろしくお願いしますm(_ _)m

Mam坂

Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

#2

投稿記事 by Mam坂 » 11年前

知恵袋でも相談したところ、絶対パスを取得し、そこからの相対パスで…というような回答が。

DXライブラリには絶対パスを取得する関数は無さそうですが、それって可能ですかね??

zxc
記事: 79
登録日時: 11年前
住所: 日本の背骨(?)あたり

Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

#3

投稿記事 by zxc » 11年前

  可能なはずです。といってもC言語やDXライブラリの問題ではありません。ファイルの階層構造の問題なのでそれについて解説されたサイトなんかを見れば、分かっていただけると思います。

KA582
記事: 4
登録日時: 11年前

Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

#4

投稿記事 by KA582 » 11年前

相対パスの起点(カレントディレクトリ)は通常、実行可能ファイルが置いてあるフォルダになります。
ですので、Debugフォルダの中にある実行可能ファイルを直接実行すると、Debugフォルダの中に
画像や音声ファイルなどの素材データが存在するものと解釈します。
しかし、Debugフォルダには素材データがないので表示されない、という結果になるのだと思います。

VisualStudioから実行した場合には、VisualStudioが相対パスの起点を自動的にプロジェクトのフォルダに設定してくれます。
その結果、実行可能ファイルの位置とは関係なくプロジェクト内に置かれた素材データを読み込むことができるようになるわけです。

したがって、実行可能ファイルを直接実行しても素材データが正常に読み込まれるようにするには、
実行可能ファイル自体を素材データが置いてあるフォルダ(今回の場合はPerfectGirlフォルダのようですね)に移動あるいはコピーすれば
うまくいくとおもいます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

#5

投稿記事 by softya(ソフト屋) » 11年前

exeから直接起動する場合はexeのあるフォルダが基準の相対パスとなります。
VC++から実行する場合は、ややこしい事にプロジェクトのあるフォルダが基準の相対パスとなります。

こちらを読んで頂く良いと思います。
「補足資料 7章 作ったゲームを公開するには?」
http://dixq.net/g/h_07.html
「補足資料 8章 作ったゲームを公開するには?(2)」
http://dixq.net/g/h_08.html

ちなみに配布する場合はReleaseビルドの必要があります(リンク先の内容にも書いてあります)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Mam坂

#6

投稿記事 by Mam坂 » 11年前

zxcさん>

調べたところ、絶対パス取得できました!
今回は必要なさそうですが、覚えておいて損はなさそうですね!

Mam坂

Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

#7

投稿記事 by Mam坂 » 11年前

KA582さん>

で…できましたー!!!!
とーってもわかりやすい説明ありがとうございます!!

感動です…。

本当にありがとうございました!!

Mam坂

Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

#8

投稿記事 by Mam坂 » 11年前

softya(ソフト屋)>

なんと…!まだ課題が残されているとは…。
簡単なゲームでも作るのって大変なんですね;

Releaseビルドについては明日やろうと思います。
ありがとうございました!

Mam坂

Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。

#9

投稿記事 by Mam坂 » 11年前

明日こそ、完成させたいと思います!
ありがとうございました!

閉鎖

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