説明の説明を希望

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

説明の説明を希望

#1

投稿記事 by うい » 16年前

while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了


の、下の説明について、どうしてこうなるか教えててください。
また、ゲーム中キャラを動かす時には毎回必要な文字なのでしょうか?

Mist

Re:説明の説明を希望

#2

投稿記事 by Mist » 16年前

DXライブラリのリファレンスマニュアルでそれぞれの関数について調べられたほうがわかりやすいと思います。

http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html

バグ

Re:説明の説明を希望

#3

投稿記事 by バグ » 16年前

ProcessMessage … Windowsプログラムに必要なメッセージ処理を行う
ClearDrawScreen … 画面のグラフィックを消去する
GetHitKeyStateAll … キーの入力状態の取得

だったかな?
で、それぞれの関数の戻り値が…
0が成功で、それ以外はなにかしらのエラーが発生した場合なので、

『!』演算子をつけて0が返ってきた場合に真としている…という訳です。
『&&』演算子を用いている箇所は、『●●であり、なおかつ▲▲である場合』という意味だと思ってください。

つまり、あの判定文は『ProcessMessage関数の実行に成功し、なおかつClearDrawScreen関数の実行に成功し、なおかつGetHitKeyStateAll関数の実行に成功し、エスケープキーが押されていない状態を真とする』という意味になります。

うい

Re:説明の説明を希望

#4

投稿記事 by うい » 16年前

なるほど、!にはそういう意味があったのですね。
ありがとうございます。

Dixq (管理人)

Re:説明の説明を希望

#5

投稿記事 by Dixq (管理人) » 16年前

「!」の書き方がわかりにくかったですかね。

判定式は真か偽かで判定されますよね。

if(真){
    //
}

はいつも実行されますが

if(偽){
    //
}

はいつも実行されませんね。では「!(=否定)」をつけるとどうなるか

if(!真){
    //
}

はいつも実行されません。

if(!偽){
    //
}

はいつも実行されます。そして真とは0以外、偽とは0であることから、

if(!0){
    //
}

の時いつも実行させることが出来ます。関数の返り値は0以外が異常であることから、
この時条件から外すことが出来るのです。
 

紅葉

Re:説明の説明を希望

#6

投稿記事 by 紅葉 » 16年前

素人なりに
例えば
bool型のFlgがあったとします。


if(Flg == true){
//処理
}

if(Flg){
//処理
}

AとBは同じ意味です。
では!マークの場合はどうなのか・・・


if(Flg == false){
//処理
}

if(!Flg){
//処理
}
今度はCとDが同じ意味です。
説明が下手で申し訳ないのですがこんな感じです

閉鎖

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