ページ 11

Dxライブラリでランダムに画像を配置したい

Posted: 2020年11月30日(月) 00:28
by JJJuto
Dxライブラリにおいて、1つの画像をランダムに複数個描画させるのは、どういったソースを書けばできますか?
1つの画像をa.jpgとして、10個、乱数を用いて、ランダムに配置したいです。

コード:

        int i,n,m,image[9];
	srand((unsigned int)time(NULL));

	for (i = 0; i < 10; i++) {
        n = rand() % 640;
	m = rand() % 480;
		image[i] = LoadGraph(".\\Media\\a.jpg");

		DrawRotaGraph(n, m, 0.2, 0.2, image[i], TRUE);
	}
	
大分省いてますが、こんな感じで書いてみました。
アドバイス、正しいソース等お願いします。

Re: Dxライブラリでランダムに画像を配置したい

Posted: 2020年11月30日(月) 02:13
by あたっしゅ
同じ画像を複数回 LoadGraph する必要は、ありません。

コード:

        // 初期化省略

	int image = LoadGraph(".\\Media\\a.jpg");

	// ループ
	while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
	{
	    // 画面を初期化する
	    ClearDrawScreen() ;

            for (i = 0; i < 10; i++) {
                n = rand() % 640;
	        m = rand() % 480;

	        DrawRotaGraph(n, m, 0.2, 0.2, image, TRUE);
	    }

	    // 裏画面の内容を表画面に反映させる
	    ScreenFlip() ;
        }

        // 後始末省略
今回は、ビルドしてないです。

Re: Dxライブラリでランダムに画像を配置したい

Posted: 2020年11月30日(月) 03:12
by みけCAT
標準のrand関数は、乱数の質が低い可能性があります。
DXライブラリには、GetRandという乱数を取得する関数があります。

コード:

	int image = LoadGraph(".\\Media\\a.jpg");

	// ループ
	while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
		// 画面を初期化する
		ClearDrawScreen();

		for (int i = 0; i < 10; i++) {
			int n = GetRand(640 - 1);
			int m = GetRand(480 - 1);

			DrawRotaGraph(n, m, 0.2, 0.2, image, TRUE);
		}

		// 裏画面の内容を表画面に反映させる
		ScreenFlip();
	}
上記のコードでは、毎フレーム画像を表示する位置が変わります。
位置を固定する場合は、事前に画像を表示する位置を決め、保存しておくといいでしょう。

コード:

	int image = LoadGraph(".\\Media\\a.jpg");

	// 画像を表示する位置を決める
	int n[10], m[10];
	for (int i = 0; i < 10; i++) {
		n[i] = GetRand(640 - 1);
		m[i] = GetRand(480 - 1);
	}

	// ループ
	while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
		// 画面を初期化する
		ClearDrawScreen();

		// 画像をあらかじめ決めた位置に表示する
		for (int i = 0; i < 10; i++) {
			DrawRotaGraph(n[i], m[i], 0.2, 0.2, image, TRUE);
		}

		// 裏画面の内容を表画面に反映させる
		ScreenFlip();
	}
同じ数値10を何度を使用しているので、定数として定義して使用するとさらに良いでしょう。

コンパイルしてチェックしていないので、間違っていたらごめんなさい。

Re: Dxライブラリでランダムに画像を配置したい

Posted: 2020年11月30日(月) 18:19
by JJJuto
できました、ありがとうございます♪