無題
無題
C言語をはじめて間もない者です。
行き詰ったので助けていただきたく投稿します。
ゲームプログラミングの館の方で”画像を表示する”のステップより…。
自分で作った画像(PNG)をウィンドウに表示させようとしたら映されませんでした。
その後、うまくできなかった人用に書かれてあったもう一つのプログラムで挑戦したところ
今度はうまく映してくれました。
(練習用にあった画像は最初のプログラムでも映すことができました。)
プログラムを書いていく身、今のうちにひとつ目のプログラムで映せなかった原因を解いておきたい次第です。
お手数ですが力を貸していただけないでしょうか。
よろしくお願いします。
行き詰ったので助けていただきたく投稿します。
ゲームプログラミングの館の方で”画像を表示する”のステップより…。
自分で作った画像(PNG)をウィンドウに表示させようとしたら映されませんでした。
その後、うまくできなかった人用に書かれてあったもう一つのプログラムで挑戦したところ
今度はうまく映してくれました。
(練習用にあった画像は最初のプログラムでも映すことができました。)
プログラムを書いていく身、今のうちにひとつ目のプログラムで映せなかった原因を解いておきたい次第です。
お手数ですが力を貸していただけないでしょうか。
よろしくお願いします。
Re:無題
自分がプログラムを答えていい身分の人間かはわからんが、DxLibで
自分も過去に経験した例から可能性を上げてみると、
LoadGraphScreenではなくDrawGraphのようにメモリに読み込む必要がある関数ではないか?
この場合LoadGraph等画像をメモリに読み込む必要がある。
拡張子を間違ってないか?
.bmp .png etc
visual studioでF7などでビルドその後実行ファイル(.exe)を起動したとき場合、画像への相対パスが誤っていないか?
この場合に限らず相対パスが正しいかどうか?
裏画面への描写になっていないか?
表画面への描写またはScreenFilpの使用。
自分が経験したのはこんなとこだろうか…
正直自分も初心者なんで的を得た答えになっているかはわからんが…
質問の内容を見る限りそんなに長いソースでもなさそうなんで、実際にソースコードをあげてみてはどうか…
自分も過去に経験した例から可能性を上げてみると、
LoadGraphScreenではなくDrawGraphのようにメモリに読み込む必要がある関数ではないか?
この場合LoadGraph等画像をメモリに読み込む必要がある。
拡張子を間違ってないか?
.bmp .png etc
visual studioでF7などでビルドその後実行ファイル(.exe)を起動したとき場合、画像への相対パスが誤っていないか?
この場合に限らず相対パスが正しいかどうか?
裏画面への描写になっていないか?
表画面への描写またはScreenFilpの使用。
自分が経験したのはこんなとこだろうか…
正直自分も初心者なんで的を得た答えになっているかはわからんが…
質問の内容を見る限りそんなに長いソースでもなさそうなんで、実際にソースコードをあげてみてはどうか…
Re:無題
名前は(初心者)改め(スタートメニュー)
寺さん
ご返事ありがとうございます。
引っかかったことは(LoadGraph等画像をメモリに読み込む必要)というところでした。
メモリに読み込ませるには単にビルドするという事ではないのでしょうか?
load.ccpは以下の通りです。
尚、これは龍神録プログラミングの4章までを立てて、charフォルダ内に1.pngを作って実行させようとしているところです。
kazuoni
ご返事ありがとうございました。
上部プログラムを0.pngに戻すと龍神録プレイヤーが映ります。
1.pngを作り上部プログラムを1.pngに書き直すと表示されません。
困っております…。
名前は初心者改め(スタートメニュー)にします。
寺さん
ご返事ありがとうございます。
引っかかったことは(LoadGraph等画像をメモリに読み込む必要)というところでした。
メモリに読み込ませるには単にビルドするという事ではないのでしょうか?
load.ccpは以下の通りです。
#include "../include/GV.h" extern int img_ch[1][12]; void load(){ LoadDivGraph( "../dat/img/char/1.png" , 12 , 4 , 3 , 73 , 73 , img_ch[1] ) ; }main.ccpが以下の通りです。
#define GLOBAL_INSTANCE #include "../include/GV.h" //現在のキー入力処理を行う extern int GetHitKeyStateAll_2(); //受け取ったキー番号の現在の入力状態を返す extern int CheckStateKey(unsigned char Handle); //データのロード extern void load(); //描画メイン extern void graph_main(); int img_ch[1][12]; //キャラクタ画像9枚分 X2(変身用) ch_t ch; //キャラクタデータ宣言 //ループで必ず行う3大処理 int ProcessLoop(){ if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す GetHitKeyStateAll_2();//現在のキー入力処理を行う return 0; } int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 load();//データロード while(ProcessLoop()==0){//メインループ graph_main();//描画メイン if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク ScreenFlip();//裏画面反映 } DxLib_End();//DXライブラリ終了処理 return 0; }後はgraph.ccpが以下の通りです。
#include "../include/GV.h" extern ch_t ch; extern int img_ch[1][12]; void graph_ch(){ DrawRotaGraphF(ch.x,ch.y,1.0f,0.0f,img_ch[1][ch.img],TRUE); } void graph_main(){ graph_ch(); }こんな感じになっています。
尚、これは龍神録プログラミングの4章までを立てて、charフォルダ内に1.pngを作って実行させようとしているところです。
kazuoni
ご返事ありがとうございました。
上部プログラムを0.pngに戻すと龍神録プレイヤーが映ります。
1.pngを作り上部プログラムを1.pngに書き直すと表示されません。
困っております…。
名前は初心者改め(スタートメニュー)にします。
Re:無題
Mikanさん
ご返事ありがとうございます。
1について
はい。0.pngと同じところ(charフォルダに)いれてます。
2について
ダブルクリックするとWindows画像とFAXビューアウィンドウに表示されます。
寺さん
ご返事ありがとうございます。
大きさは0.pngと同じ292×219となっております。
またプログラム上全角にはなってませんでした。
ひよこさん
ご返事ありがとうございます。
LoadDivGraph( "../dat/img/char/1.png" , 12 , 4 , 3 , 73 , 73 , img_ch[1] ) ;
のところだけ変えても表示されませんでした。
もしかして全てのimg_ch[1]のところでしょうか?
ご意見よろしくお願いいたします。
ご返事ありがとうございます。
1について
はい。0.pngと同じところ(charフォルダに)いれてます。
2について
ダブルクリックするとWindows画像とFAXビューアウィンドウに表示されます。
寺さん
ご返事ありがとうございます。
大きさは0.pngと同じ292×219となっております。
またプログラム上全角にはなってませんでした。
ひよこさん
ご返事ありがとうございます。
LoadDivGraph( "../dat/img/char/1.png" , 12 , 4 , 3 , 73 , 73 , img_ch[1] ) ;
のところだけ変えても表示されませんでした。
もしかして全てのimg_ch[1]のところでしょうか?
ご意見よろしくお願いいたします。
Re:無題
適当にペイントソフトで292*219の画像を作成して、charフォルダに同じように1.pngという名前を作成してテストしてみました。
1.pngには単に画面を埋め尽くす四角形を描いただけですが、テスト結果からみル限り、ウィンドウの左上に1.pngの左上周辺が描かれていました。
尚、同じように龍神録プログラミング4章の内容を利用して、修正したのはload.cppのLoadDivGraph関数の画像リンク先を0.pngから1.pngに変更した程度です。その他は一切変更していません。
参考になるかは分かりませんが、適当な画像を作成して改めてテストしてみてはいかがでしょうか。
1.pngには単に画面を埋め尽くす四角形を描いただけですが、テスト結果からみル限り、ウィンドウの左上に1.pngの左上周辺が描かれていました。
尚、同じように龍神録プログラミング4章の内容を利用して、修正したのはload.cppのLoadDivGraph関数の画像リンク先を0.pngから1.pngに変更した程度です。その他は一切変更していません。
参考になるかは分かりませんが、適当な画像を作成して改めてテストしてみてはいかがでしょうか。
Re:無題
Akiraさん
ご返事+試行までしていただきありがとうございます。
指示通りにペイントで作って実行しましたが映りませんでした。
0.pngは映るのに1.pngに変えたとたんウィンドウは真っ黒のみです。
一応フォルダ構成を載せます。
gameフォルダ
トdatフォルダ
トDebugフォルダ
トincludeフォルダ
トgame.ncb
トgame.sln
トgame.suo
datフォルダ
トcsvフォルダ
トfontフォルダ
トimgフォルダ
トmusicフォルダ
トseフォルダ
Debugフォルダ
トLog.txt
トgame.exe
トgame.ilk
トgame.pdb
include
トDX関連と思われる19項目
ご意見お待ちしております。
ご返事+試行までしていただきありがとうございます。
指示通りにペイントで作って実行しましたが映りませんでした。
0.pngは映るのに1.pngに変えたとたんウィンドウは真っ黒のみです。
一応フォルダ構成を載せます。
gameフォルダ
トdatフォルダ
トDebugフォルダ
トincludeフォルダ
トgame.ncb
トgame.sln
トgame.suo
datフォルダ
トcsvフォルダ
トfontフォルダ
トimgフォルダ
トmusicフォルダ
トseフォルダ
Debugフォルダ
トLog.txt
トgame.exe
トgame.ilk
トgame.pdb
include
トDX関連と思われる19項目
ご意見お待ちしております。
Re:無題
No:が異なるかもしれませんが、Akiraです。
手間ですが、SAIで0.pngを読み込み、何もしないで別の名前(今回の場合でしたら1.pngでしょうか)で保存。その画像を読み込ませると映るかどうか、テストしてみてください。映るようでしたら画像データには問題はないと思います。
問題がないことを確認したら、1.pngに描かれているキャラクタに高さ・幅ともに被せるように、自作の画像を切り取って貼り付けするなりしてみてください。位置を変更してはいけません。画像データの読み込みに成功していても、何もない場所を映している可能性がありますから。位置を変更しなければ0.pngの一番左上のキャラクタの、右下に当たる部分が映る筈です。
とりあえず、以上の手順を試して見てはいかがでしょうか。
手間ですが、SAIで0.pngを読み込み、何もしないで別の名前(今回の場合でしたら1.pngでしょうか)で保存。その画像を読み込ませると映るかどうか、テストしてみてください。映るようでしたら画像データには問題はないと思います。
問題がないことを確認したら、1.pngに描かれているキャラクタに高さ・幅ともに被せるように、自作の画像を切り取って貼り付けするなりしてみてください。位置を変更してはいけません。画像データの読み込みに成功していても、何もない場所を映している可能性がありますから。位置を変更しなければ0.pngの一番左上のキャラクタの、右下に当たる部分が映る筈です。
とりあえず、以上の手順を試して見てはいかがでしょうか。
Re:無題
Akiraさん
ご返事ありがとうございます。
自分はとんだ勘違いをしておりました。
私はVisual C++ 2008を使っております。
まだ始めたばかりの自分は"ビルド"した後の開くウィンドウをてっきり実行画面と思っておりました。
申し訳ありません。
ビルドした後は実行ファイルから確認するべきでした。
game.exeファイルから実行したらしっかり映っていました。
kazuoniさん
Mikanさん
寺さん
ひよこさん
Akiraさん
上記皆様、自分のケアレスミスによってご迷惑をおかけして
本当にごめんなさい。
そしてご意見ありがとうございました。
ご返事ありがとうございます。
自分はとんだ勘違いをしておりました。
私はVisual C++ 2008を使っております。
まだ始めたばかりの自分は"ビルド"した後の開くウィンドウをてっきり実行画面と思っておりました。
申し訳ありません。
ビルドした後は実行ファイルから確認するべきでした。
game.exeファイルから実行したらしっかり映っていました。
kazuoniさん
Mikanさん
寺さん
ひよこさん
Akiraさん
上記皆様、自分のケアレスミスによってご迷惑をおかけして
本当にごめんなさい。
そしてご意見ありがとうございました。