入門編、以下のページの内容についてご教授よろしくお願いします。
>http://dixq.net/g/10.html
CheckHitKeyでエンターキーを取得するプログラムですが、whileループの中身が、結局のところ何の処理を繰り返しているのかが分かりません。プログラムを実行してみると、エンターキー以外では、画面はまったく反応していないように見えます。ただ、エンター以外の入力でも、画面上に、「ENTERキーを押すと終了します」という文章は表示され続けています。whileの条件文は、「==0」なので、「エンターが押されていないなら、カッコ内の処理を繰り返す」というふうに私は解釈してしまっているのですが、カッコ内の処理は、ProcessMessage()というエラー処理のみで、結局、いったい何が繰り返されているのか、あるいは、どうして文章の表示のままで「停められているのか」ピンと来ません。
例えば、 DrawString( 230 , 240 , "ENTERキーを押すと終了します。" , White );の部分が、whileの処理のカッコ内に書かれているのなら、「エンターが押されるまで、この文章は表示されるんだな」と分かるのですが、ここではwhileの手前で既に書かれていますし、私の今の習熟度では、何も処理の書かれていないwhile文というふうにしか捉えることができず、いったい何が繰り返されているのか、また、なんで何も処理がないのに繰り返されているのか、分かりません。
「いや、これはただ待っているだけだから、これでいいのだ」と考えれば、分かったようなつもりにはなれるのですが、エラー処理は別とすれば、何もwhileの中には処理がないように思え、C言語の入門も間もない私にはちょっと不思議に見えたのです。それともやはり、「処理がなくても条件文はあるので、これで待ち処理になるんだよ、これから知っといてね」というぐらいの理解でよいのでしょうか。
CheckHitKeyの待ち処理について
Re:CheckHitKeyの待ち処理について
> ネスさん
こんにちは。
う、注釈間違ってますね;
「while( CheckHitKey( KEY_INPUT_RETURN ) == 0 )」
はエンターが押されていない間ループを意味します。
それから、おっしゃる疑問に付いてですが、
一度書いたものは消すまで表示し続けます。
今回の場合、消すという処理をしていないので、表示し続けます。
13章までのプログラムはゲーム製作中使う機会のないプログラムなので、一度13章まで読んでみてください。
そうすれば疑問は晴れると思います。
こんにちは。
う、注釈間違ってますね;
「while( CheckHitKey( KEY_INPUT_RETURN ) == 0 )」
はエンターが押されていない間ループを意味します。
それから、おっしゃる疑問に付いてですが、
一度書いたものは消すまで表示し続けます。
今回の場合、消すという処理をしていないので、表示し続けます。
13章までのプログラムはゲーム製作中使う機会のないプログラムなので、一度13章まで読んでみてください。
そうすれば疑問は晴れると思います。
Re:CheckHitKeyの待ち処理について
レスありがとうございます。
>一度書いたものは消すまで表示し続けます。
>今回の場合、消すという処理をしていないので、表示し続けます。
なるほど、それで違うキーを押しても表示されていたのですか。
whileカッコの処理部に特に何も書かれていないのは初めてだったので、素朴な疑問を感じたしだいです。
>13章までのプログラムはゲーム製作中使う機会のないプログラムなので、
そうでしたか、では、もうちょっと読み進めてみますね。
>一度書いたものは消すまで表示し続けます。
>今回の場合、消すという処理をしていないので、表示し続けます。
なるほど、それで違うキーを押しても表示されていたのですか。
whileカッコの処理部に特に何も書かれていないのは初めてだったので、素朴な疑問を感じたしだいです。
>13章までのプログラムはゲーム製作中使う機会のないプログラムなので、
そうでしたか、では、もうちょっと読み進めてみますね。
Re:CheckHitKeyの待ち処理について
ちょっと誤解を招く発言だったかもしれませんが、
13章以前は、紹介したい関数が良く分かるように、それ以外の処理を書いていないのです。
しかし、紹介している関数自体は非常によく使うものです。
実際に動かすプログラムの骨格として13章で完成するということですので。
13章以前は、紹介したい関数が良く分かるように、それ以外の処理を書いていないのです。
しかし、紹介している関数自体は非常によく使うものです。
実際に動かすプログラムの骨格として13章で完成するということですので。