ページ 11

のく

Posted: 2012年9月22日(土) 18:40
by 正しい書き方を教えてくれませんか?

コード:


int MapData[ 16 * 20 ] =
        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0  ,
          0, 1, 1, 0, 0, 0, 0, 0, 0, 0 ,  1, 1, 1, 1, 1, 1, 1, 1, 1, 0  ,
          0, 0, 1, 1, 1, 0, 0, 0, 0, 0 ,  1, 0, 0, 0, 0, 0, 0, 0, 1, 0  ,
          0, 0, 1, 0, 1, 0, 0, 0, 0, 0 ,  1, 1, 1, 1, 1, 1, 0, 0, 1, 0  ,
          0, 1, 1, 0, 1, 0, 0, 1, 1, 0 ,  0, 0, 0, 0, 0, 1, 0, 0, 1, 0  ,
          0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ,  0, 0, 1, 1, 1, 1, 1, 0, 1, 0  ,
          0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ,  0, 0, 1, 0, 0, 1, 1, 0, 1, 0  ,
          0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ,  0, 0, 1, 0, 0, 1, 1, 0, 1, 0  ,
 
          0, 1, 1, 1, 1, 1, 1, 1, 1, 0 ,  0, 1, 1, 0, 0, 1, 1, 0, 1, 0  ,
          0, 0, 0, 0, 1, 0, 0, 1, 0, 0 ,  0, 1, 1, 0, 0, 1, 1, 0, 1, 0  ,
          0, 0, 0, 0, 1, 0, 0, 1, 0, 0 ,  0, 1, 1, 0, 0, 1, 1, 0, 1, 0  ,
          0, 0, 0, 1, 1, 0, 0, 1, 0, 0 ,  0, 1, 1, 0, 0, 1, 1, 0, 1, 0  ,
          0, 1, 1, 1, 1, 0, 0, 1, 1, 1 ,  1, 1, 1, 0, 0, 1, 1, 0, 1, 0  ,
          0, 1, 1, 1, 1, 0, 0, 0, 0, 0 ,  0, 0, 0, 0, 0, 0, 0, 0, 1, 0  ,
          0, 1, 1, 1, 1, 0, 0, 0, 0, 0 ,  0, 0, 0, 0, 0, 0, 0, 0, 1, 0  ,
          0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0  ,
    } ;


	GraphDraw( PlayerX, PlayerY, MapData, x, y);

}


void GraphDraw( int PlayerX, int PlayerY, int MapData[] ,int x ,int y)
{
	int Map1[55];

	LoadDivGraph( "map01.png" , 55 , 11 , 5 , 32 , 32 , Mapa1 ) ;

	for( int i = 0 ; i <= y ; i++ )
		for( int j = 0 ; j <= x ; j++ ){
			DrawGraph( j*32 , i*32 , Map1[MapData[j+i*y]] , TRUE ) ;
		}

	ScreenFlip() ;
	WaitKey() ;
}
DrawGraph( j*32 , i*32 , Map1[MapData[j+i*y]] , TRUE ) ;

のところでエラーが出てしまいます。Map1[MapData[j+i*y]]という書き方では駄目なようで
MapDataの値をに対応したMap1にある画像を書きたいところなのですが、どのように書けばよいのでしょうか?
よろしくおねがいします

Re: のく

Posted: 2012年9月22日(土) 19:05
by box
正しい書き方を教えてくれませんか? さんが書きました: DrawGraph( j*32 , i*32 , Map1[MapData[j+i*y]] , TRUE ) ;
のところでエラーが出てしまいます。
これまで、多くのトピックにおいてたびたびお願いしておりますとおり、
「何をしたときに」「どんな」エラーが出るかを「具体的に」書いていただけませんでしょうか。
「エラーが出る」だけでは、事実上「何も言っていない」のと同じです。

Re: のく

Posted: 2012年9月22日(土) 19:23
by のく
box さんが書きました:
正しい書き方を教えてくれませんか? さんが書きました: DrawGraph( j*32 , i*32 , Map1[MapData[j+i*y]] , TRUE ) ;
のところでエラーが出てしまいます。
これまで、多くのトピックにおいてたびたびお願いしておりますとおり、
「何をしたときに」「どんな」エラーが出るかを「具体的に」書いていただけませんでしょうか。
「エラーが出る」だけでは、事実上「何も言っていない」のと同じです。
失礼しました
実行すると
ハンドルされない例外が 0x00EE5ECC (DXLtest.exe) で発生しました:
0xC000005: 場所 0x33742624 の読み取り中にアクセス違反が発生しました。
という画面がでます。

Re: のく

Posted: 2012年9月22日(土) 19:27
by beatle
Map1の要素は55個、MapDataの要素は(恐らく)320個ですね。
MapDataの値に対応したMap1にある画像とは、具体的にどのように対応させたいのですか?

Re: のく

Posted: 2012年9月22日(土) 19:39
by のく
beatle さんが書きました:Map1の要素は55個、MapDataの要素は(恐らく)320個ですね。
MapDataの値に対応したMap1にある画像とは、具体的にどのように対応させたいのですか?
MapDataの0とか1とかはとりあえず歩ける場所を書いてます
Map1はMapDataの値に合わせて描写したい画像が入ってます
こんな説明で大丈夫でしょうか・・?

Re: のく

Posted: 2012年9月22日(土) 19:55
by box
正しい書き方を教えてくれませんか? さんが書きました:

コード:

void GraphDraw( int PlayerX, int PlayerY, int MapData[] ,int x ,int y)
			DrawGraph( j*32 , i*32 , Map1[MapData[j+i*y]] , TRUE ) ;
そのエラーが出たときの、引数xとyの値はいくつですか?

Re: のく

Posted: 2012年9月22日(土) 20:06
by のく
box さんが書きました:
正しい書き方を教えてくれませんか? さんが書きました:

コード:

void GraphDraw( int PlayerX, int PlayerY, int MapData[] ,int x ,int y)
			DrawGraph( j*32 , i*32 , Map1[MapData[j+i*y]] , TRUE ) ;
そのエラーが出たときの、引数xとyの値はいくつですか?
x = 16
y = 20
です
ちなみに
i = 16
でした

Re: のく

Posted: 2012年9月22日(土) 20:12
by beatle
MapDataの添字に来ていいのは 0以上319以下の整数です。
i=16, y=20 のとき、 i*y = 320 なので添字を超えています。

Re: のく

Posted: 2012年9月23日(日) 01:25
by のく
beatle さんが書きました:MapDataの添字に来ていいのは 0以上319以下の整数です。
i=16, y=20 のとき、 i*y = 320 なので添字を超えています。
ありがとうございました、修正すると理想的な動きをしてくれました。
本当にありがとうございました

Re: のく

Posted: 2012年9月23日(日) 06:20
by beatle
ここのフォーラムルールなのですが,解決した場合は解決した方法や最終的なソースコードをお示しください.
後からこの掲示板を見た人の参考にするためです.