ページ 1 / 1
説明の説明を希望
Posted: 2008年11月22日(土) 17:32
by うい
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了
の、下の説明について、どうしてこうなるか教えててください。
また、ゲーム中キャラを動かす時には毎回必要な文字なのでしょうか?
Re:説明の説明を希望
Posted: 2008年11月22日(土) 18:04
by Mist
Re:説明の説明を希望
Posted: 2008年11月22日(土) 18:10
by バグ
ProcessMessage … Windowsプログラムに必要なメッセージ処理を行う
ClearDrawScreen … 画面のグラフィックを消去する
GetHitKeyStateAll … キーの入力状態の取得
だったかな?
で、それぞれの関数の戻り値が…
0が成功で、それ以外はなにかしらのエラーが発生した場合なので、
『!』演算子をつけて0が返ってきた場合に真としている…という訳です。
『&&』演算子を用いている箇所は、『●●であり、なおかつ▲▲である場合』という意味だと思ってください。
つまり、あの判定文は『ProcessMessage関数の実行に成功し、なおかつClearDrawScreen関数の実行に成功し、なおかつGetHitKeyStateAll関数の実行に成功し、エスケープキーが押されていない状態を真とする』という意味になります。
Re:説明の説明を希望
Posted: 2008年11月22日(土) 19:05
by うい
なるほど、!にはそういう意味があったのですね。
ありがとうございます。
Re:説明の説明を希望
Posted: 2008年11月23日(日) 01:38
by Dixq (管理人)
「!」の書き方がわかりにくかったですかね。
判定式は真か偽かで判定されますよね。
if(真){
//
}
はいつも実行されますが
if(偽){
//
}
はいつも実行されませんね。では「!(=否定)」をつけるとどうなるか
if(!真){
//
}
はいつも実行されません。
if(!偽){
//
}
はいつも実行されます。そして真とは0以外、偽とは0であることから、
if(!0){
//
}
の時いつも実行させることが出来ます。関数の返り値は0以外が異常であることから、
この時条件から外すことが出来るのです。
Re:説明の説明を希望
Posted: 2008年11月25日(火) 17:26
by 紅葉
素人なりに
例えば
bool型のFlgがあったとします。
A
if(Flg == true){
//処理
}
B
if(Flg){
//処理
}
AとBは同じ意味です。
では!マークの場合はどうなのか・・・
C
if(Flg == false){
//処理
}
D
if(!Flg){
//処理
}
今度はCとDが同じ意味です。
説明が下手で申し訳ないのですがこんな感じです