ページ 11

DXlib

Posted: 2015年12月10日(木) 19:17
by kenshin
関数を作って画像を表示させたいのですができません。
どの様にすればいいのでしょう。

コード:

 #include "DxLib.h"

int draw();

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
	
	ChangeWindowMode(TRUE);//ウィンドウモード
	SetGraphMode(880,660, 32);
	DxLib_Init();   // DXライブラリ初期化処理

	int map = LoadGraph("images/map.png");
      
	   draw();

        DxLib_End();    // DXライブラリ終了処理
        return 0;
}

 // 画像を描画する
int draw(){
	
	DrawGraph(200, 200, map, TRUE);
	return 0;
}

Re: DXlib

Posted: 2015年12月10日(木) 19:31
by みけCAT
draw関数でmapが定義されていませんね。
WinMain関数から渡してあげるようにするといいでしょう。

コード:

#include "DxLib.h"

int draw(int);

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

	ChangeWindowMode(TRUE);//ウィンドウモード
	SetGraphMode(880, 660, 32);
	DxLib_Init();   // DXライブラリ初期化処理

	int map = LoadGraph("images/map.png");

	draw(map);

	DxLib_End();    // DXライブラリ終了処理
	return 0;
}

// 画像を描画する
int draw(int map){

	DrawGraph(200, 200, map, TRUE);
	return 0;
}

Re: DXlib

Posted: 2015年12月10日(木) 19:43
by ochaduke
変数mapはWinMain 関数内のみで使用できます。
mapをグローバル変数にするか(1)
mapの値をdraw()に渡す(2)
にしましょう。

(1)

コード:

#include "DxLib.h"
 
void draw( void );
//return 0;に意味が無さそうだったので、勝手に戻り値をvoidにしました。余計なお世話だったらすみません。
 

const int map = LoadGraph("images/map.png");//グローバル変数として宣言


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    
    ChangeWindowMode(TRUE);//ウィンドウモード
    SetGraphMode(880,660, 32);

    if (DxLib_Init() == -1 ){  return 0; }// DXライブラリ初期化処理
      
       draw();
 
        DxLib_End();    // DXライブラリ終了処理
        return 0;
}
 
 // 画像を描画する
void draw(){
    
    DrawGraph(200, 200, map, TRUE);

}

(2)

コード:

#include "DxLib.h"
 
void draw( int );
//return 0;に意味が無さそうだったので、勝手に戻り値をvoidにしました。余計なお世話だったらすみません。
 

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    
    ChangeWindowMode(TRUE);//ウィンドウモード
    SetGraphMode(880,660, 32);

    if (DxLib_Init() == -1 ){  return 0; }// DXライブラリ初期化処理

      const int map = LoadGraph("images/map.png");

       draw( map );
 
        DxLib_End();    // DXライブラリ終了処理
        return 0;
}
 
 // 画像を描画する
void draw( int handle ){
    
    DrawGraph(200, 200, handle, TRUE);

}

※(2)はみけCATさんと同じことです。
また、スマホで打ってたらインデントがぐちゃぐちゃになっちゃいました。見辛くてごめんなさい

Re: DXlib

Posted: 2015年12月10日(木) 20:09
by kenshin
お二方、ありがとうございました!無事解決しました。

Re: DXlib

Posted: 2015年12月10日(木) 20:10
by kenshin
ありがとうございました

Re: DXlib

Posted: 2015年12月10日(木) 20:11
by みけCAT
ochaduke さんが書きました:(1)

コード:

#include "DxLib.h"
 
void draw( void );
//return 0;に意味が無さそうだったので、勝手に戻り値をvoidにしました。余計なお世話だったらすみません。
 

const int map = LoadGraph("images/map.png");//グローバル変数として宣言


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    
    ChangeWindowMode(TRUE);//ウィンドウモード
    SetGraphMode(880,660, 32);

    if (DxLib_Init() == -1 ){  return 0; }// DXライブラリ初期化処理
      
       draw();
 
        DxLib_End();    // DXライブラリ終了処理
        return 0;
}
 
 // 画像を描画する
void draw(){
    
    DrawGraph(200, 200, map, TRUE);

}
このコードはDxLib_Init()を呼ぶ前に画像を読み込もうとしてしまうので、ダメです。
あまり推奨はされませんか、もしグローバル変数を使いたければ、例えばこうすると良いでしょう。

コード:

#include "DxLib.h"

void draw( void );
//return 0;に意味が無さそうだったので、勝手に戻り値をvoidにしました。余計なお世話だったらすみません。


int map;//グローバル変数として宣言


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

    ChangeWindowMode(TRUE);//ウィンドウモード
    SetGraphMode(880,660, 32);

    if (DxLib_Init() == -1 ){  return 0; }// DXライブラリ初期化処理
    map = LoadGraph("images/map.png")
    draw();

    DxLib_End();    // DXライブラリ終了処理
    return 0;
}

 // 画像を描画する
void draw( void ){

    DrawGraph(200, 200, map, TRUE);

}

Re: DXlib

Posted: 2015年12月10日(木) 20:41
by ochaduke
おっと
うっかりしてました

ご指摘ありがとうございます!