ページ 11

LoadDivGraphでの『*intのパラメータと互換性がありません。』

Posted: 2011年10月23日(日) 20:40
by Chlaza
分割した画像を読み込みたいだけなのですが、どこが原因か、引数がポインタの関数の中でLoadDivGraphをいつも通り使おうとしたら、
宣言した画像、FPlayerImageで『*intのパラメータと互換性がありません』と言われてしまいました。
そのあと、画像の宣言をポインタにしてみたところ、エラーはなくなったのですが、起動してみると画面が止まってしまいます。
まず、画像の宣言をポインタにするべきなのでしょうか?

コード:

#include "DxLib.h"
#include "Keyboard.h"
#include "FPlayer.h"

int *FPlayerImage;//←ポインタ?
int WalkCount;

// 初期化をする
void FPlayer_Initialize( FPlayer_t *FPlayer){
	LoadDivGraph( "Image/Chara/Player1.png" , 32 , 4 , 8 , 48 , 48 , FPlayerImage );//画像の分割読み込み
	FPlayer->Image = FPlayerImage[4];	//プレイヤーの最初の画像
	FPlayer->X     = 552;	//初期X
	FPlayer->Y     = 286;	//初期Y
	FPlayer->Walk=0;	//歩いていない
	FPlayer->Muki=4;	//向きが下
	WalkCount=0;	//歩きカウント0
}

// 動きを計算する
void FPlayer_Calc( FPlayer_t *FPlayer , InputCount_t *InputCount ){

	if( InputCount->UP > 0 && InputCount->RIGHT > 0 ){	//右上に歩く
		FPlayer->Muki=1;
		FPlayer->Y-=1;
		FPlayer->X+=2;
		WalkCount++;
		FPlayer->Image = FPlayerImage[(WalkCount%32)/8+16];
	}else if( InputCount->UP > 0 && InputCount->LEFT > 0 ){	//左上に歩く
		FPlayer->Muki=7;
		FPlayer->Y-=1;
		FPlayer->X-=2;
		WalkCount++;
		FPlayer->Image = FPlayerImage[(WalkCount%32)/8+20];
	}else if( InputCount->DOWN > 0 && InputCount->RIGHT > 0 ){	//右下に歩く
		FPlayer->Muki=3;
		FPlayer->Y+=1;
		FPlayer->X+=2;
		WalkCount++;
		FPlayer->Image = FPlayerImage[(WalkCount%32)/8+24];
	}else if( InputCount->DOWN > 0 && InputCount->LEFT > 0 ){	//左下に歩く
		FPlayer->Muki=5;
		FPlayer->Y+=1;
		FPlayer->X-=2;
		WalkCount++;
		FPlayer->Image = FPlayerImage[(WalkCount%32)/8+28];	
	}else if( InputCount->UP > 0 ){	//上に歩く
		FPlayer->Muki=0;
		FPlayer->Y-=1;
		WalkCount++;
		FPlayer->Image = FPlayerImage[(WalkCount%32)/8];
	}else if( InputCount->DOWN > 0 ){	//下に歩く
		FPlayer->Muki=4;
		FPlayer->Y+=1;
		WalkCount++;
		FPlayer->Image = FPlayerImage[(WalkCount%32)/8+4];
	}else if( InputCount->RIGHT > 0 ){	//右に歩く
		FPlayer->Muki=2;
		FPlayer->X+=2;
		WalkCount++;
		FPlayer->Image = FPlayerImage[(WalkCount%32)/8+8];
	}else if( InputCount->LEFT > 0 ){	//左に歩く
		FPlayer->Muki=6;
		FPlayer->X-=2;
		WalkCount++;
		FPlayer->Image = FPlayerImage[(WalkCount%32)/8+12];
	}else
		WalkCount=0;	//なにもしていない
}


// 終了処理をする
void FPlayer_Finalize( FPlayer_t FPlayer ){
        DeleteGraph( FPlayer.Image );
} 


Re: LoadDivGraphでの『*intのパラメータと互換性がありません。』

Posted: 2011年10月23日(日) 20:50
by box
Chlaza さんが書きました:

コード:

int *FPlayerImage;//←ポインタ?
	LoadDivGraph( "Image/Chara/Player1.png" , 32 , 4 , 8 , 48 , 48 , FPlayerImage );//画像の分割読み込み
DxLibのことを全く知らない私が言うのもアレですが、LoadDivGraph()のリファレンスを読んでみると、
最後の引数は、2番目の引数で指定した数値分の要素を持つ配列でなければならないように見えます。

Re: LoadDivGraphでの『*intのパラメータと互換性がありません。』

Posted: 2011年10月23日(日) 21:14
by softya(ソフト屋)
LoadDivGraphで読み込む先はint型の実体のある配列です。
FPlayerImageはポインタで未初期化なのでポインタ先には実体がありませんので読み込めるはずがありません。

私はFPlayer_t構造体にFPlayerImageの配列も宣言したほうが良いと思います。

【追記】
リファレンスのページにもちゃんと目を通された方が良いと思います。
「DXライブラリ置き場 リファレンスページ LoadDivGraph」
http://homepage2.nifty.com/natupaji/DxL ... .html#R3N3

Re: LoadDivGraphでの『*intのパラメータと互換性がありません。』

Posted: 2011年10月23日(日) 21:24
by Chalaza
すみません。配列で宣言しないといけないのを度忘れしていました。初歩的なミスでした。
アドレスに画像なんて入れられませんね…。
ついでに構造体の中に配列を作ってみます。ありがとうございました
解決です。