ページ 11

[31章]画像が読み込めない(LoadDivGraph)

Posted: 2011年8月04日(木) 12:55
by whity
龍神録プログラミングの館を参考に、シューティングゲームを作っている者ですが、
31章の星形弾で使われているb10.pngが一部しか読み込めません。
というのは、
LoadDivGraph( "../dat/img/bullet/b10.png" , 8 , 8 , 1 , 8 , 8 , img_bullet[10] ) ;
として画像を読み込むと、
img_bullet[10][4],img_bullet[10][5],img_bullet[10][6],img_bullet[10][7]は画像を表示できるのですが
img_bullet[10][0],img_bullet[10][1],img_bullet[10][2],img_bullet[10][3]は表示できません。
ためしに
int r=LoadDivGraph( "../dat/img/bullet/b10.png" , 8 , 8 , 1 , 8 , 8 , img_bullet[10] ) ;
printfDx("%d",r);
などしてみると、結果は0でした。
LoadDivGraphではエラーが起きていないのに、画像の一部が表示できないとはどういうことでしょうか?
コンパイラはBorland C++ Compiler ,OSは windows7 64bitです。
初歩的な質問かも知れませんが、ご回答よろしくお願いします。

Re: [31章]画像が読み込めない(LoadDivGraph)

Posted: 2011年8月04日(木) 13:17
by hidden
b10.pngとはどんなものですか?全員が龍神録をDLしているわけではないので・・・
DrawGraphあたりでエラーが出ているのですか?それともエラーなしで画像が描画されないだけですか?
DXライブラリのリファレンスのような小さなプログラムでも再現されますか?

Re: [31章]画像が読み込めない(LoadDivGraph)

Posted: 2011年8月04日(木) 13:52
by whity
b10.pngは、64×8pxで、8つの画像が8×8pxで隙間なく詰まっています。

コンパイルエラーは出ていません。
試しに、次のようなプログラムを作るとちゃんと表示されました。

コード:

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1) return -1;
    int img_bullet[10][10];
    LoadDivGraph( "../dat/img/bullet/b10.png" , 8 , 8 , 1 , 8 , 8 , img_bullet[10] ) ;
    for(int i=0;i<8;i++){    
    DrawGraph(i*8,0,img_bullet[10][i],TRUE);    
    }   
    WaitKey();
    DxLib_End();//DXライブラリ終了処理
    return 0;
}

Re: [31章]画像が読み込めない(LoadDivGraph)

Posted: 2011年8月04日(木) 14:36
by whity
調べてみるとimg_bullet[10][0],img_bullet[10][1],img_bullet[10][2],img_bullet[10][3]が描画されるときDrawRotaGraphFの戻り値が-1になっていました。
書き忘れていました。

Re: [31章]画像が読み込めない(LoadDivGraph)

Posted: 2011年8月04日(木) 15:07
by hidden
あ、img_bullet[10]って範囲外じゃないですか?
int img_bullet[10][10]で宣言しているようですが
元のものでもそうですか?
img_bullet[0][0] ~ img[9][9]
までが範囲です。

Re: [31章]画像が読み込めない(LoadDivGraph)

Posted: 2011年8月06日(土) 14:23
by whity
元のプログラムを調べてみると、img_bullet[20][10]で宣言されていました。
初歩的なミスでしたね。
皆さんご回答ありがとうございました。