ページ 11

画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 19:40
by わくわくさん
タイトルの通りです。
さらに細かく説明させていただくと・・・

320×240のフィールドを

16×16の画像でぐるりと囲みたいと思ってフォー文を書きましたが

なぜか表示されません

エラーがでてデバックできないわけではないのですが
デバックしてみても画像が表示されていません

一緒に表示しようとしている背景(bgwです)はきちんと表示されるのですが・・・

見直してみてもどこがおかしいのかわかりませんでした

たすけてください。
お願いします。

コード:

#include "DxLib.h"

// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	ChangeWindowMode(TRUE);

	if (DxLib_Init() == -1)        // DXライブラリ初期化処理
	{
		return -1;         // エラーが起きたら直ちに終了
	}

	//グラフィックハンドル格納用配列
	int bgw; //背景
	int waku[66]; //外枠66回分

	//画像読み込み
	bgw = LoadGraph("bgw01.png");
	waku[66] = LoadGraph("waku01.png");

	//描画先を裏画面に設定
	SetDrawScreen(DX_SCREEN_BACK);

	while (ScreenFlip() == 0 && ProcessMessage() == 0){

       //先に背景から表示
		DrawGraph(0, 0, bgw, FALSE);
	
       //繰り返しで外枠を埋める
		for (int i = 0; i<66; ++i)
		{
			if (i < 20){
				DrawGraph(i * 16, 0, waku[i], TRUE);
			}
			else if (i>21 && i<40){
				DrawGraph(i * 16, 224, waku[i], TRUE);
			}
			else if (i>41 && i < 53){
				DrawGraph(0, (i + 1) * 16, waku[i], TRUE);
			}
			else
				DrawGraph(304, (i + 1) * 16, waku[i], TRUE);
		}

	}

    //キー待ち
	WaitKey();

DxLib_End();               // DXライブラリ使用の終了処理
return 0;              // ソフトの終了 

}
 

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 19:41
by h2so5
19行目は何をしているんでしょうか。

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 19:48
by わくわくさん
h2so5 さんが書きました:19行目は何をしているんでしょうか。
画像をメモリーに読み込んでいるんですよ?
分からないならあんまりでしゃばらないほうがいいと思います。

コメントをしてくれた気持ちだけ受け取っておきますね^^
ありがとうございます^^

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 20:18
by h2so5
非表示エリア
この非表示エリアを表示するには、登録し、ログインする必要があります。

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 21:02
by Poco
19行目が明らかにおかしいです。
配列wakuはwaku[0]~[65]までが有効範囲なのに、範囲外にアクセスしています。
合わせて30行目のfor文ではwaku[0]~[65]にしかアクセスしていません。

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 21:09
by Dixq (管理人)
わくわくさんが荒らし行為をされたとの報告を受けていますが、それはとりあえず置いといて回答します。
19行目は配列外アクセスしています。
それにLoadGraph関数はわくわくさんの期待する処理をしていないと思われます。
ですので何がしたかったのかを聞いているのだと思います。
せめてwaku01.pngがどんな画像なのか添付してほしいです。

追記:
Pocoさんが既に仰ってますね・・。

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 21:34
by わくわくさん
Dixq (管理人) さんが書きました:わくわくさんが荒らし行為をされたとの報告を受けていますが、それはとりあえず置いといて回答します。
19行目は配列外アクセスしています。
それにLoadGraph関数はわくわくさんの期待する処理をしていないと思われます。
ですので何がしたかったのかを聞いているのだと思います。
せめてwaku01.pngがどんな画像なのか添付してほしいです。

追記:
Pocoさんが既に仰ってますね・・。

解決しました。
19行目がおかしかったんですね

wakuに画像を読み込もうとするとエラーだったので適当に[66]を入れていました。
それだとエラーでなかったので・・・

これだとwaku[66]だけに読み込ませる処理になってたんですね

フォー文で0~66に読み込ませる処理をしてみたら表示できるようになりました。

画像はドットで書いた木の画像だったのですが、ちゃんと表示されました
ポケ○ンのトキワの森みたいになってます♪

表示できて、あらためてデバックしてみると表示するためのフォー文もめちゃくちゃでしたね^^;

みなさんありがとうございました^^
最初に回答くれた人、ごめんね

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 21:34
by わくわくさん
解決わすれてました

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 21:37
by Dixq (管理人)
同じ画像を使うのでしたら66個も画像をロードする必要はありませんよ。
一つだけロードしてそれを使いまわすようにしましょう。

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 21:58
by わくわくさん
Dixq (管理人) さんが書きました:同じ画像を使うのでしたら66個も画像をロードする必要はありませんよ。
一つだけロードしてそれを使いまわすようにしましょう。
そうなのですね

よくわからなかったので、いろいろやっていたらこのやり方になりました
もう少し調べてみます

Re: 画像を並べてフィールドを囲みたいのですがうまくいきません

Posted: 2014年5月08日(木) 22:55
by Dixq (管理人)
それから
WaitKey();
は必要ありません。
ウィンドウが閉じられた後、終了処理を呼ぶことなく待機するコードになっています。