ページ 11

14章で

Posted: 2008年11月21日(金) 20:27
by 海老天
14章において
image = LoadGraph( "char.png" ) ;
と記述するところがありますがここと13章の内容を組み合わせて画面を歩いて行くプログラムを作りたいと思い

int i,image[16];

for(i = 16;i > 0;i--)
{
 image = LoadGraph("e/char%d.png",i);
}

のように記述しようとしたのですがどうもうまくいきません
%dの部分にiと同じ値が入っているようにしたいのですがどうすればいいでしょうか?

Re:14章で

Posted: 2008年11月21日(金) 20:39
by box
> のように記述しようとしたのですがどうもうまくいきません

うまくいきません、とは、具体的にどうなることを指していますか?
コンパイルエラーが出たならそのときのメッセージを、
実行時エラーが出たならそのときのメッセージを、提示してください。

> %dの部分にiと同じ値が入っているようにしたいのですがどうすればいいでしょうか?

やったこともない私ごときの者が推測でものを言うのはおこがましいですが、

	char str[40];
	
	for (i = 16; i > 0; --i) {
		sprintf(str, "e:\\char%d.png", i);
		LoadGraph(str);
	}

あたりでうまくいきませんか?

Re:14章で

Posted: 2008年11月21日(金) 20:49
by 海老天
返信ありがとうございます
エラーは一切出ず、ただ画像が全く読み込まれていないようです
教えていただいた通りにやってみたのですがうまくいきませんでした
LoadGraphの()の中で
printf("%d",i);
のような記述は不可能なのでしょうか?

Re:14章で

Posted: 2008年11月21日(金) 20:57
by non
いろいろ試すのはいいと思いますが、19章まで行けば、歩きますよ。

>LoadGraphの()の中で
>printf("%d",i);
>のような記述は不可能なのでしょうか?

それは、無理なので、boxさんがいわれるようにsprintfを使うのでしょう。
それで海老天さんは16枚の絵を用意したのですか。
DrawGraphも16回ウェイトを入れて繰り返したのでしょうか?

Re:14章で

Posted: 2008年11月21日(金) 21:03
by box
> int i,image[16];
>
> for(i = 16;i > 0;i--)
> {
>  image = LoadGraph("e/char%d.png",i);
> }

i が 16 のとき、配列 image[/url] の定義範囲外の領域にアクセスしています。
本題と関係あるかどうかはわかりませんが、まずいと思います。

Re:14章で

Posted: 2008年11月21日(金) 21:14
by 海老天
>>nonさん
絵はchar.pngを分割して16枚用意しました
今17章を見たところ今やっている方法よりも優れた方法で行われているようですのでそちらを参考にしてみようと思います
アドバイスありがとうございました


>>boxさん
今気が付きました
ありがとうございます