ページ 11

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

Posted: 2012年1月22日(日) 15:47
by だんごさん
私は今、例として線と文字を書いています。線は点をつなぎ合わせたもので、ある一定のところまで点を書いたら終了する感じです。線をまるでゆっくり書いているかのようなものです。
文字は、「エラー」にしたとして、点滅させたいのです。もちろん、文字を点滅させながら線を書いていくのですが、私の知識からして文字を消すときは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

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

Posted: 2012年1月22日(日) 16:32
by fulls
暫くDXライブラリに触れていないので適切なことが言えるか地震がないのですが、まず、このコードは実際に実行されましたか?
点が移動するだけで線にはならないような気がするのですが。

[追記]
すいません。
消えませんね。
無視してください。

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

Posted: 2012年1月22日(日) 16:35
by beatle
基本的には,毎回必ずClearDrawScreen()します.
それだと前に描いた点が消えちゃうじゃないか!と思いますよね.その通り,消えてしまいます.

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

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

Posted: 2012年1月22日(日) 17:04
by だんごさん
MakeScreenについて調べてます。これによって画面に表示する文字とかを別に作っておく感じですか?
ちょっとお試しするんで時間かかります・・^^;

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

Posted: 2012年1月22日(日) 17:23
by h2so5
MakeScreenを使うより、
DrawLineを使って毎回最初から描きなおしたほうが良いと思います。

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

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

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

Posted: 2012年1月22日(日) 17:41
by softya(ソフト屋)
線を伸ばしていけば線を書いているように見えます。曲がる時は新たな線をまた長さ1 から初めて伸ばしていけば良いです。
構造体配列で始点座標と終点座標と今の長さと点滅状態を持っていれば何度でも同じ描画できます。今の長さと点滅状態は描画開始からのフレーム数を数えてそれぞれ変えていけば良いと思います。
当然ながらforやwhileは使います。

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

Posted: 2012年1月22日(日) 19:18
by SUE
「基本的には」、コンピュータは複数の処理を同時に行うことはできません。ですので、同時に処理しているように「見せかける」方法が必要となります。

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

また、毎回消してその度に描画、というといささか非効率に聞こえますが、画面書き換えに数秒かかった時代ならいざ知らず、今のパソコンでは必須です。その辺も上記のページとそのシリーズを見てよく理解しておきましょう。

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

Posted: 2012年1月22日(日) 19:28
by だんごさん
皆様、ありがとうございました。
プログラムはまだ未完成ですが見せかけで頑張ってみます。
また分からないことがありましたらその時はよろしくお願いします!

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

Posted: 2012年1月22日(日) 22:52
by だんごさん
解決ボタンを押し忘れてました・・・