ページ 11

画像が表示されない

Posted: 2011年8月21日(日) 14:43
by x_kai
DXライブラリでゲームを作っていたのですが、
なぜか画像が表示されません。 どこか間違っていると思うのですがよく分かりません。

ソース:

コード:

#include "DxLib.h"

// 列挙
enum Menu{
    GAME_TITLE, GAME_MAIN,
    GAME_CLEAR, GAME_OVER
} Menu = GAME_TITLE;


bool prev;              //キーを押したか判定用

// プロトタイプ宣言
//Drに処理をかく
void GoGameMain();      //ゲーム本体の処理
void DrGameMain();
void DrGameOver();      //ゲームオーバー画面
void GoGameOver();
void GoGameClear();     //ゲームクリア画面
void DrGameClear();
void GoGameTitle();     //ゲームタイトル画面
void DrGameTitle();
bool InputKey(int key);        //キー入力判定

// 座標セット
int My_x = 0;
int My_y = 0;
            

int En_x = 0;
int En_y = 0;

// 画像のロード
int My = LoadGraph("img/img_my.png");
int En = LoadGraph("img/img_en.png");
int Bg = LoadGraph("img/img_bg.png");

// 色の作成
int Bla = GetColor(0,0,0);
int Red = GetColor(255,0,0);
int Gre = GetColor(0,255,0);
int Blu = GetColor(0,0,255);
int Aqu = GetColor(0,255,255);
int Pur = GetColor(255,0,255);
int Whi = GetColor(255,255,255);


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){



        // 初期化

        ChangeWindowMode(TRUE);

        SetMainWindowText("TEST");              //タイトル設定

        

        DxLib_Init();                           //DX  初期化    

        SetDrawScreen(DX_SCREEN_BACK);          //裏画面処理

        SetWindowSizeChangeEnableFlag(TRUE);    //サイズ変更

        //ループ処理

        while(1){
        

            // 初期化

            if(ProcessMessage() != 0){ break; }

            if(CheckHitKey(KEY_INPUT_ESCAPE) == 1){ break; }

               ClearDrawScreen();  //画面の初期化
            
            //メニュー
            switch(Menu){
                case GAME_TITLE:
                    DrGameTitle();
                    break;
                case GAME_MAIN:
                    DrGameMain();
                    break;
                case GAME_CLEAR:
                    DrGameClear();
                    break;
                case GAME_OVER:
                    DrGameOver();
                    break;
                }
            

            ScreenFlip();

        }



        DxLib_End();

        return 0;

}

//タイトル画面
void GoGameTitle(){
    Menu = GAME_TITLE;
}

void DrGameTitle()
{
    DrawGraph(0,0, Bg, FALSE);
    WaitKey();
    int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
    if(InputKey(key)==true) GoGameMain();
}

//ゲーム本編
void GoGameMain(){
    Menu = GAME_MAIN;
}

// ゲーム内容
void DrGameMain(){
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
    if(key & PAD_INPUT_UP)      My_y -= 5;
    if(key & PAD_INPUT_DOWN)    My_y += 5;
    if(key & PAD_INPUT_LEFT)    My_x -= 5;
    if(key & PAD_INPUT_RIGHT)   My_x += 5;
                
    DrawGraph(My_x,My_y, My, TRUE);


    if((CheckHitKey(KEY_INPUT_D) && CheckHitKey(KEY_INPUT_E)) == 1){
        clsDx();                            //文字削除
        printfDx("X:%d Y:%d", My_x,My_y);   //文字表示
    }
}

//ゲームクリア画面
void GoGameClear(){
    Menu = GAME_CLEAR;
}

void DrGameClear(){
}

//ゲームオーバー画面
void GoGameOver(){
    Menu = GAME_OVER;
}

void DrGameOver(){
}

bool InputKey(int key)
{
    if(key & PAD_INPUT_A){
        if(prev == false){
            prev == true;
            return true;
        } else {
            prev = false;
        }
    }
    
    return false;
}
まず、最初にタイトルが表示されるのですが、
そのとき背景に画像を使おうと思い、640x480の画像を作成し、表示させようとしています。

ただ、なぜか表示されません。
printfDx("hello");と入力するとhelloと何回も表示されるので、表示されているはずなのですが、
うまく表示できていません。

次に、zキーを押したら、ゲーム画面に移動するという仕様なのですが、
ゲーム画面でも画像が表示されません。

移動してないのでは無いか?とも思いましたが、
ゲーム画面でのデバッグモード(座標表示)は出来たので、ゲーム画面に移動していないというわけでもなさそうです。

Re: 画像が表示されない

Posted: 2011年8月21日(日) 15:04
by みけCAT
グローバル変数の初期化の時点でDxLib_Initを呼ぶ前にLoadGraphを呼んでんでしまっているので、
それで読み込みが失敗していると思います。
DxLib_Initの後でLoadGraphしてください。

Re: 画像が表示されない

Posted: 2011年8月21日(日) 16:49
by x_kai
みけCAT さんが書きました:グローバル変数の初期化の時点でDxLib_Initを呼ぶ前にLoadGraphを呼んでんでしまっているので、
それで読み込みが失敗していると思います。
DxLib_Initの後でLoadGraphしてください。
ありがとうございます!行けました。