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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
わくわくさん

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

#1

投稿記事 by わくわくさん » 10年前

タイトルの通りです。
さらに細かく説明させていただくと・・・

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;              // ソフトの終了 

}
 

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 10年前

19行目は何をしているんでしょうか。

わくわくさん

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

#3

投稿記事 by わくわくさん » 10年前

h2so5 さんが書きました:19行目は何をしているんでしょうか。
画像をメモリーに読み込んでいるんですよ?
分からないならあんまりでしゃばらないほうがいいと思います。

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

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

#4

投稿記事 by h2so5 » 10年前

非表示エリア
この非表示エリアを表示するには、登録し、ログインする必要があります。

Poco
記事: 161
登録日時: 13年前

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

#5

投稿記事 by Poco » 10年前

19行目が明らかにおかしいです。
配列wakuはwaku[0]~[65]までが有効範囲なのに、範囲外にアクセスしています。
合わせて30行目のfor文ではwaku[0]~[65]にしかアクセスしていません。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

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

#6

投稿記事 by Dixq (管理人) » 10年前

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

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

わくわくさん

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

#7

投稿記事 by わくわくさん » 10年前

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

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

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

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

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

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

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

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

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


アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

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

#9

投稿記事 by Dixq (管理人) » 10年前

同じ画像を使うのでしたら66個も画像をロードする必要はありませんよ。
一つだけロードしてそれを使いまわすようにしましょう。

わくわくさん

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

#10

投稿記事 by わくわくさん » 10年前

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

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

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

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

#11

投稿記事 by Dixq (管理人) » 10年前

それから
WaitKey();
は必要ありません。
ウィンドウが閉じられた後、終了処理を呼ぶことなく待機するコードになっています。

閉鎖

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