DXlib

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kenshin
記事: 7
登録日時: 4年前

DXlib

#1

投稿記事 by kenshin » 4年前

関数を作って画像を表示させたいのですができません。
どの様にすればいいのでしょう。

コード:

 #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;
}

アバター
みけCAT
記事: 6281
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: DXlib

#2

投稿記事 by みけCAT » 4年前

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;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ochaduke
記事: 36
登録日時: 4年前

Re: DXlib

#3

投稿記事 by ochaduke » 4年前

変数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さんと同じことです。
また、スマホで打ってたらインデントがぐちゃぐちゃになっちゃいました。見辛くてごめんなさい
電車グ人生…

kenshin
記事: 7
登録日時: 4年前

Re: DXlib

#4

投稿記事 by kenshin » 4年前

お二方、ありがとうございました!無事解決しました。

kenshin
記事: 7
登録日時: 4年前

Re: DXlib

#5

投稿記事 by kenshin » 4年前

ありがとうございました

アバター
みけCAT
記事: 6281
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: DXlib

#6

投稿記事 by みけCAT » 4年前

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);

}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ochaduke
記事: 36
登録日時: 4年前

Re: DXlib

#7

投稿記事 by ochaduke » 4年前

おっと
うっかりしてました

ご指摘ありがとうございます!
電車グ人生…

閉鎖

“C言語何でも質問掲示板” へ戻る