クリック回数を利用したループ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まりも。
記事: 5
登録日時: 1年前

クリック回数を利用したループ

#1

投稿記事 by まりも。 » 1年前

質問です。私は最近C++を勉強をしている初心者なのですが学校の課題がわからず困っています。
問題は、座標の位置に半径10cmの円を描画するというものです。

ひとつ前の課題で配列にクリックしたときの座標を設定するということをしました。
これです↓

コード:

if (g_pInput->IsMouseKeyPush(MOFMOUSE_LBUTTON)) {
		
		//記録済みマウスの座標を1つ後ろにずらす
		for (int i = HISTORY_MAX - 1; i > 0; i--) {

			hist_mx[i] = hist_mx[i-1];
			hist_my[i] = hist_my[i-1];

		}
		//配列の先頭に現在のマウス座標を記録
		hist_mx[0] = mx;
		hist_my[0] = my;

		//クリック回数を加算
		clickCount++;
	}
hist_mx[0]はxの座標配列      hist_my[0]はyの座標配列
mx,myはクリックしたときの座標  HISTORY_MAX は10です。

今回の問題文をそのまま書くと
クリックをしていない場合hist_mx/hist_myの配列には描くべき座標はいっていません。
一回クリックした時点でhist_mx[0]/hist_my[0]に記録されます。
そのため、単純に配列の要素分を繰り返せばよいのではなく配列要素数を超えない範囲で、クリックした回数分繰り返す必要があります。配列要素数は定数HISTORY_MAXに、クリック回数は変数clickCount記録されています。
<>
描画はfor文を使う、描画は
CGraphicsUtilities::RenderCircle(hist_mx[?], hist_my[?], 10, MOF_XRGB(0, 255, 0));を使う

コード:

//演習4&課題4:クリックした座標位置に円を描画

	int a;
	for (a = clickCount; a < HISTORY_MAX; a++) 
	{
		CGraphicsUtilities::RenderCircle(hist_mx[a-1], hist_my[a-1], 10, MOF_XRGB(0, 255, 0));
	}
これは私が書いてみたやつです、
初めて掲示板を使うので質問内容がわかりにくかったらすみません。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: クリック回数を利用したループ

#2

投稿記事 by みけCAT » 1年前

クリックした座標は、hist_mx および hist_my の0番目以上 clickCount 番目未満の要素に入っているはずなので、

コード:

	int a;
	for (a = 0; a < clickCount && a < HISTORY_MAX; a++) 
	{
		CGraphicsUtilities::RenderCircle(hist_mx[a], hist_my[a], 10, MOF_XRGB(0, 255, 0));
	}
とするといいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

まりも。
記事: 5
登録日時: 1年前

Re: クリック回数を利用したループ

#3

投稿記事 by まりも。 » 1年前

出来ました!!ありがとうございます。
おこがましくて申し訳ないのですが、同じ問題をfor文の書き方を変えて書くことはできますでしょうか。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: クリック回数を利用したループ

#4

投稿記事 by みけCAT » 1年前

まりも。 さんが書きました:
1年前
同じ問題をfor文の書き方を変えて書くことはできますでしょうか。
できます。
例えば、単純な書き換えだと

コード:

	int a = 0;
	for (; ;) 
	{
		if (!(a < clickCount && a < HISTORY_MAX)) break;
		CGraphicsUtilities::RenderCircle(hist_mx[a], hist_my[a], 10, MOF_XRGB(0, 255, 0));
		a++;
	}
とできます。
何か具体的な条件はありますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

まりも。
記事: 5
登録日時: 1年前

Re: クリック回数を利用したループ

#5

投稿記事 by まりも。 » 1年前

ありがとうございます!無事完成出来ました
特に条件はなかったです。とても助かりました!!!

返信

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