同時に繰り返し文を実行したい

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

同時に繰り返し文を実行したい

#1

投稿記事 by だんごさん » 8年前

私は今、例として線と文字を書いています。線は点をつなぎ合わせたもので、ある一定のところまで点を書いたら終了する感じです。線をまるでゆっくり書いているかのようなものです。
文字は、「エラー」にしたとして、点滅させたいのです。もちろん、文字を点滅させながら線を書いていくのですが、私の知識からして文字を消すときはClearDrawScreen()だと思いますが、それだと線まで一緒に消えてしまうと思うんです。

線を引くコードです。↓

コード:

int x = 95;
SetDrawScreen( DX_SCREEN_BACK ) ;   //裏画面
do{
DrawPixel(x,90,Cr);//CrはGetColor(255,255,255)として。
x++;//xを足していく。
if(x==545)break;//xが545に到達したら終了
 ScreenFlip();//表示
}while(ProcessMessage()==0);
初心者なのであやふやなコードかもしれませんが一応書けます。
点滅コードは書いていませんが、問題として文字を点滅させつつ線を引く・・・つまり繰り返し文を同時に実行したいということです。
もしかすると一つの繰り返し文に入れるのかと思いましたが難しくて・・・;;
それとも繰り返し文なしでも実行できるのですか?
よろしくお願いします。

腕は初心者です。
環境
OS: Windows7
コンパイラ名 :VC++ 2008EE

fulls
記事: 72
登録日時: 8年前
住所: 埼玉

Re: 同時に繰り返し文を実行したい

#2

投稿記事 by fulls » 8年前

暫くDXライブラリに触れていないので適切なことが言えるか地震がないのですが、まず、このコードは実際に実行されましたか?
点が移動するだけで線にはならないような気がするのですが。

[追記]
すいません。
消えませんね。
無視してください。
最後に編集したユーザー fulls on 2012年1月22日(日) 16:39 [ 編集 1 回目 ]

beatle
記事: 1280
登録日時: 8年前
住所: 埼玉
連絡を取る:

Re: 同時に繰り返し文を実行したい

#3

投稿記事 by beatle » 8年前

基本的には,毎回必ずClearDrawScreen()します.
それだと前に描いた点が消えちゃうじゃないか!と思いますよね.その通り,消えてしまいます.

やり方は2通りくらいあると思います.毎回,1つめの点からすべて描画する方法と,MakeScreenによって生成した領域へ点だけ描画しておく方法です.

だんごさん

Re: 同時に繰り返し文を実行したい

#4

投稿記事 by だんごさん » 8年前

MakeScreenについて調べてます。これによって画面に表示する文字とかを別に作っておく感じですか?
ちょっとお試しするんで時間かかります・・^^;

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

Re: 同時に繰り返し文を実行したい

#5

投稿記事 by h2so5 » 8年前

MakeScreenを使うより、
DrawLineを使って毎回最初から描きなおしたほうが良いと思います。

だんごさん

Re: 同時に繰り返し文を実行したい

#6

投稿記事 by だんごさん » 8年前

h2so5 さんが書きました:DrawLineを使って毎回最初から描きなおしたほうが良いと思います。
DrawLineということは線を書いていく様子は見ずにもう線として書くということですよね・・・?
ということは線を描くのは繰り返さないで文字を点滅させるだけの作業となります。どうしても繰り返し文を同時にということはできないということでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 同時に繰り返し文を実行したい

#7

投稿記事 by softya(ソフト屋) » 8年前

線を伸ばしていけば線を書いているように見えます。曲がる時は新たな線をまた長さ1 から初めて伸ばしていけば良いです。
構造体配列で始点座標と終点座標と今の長さと点滅状態を持っていれば何度でも同じ描画できます。今の長さと点滅状態は描画開始からのフレーム数を数えてそれぞれ変えていけば良いと思います。
当然ながらforやwhileは使います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
SUE
記事: 41
登録日時: 8年前

Re: 同時に繰り返し文を実行したい

#8

投稿記事 by SUE » 8年前

「基本的には」、コンピュータは複数の処理を同時に行うことはできません。ですので、同時に処理しているように「見せかける」方法が必要となります。

というわけで、詳しくはこのページをよく読んでみてください。
http://homepage2.nifty.com/natupaji/DxL ... re1_1.html

また、毎回消してその度に描画、というといささか非効率に聞こえますが、画面書き換えに数秒かかった時代ならいざ知らず、今のパソコンでは必須です。その辺も上記のページとそのシリーズを見てよく理解しておきましょう。
pop'n music 20 fantasia ポップンクエストPhase MAX Ⅱ ムラクモ/少年は空を辿る【Power Of Nature】

だんごさん
記事: 273
登録日時: 8年前

Re: 同時に繰り返し文を実行したい

#9

投稿記事 by だんごさん » 8年前

皆様、ありがとうございました。
プログラムはまだ未完成ですが見せかけで頑張ってみます。
また分からないことがありましたらその時はよろしくお願いします!
 Dango San

だんごさん
記事: 273
登録日時: 8年前

Re: 同時に繰り返し文を実行したい

#10

投稿記事 by だんごさん » 8年前

解決ボタンを押し忘れてました・・・
 Dango San

閉鎖

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