現在、Dxライブラリで、ノベルゲームを作ろうとしているのですが、LoadGraphの引数に変数を使った画像の表示がうまくいきません。
何が、原因になるか、わからないので、なるべく細かく、記述します。
ゲームの仕様として、テキストファイルから読み込んだ文章を画面に表示するようにしています。
さらに、簡単なスクリプト言語のようなものを作成し、それにより、ゲーム画面に様々なアクションを起こそうとしています(新しいテキストファイルへの移動等)。
その途中で、テキストファイルから指定された画像を表示する機能を実装しようしているのですが、
まず、テキストファイルから、strchrで一行ずつ読み込んだ文章をそれぞれ、char *で宣言した変数(sentence)に入れて、
その中から、このsentenceは,画像の相対パスが書かれたものだと認識したsentenceを、LoadGraphの第一引数にして、グラフィックハンドルを得ようとしているのですが、返り値がー1を返し、読み込むことができません。(sentenceが、画面に表示させる文章か、スクリプト言語もどきかの判断はできており、相対パスが書かれているのかの判断もしっかりとできています)
%sでその変数を表示してみると、しっかりと、相対パスの文章が表示されます。
ちなみに、テキストファイルに書かれた、テキストファイルへの相対パスは、しっかりと読み込まれ、テキストファイルから、テキストファイルの移動ができているので、宣言したchar*型の変数は問題ないと思っています。
ソースはC++で書いていて、いろんな機能を持ったクラスを作り、最終的には、全てを派生させた一つのクラスで、ゲームを起動させています。その中でも、基本クラスで、文章を入れる変数を宣言しています(何個かのクラスには派生されていませんが、そのクラスの中では一切使用しないので、問題はないです)。
何卒、知恵をお貸しください。
Dxライブラリでの、画像の表示についての質問
Re: Dxライブラリでの、画像の表示についての質問
その相対パスを直接コードに定数として書いた場合には画像は読み込めるのですか?
Re: Dxライブラリでの、画像の表示についての質問
Dxライブラリでは、
LoadGraph(const TCHAR *filename, int NotUse3Dflag = 0)
と定義されているので、 ファイルパスを指定する引数は、
TCHAR* 型
でないといけません。
コンパイラの構成設定で、マルチバイト文字(シフトJIS)を指定している場合は、Dxライブラリにより、
typedef char TCHAR
を自動で設定されていますので、ファイル名の引数を、
char* 型
として受け取ります。
同様に、構成設定で、Unicode文字を指定している場合は、Dxライブラリにより、
typedef wchar_t TCHAR
を自動で設定されていますので、ファイル名の引数を、
wchar_t* 型
として受け取ります。
Dxライブラリには、大文字だけで定義された「#define」や「typedef」がたくさんあります。
個人的な意図がない限り、できるだけ用意されているものを使いましょう。
LoadGraph(const TCHAR *filename, int NotUse3Dflag = 0)
と定義されているので、 ファイルパスを指定する引数は、
TCHAR* 型
でないといけません。
コンパイラの構成設定で、マルチバイト文字(シフトJIS)を指定している場合は、Dxライブラリにより、
typedef char TCHAR
を自動で設定されていますので、ファイル名の引数を、
char* 型
として受け取ります。
同様に、構成設定で、Unicode文字を指定している場合は、Dxライブラリにより、
typedef wchar_t TCHAR
を自動で設定されていますので、ファイル名の引数を、
wchar_t* 型
として受け取ります。
Dxライブラリには、大文字だけで定義された「#define」や「typedef」がたくさんあります。
個人的な意図がない限り、できるだけ用意されているものを使いましょう。
Re: Dxライブラリでの、画像の表示についての質問
h2so5さん >定数の場合は読み込むことが可能です。
ThroughTheMorningさん > そうだったのですか、まだまだ勉強不足ですね。助言に従って、Dxライブラリで定義されたものを使って、再度プログラミングに励んでみようと思います。
ThroughTheMorningさん > そうだったのですか、まだまだ勉強不足ですね。助言に従って、Dxライブラリで定義されたものを使って、再度プログラミングに励んでみようと思います。