ゲームプログラミングの館 入門編11について

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

ゲームプログラミングの館 入門編11について

#1

投稿記事 by kagari » 13年前

13行目にwhile( 1 )とありますが、かっこの中は([変数名]==1) のような条件式にしなくてもよいのでしょうか。
また、この場合、何の変数が1になるまでループされるのでしょうか。

コード:

#include "DxLib.h"
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        ChangeWindowMode( TRUE ) ;      //ウィンドウモードに変更
        if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了 
 
        int White ;   
        char KeyBuf[ 256 ] ;  
        White = GetColor( 255 , 255 , 255 ) ;//色の取得
 
        DrawString( 170 , 240 , "Z,X,スペースを同時に押すと終了します。" , White );
        
        while( 1 ){                                                     //←この行がわかりません!!
                GetHitKeyStateAll( KeyBuf ) ;                   // すべてのキーの状態を得る
 
                if( KeyBuf[ KEY_INPUT_Z ] == 1 && KeyBuf[ KEY_INPUT_X ] == 1 && KeyBuf[ KEY_INPUT_SPACE ] == 1 )
                        break ;
 
                if( ProcessMessage() == -1 ) break ;//エラーが起きたら終了
        }
 
 
        DxLib_End() ;           // DXライブラリ使用の終了処理
        return 0 ;              // ソフトの終了
}

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: ゲームプログラミングの館 入門編11について

#2

投稿記事 by bitter_fox » 13年前

kagari さんが書きました:13行目にwhile( 1 )とありますが、かっこの中は([変数名]==1) のような条件式にしなくてもよいのでしょうか。
また、この場合、何の変数が1になるまでループされるのでしょうか。

コード:

  
        while( 1 ){                                                     //←この行がわかりません!!
whileは条件式が真の間ループを実行します。
[変数名]==1というのは条件式に当たります。
この条件式を判定した結果に真か偽があります。
偽というのは数値で0、また、
真というのは偽以外、つまり0以外の数値ということになります。

ですのでwhile (1)の1というのは条件が1(つまり真)であるということを示しており無限ループになります。

kagari

Re: ゲームプログラミングの館 入門編11について

#3

投稿記事 by kagari » 13年前

ありがとうございます。
無限ループなのはわかりました!

ただ一つ納得がいかないのですが、
while( 1 )というのは、何の変数が1なのでしょうか。

たとえば、

コード:

while( hensuu == 1 )
なら、hensuuという変数が1の間、whileの中を実行するのはわかるのですが、

コード:

while
while( 1 )
というのは、何が1の間、whileの中を実行しているのでしょうか。

度々申し訳ありませんが、よろしくおねがいします。

kagari

Re: ゲームプログラミングの館 入門編11について

#4

投稿記事 by kagari » 13年前

2個目のコードでwhileがかぶってしまいました。上のwhileは無視してください。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: ゲームプログラミングの館 入門編11について

#5

投稿記事 by みけCAT » 13年前

「何が1の間」という問題ではありません。

コード:

while(なんとか) {
    /*処理*/
}
というのは、「なんとかが真の間処理を繰り返し実行する」という意味になります。
したがって、あえて言うなら「1が真の間」実行します。
すなわち、ずっと実行します。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

maru
記事: 150
登録日時: 14年前

Re: ゲームプログラミングの館 入門編11について

#6

投稿記事 by maru » 13年前

while 文の()の中は変数ではなく式です。別に変数を使った式を書く必要はなく、定数でもかまいません。

アバター
はんなり
記事: 48
登録日時: 14年前

Re: ゲームプログラミングの館 入門編11について

#7

投稿記事 by はんなり » 13年前

whileの()内が1だったら必ずループするんだと覚えた方が早いです。

whileは()内の条件を満たしていればループなので、条件が欲しければ、

コード:

while(ProcessMessage()==0){
とすれば、whileでProcessMessageを使ってくれるので一行お得ですよ。

kagari

Re: ゲームプログラミングの館 入門編11について

#8

投稿記事 by kagari » 13年前

みなさんありがとうございます。
やっと理解できました!

閉鎖

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