ページ 11

1.9章 ゲームプログラムの骨格の完成 についてわからないことがあります。

Posted: 2013年1月17日(木) 01:39
by MSC

コード:

 
#include "DxLib.h"

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定

        int x = 0;
        int Handle;     // 画像格納用ハンドル
        Handle = LoadGraph( "画像/キャラクタ01.png" ); // 画像のロード

        // while( 裏画面を表画面に反映, メッセージ処理, 画面クリア )
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){

                DrawGraph( x,   100, Handle, TRUE ); //画像の描画
                DrawGraph( x/2, 200, Handle, TRUE ); //画像の描画
                DrawGraph( x/4, 300, Handle, TRUE ); //画像の描画
                x = x + 2; // xを2増やす

        }
        
        DxLib_End(); // DXライブラリ終了処理
        return 0;
} 

わからないのは上のコードの

コード:

 
             DrawGraph( x/2, 200, Handle, TRUE ); //画像の描画
というところで、なぜ右に移動するのかがわかりません。
xを2増やして、xを2でわったら0になると思うのです。
そうしたら移動ができないと思うのですが、なぜなのかわかりません。
xの値が上昇し続けてるということなのでしょうか?

Re: 1.9章 ゲームプログラムの骨格の完成 についてわからないことがあります。

Posted: 2013年1月17日(木) 01:50
by だんごさん
そうです。xの値は常に2ずつ上昇しています。
x=x+2というのは、現在のxに2を足してxに代入という意味です。
ややこしいですが、とにかく2ずつ増えます。「x+=2 」も同じ意味になりますので今後出てきても焦らないようにしてくださいね。
またwhile文で繰り返し呼び出されていますので、何回も実行、すなわち加算し続けることになります。

Re: 1.9章 ゲームプログラムの骨格の完成 についてわからないことがあります。

Posted: 2013年1月17日(木) 11:10
by softya(ソフト屋)
プログラミングの初心者で最初にハマりやすい罠ですね。
代入と式の違いが理解できないという事だと思います。
x = x + 2;はxが変化しますが、x+2; x/2;はxが変化しません。
最初のは計算結果を代入で置き換えるわけですが、後の方のは何処にも代入していないので変数値に変化は起きません。

ここで大事なのは処理の順番です。
x = x + 2;と有った場合に最初に処理されるのは「x + 2」でxの値に2が加算した値が計算されます。次に動作するのが「x =」で右辺の計算結果が左辺の変数に代入されます。