こんばんは。
現在ゲームプログラミングの館にて勉強中なのですが、
ここのページ(http://dixq.net/g/01_08.html)の部分でわからない部分があります。
というのも、ページ内のwhile文の中のプログラムを条件式の中にまとめて書き込む(短縮する)ところなのですが、
条件式の中身を以下のように書き込んだところ、画像が表示されず真っ黒のままになりました。
int x=0;
int h; // データハンドル格納用変数
h = LoadGraph( "画像/キャラクタ01.png" ); // 画像をロード
while( ProcessMessage()==0 && ClearDrawScreen()==0 && ScreenFlip()==0){
DrawGraph(x,100,h,TRUE); //画像描写(SetDrawScreenの設定で裏に描写)
x=x+2;
}
ちなみにページの通りの順番 while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
とするとちゃんと画像が表示されるのですが、ここの理由がわかりません。
基本的なことで申し訳ないのですが、どなたか教えていただけないでしょうか?
while文の条件式の順番について
Re: while文の条件式の順番について
&&演算子は左辺を実行した後に(その結果が0でなければ)右辺を実行することが保証されており、
ClearDrawScreen()によって真っ黒になった画面をそのままScreenFlip()で表示しているのでそうなりますね。
ClearDrawScreen()によって真っ黒になった画面をそのままScreenFlip()で表示しているのでそうなりますね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: while文の条件式の順番について
なるほど、ちゃんと条件式の中にも実行される順番というものがあったんですね。みけCAT さんが書きました:&&演算子は左辺を実行した後に(その結果が0でなければ)右辺を実行することが保証されており、
ClearDrawScreen()によって真っ黒になった画面をそのままScreenFlip()で表示しているのでそうなりますね。
つまり、ミスってた部分はClearDrawScreenを先に持ってきてしまっていたためだったんですね。
ここのアドバイスを元に少し章を遡ってまとめる前のプログラムを開き、
順番を入れ替えてみたら理解できました。
解説を頂けてとても助かりました。
ありがとうございます!