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

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

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: Dxライブラリでランダムに画像を配置したい

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

#4

by JJJuto » 3年前

できました、ありがとうございます♪

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

#3

by みけCAT » 3年前

標準の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ライブラリでランダムに画像を配置したい

#2

by あたっしゅ » 3年前

同じ画像を複数回 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() ;
        }

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

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

#1

by JJJuto » 3年前

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);
	}
	
大分省いてますが、こんな感じで書いてみました。
アドバイス、正しいソース等お願いします。

ページトップ