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

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

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

#1

投稿記事 by MSC » 13年前

コード:

 
#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の値が上昇し続けてるということなのでしょうか?

だんごさん
記事: 273
登録日時: 14年前

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

#2

投稿記事 by だんごさん » 13年前

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#3

投稿記事 by softya(ソフト屋) » 13年前

プログラミングの初心者で最初にハマりやすい罠ですね。
代入と式の違いが理解できないという事だと思います。
x = x + 2;はxが変化しますが、x+2; x/2;はxが変化しません。
最初のは計算結果を代入で置き換えるわけですが、後の方のは何処にも代入していないので変数値に変化は起きません。

ここで大事なのは処理の順番です。
x = x + 2;と有った場合に最初に処理されるのは「x + 2」でxの値に2が加算した値が計算されます。次に動作するのが「x =」で右辺の計算結果が左辺の変数に代入されます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

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