[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
絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。
Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。
知恵袋でも相談したところ、絶対パスを取得し、そこからの相対パスで…というような回答が。
DXライブラリには絶対パスを取得する関数は無さそうですが、それって可能ですかね??
DXライブラリには絶対パスを取得する関数は無さそうですが、それって可能ですかね??
Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。
可能なはずです。といってもC言語やDXライブラリの問題ではありません。ファイルの階層構造の問題なのでそれについて解説されたサイトなんかを見れば、分かっていただけると思います。
Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。
相対パスの起点(カレントディレクトリ)は通常、実行可能ファイルが置いてあるフォルダになります。
ですので、Debugフォルダの中にある実行可能ファイルを直接実行すると、Debugフォルダの中に
画像や音声ファイルなどの素材データが存在するものと解釈します。
しかし、Debugフォルダには素材データがないので表示されない、という結果になるのだと思います。
VisualStudioから実行した場合には、VisualStudioが相対パスの起点を自動的にプロジェクトのフォルダに設定してくれます。
その結果、実行可能ファイルの位置とは関係なくプロジェクト内に置かれた素材データを読み込むことができるようになるわけです。
したがって、実行可能ファイルを直接実行しても素材データが正常に読み込まれるようにするには、
実行可能ファイル自体を素材データが置いてあるフォルダ(今回の場合はPerfectGirlフォルダのようですね)に移動あるいはコピーすれば
うまくいくとおもいます。
ですので、Debugフォルダの中にある実行可能ファイルを直接実行すると、Debugフォルダの中に
画像や音声ファイルなどの素材データが存在するものと解釈します。
しかし、Debugフォルダには素材データがないので表示されない、という結果になるのだと思います。
VisualStudioから実行した場合には、VisualStudioが相対パスの起点を自動的にプロジェクトのフォルダに設定してくれます。
その結果、実行可能ファイルの位置とは関係なくプロジェクト内に置かれた素材データを読み込むことができるようになるわけです。
したがって、実行可能ファイルを直接実行しても素材データが正常に読み込まれるようにするには、
実行可能ファイル自体を素材データが置いてあるフォルダ(今回の場合はPerfectGirlフォルダのようですね)に移動あるいはコピーすれば
うまくいくとおもいます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。
exeから直接起動する場合はexeのあるフォルダが基準の相対パスとなります。
VC++から実行する場合は、ややこしい事にプロジェクトのあるフォルダが基準の相対パスとなります。
こちらを読んで頂く良いと思います。
「補足資料 7章 作ったゲームを公開するには?」
http://dixq.net/g/h_07.html
「補足資料 8章 作ったゲームを公開するには?(2)」
http://dixq.net/g/h_08.html
ちなみに配布する場合はReleaseビルドの必要があります(リンク先の内容にも書いてあります)。
VC++から実行する場合は、ややこしい事にプロジェクトのあるフォルダが基準の相対パスとなります。
こちらを読んで頂く良いと思います。
「補足資料 7章 作ったゲームを公開するには?」
http://dixq.net/g/h_07.html
「補足資料 8章 作ったゲームを公開するには?(2)」
http://dixq.net/g/h_08.html
ちなみに配布する場合はReleaseビルドの必要があります(リンク先の内容にも書いてあります)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。
KA582さん>
で…できましたー!!!!
とーってもわかりやすい説明ありがとうございます!!
感動です…。
本当にありがとうございました!!
で…できましたー!!!!
とーってもわかりやすい説明ありがとうございます!!
感動です…。
本当にありがとうございました!!
Re: 絶対パスでしか画像や音声ファイルが読み込めなくて困ってます。
softya(ソフト屋)>
なんと…!まだ課題が残されているとは…。
簡単なゲームでも作るのって大変なんですね;
Releaseビルドについては明日やろうと思います。
ありがとうございました!
なんと…!まだ課題が残されているとは…。
簡単なゲームでも作るのって大変なんですね;
Releaseビルドについては明日やろうと思います。
ありがとうございました!