Skip to content
第02回 変数の利用と画像の表示

1 / 3 変数の宣言と座標の管理 ​

このステップの目的

図形や画像の表示位置を変数に記憶し、名前を付けて扱います。初期値や代入する値を変え、表示位置の変化を確認します。

変数に値を記憶する ​

第01回では、四角形を描くDrawBoxの引数に160や120などの数値を直接書きました。ゲームではキーボードでキャラクターを動かしたり、敵が自動で移動したりします。そのため、位置を表す数値も毎フレーム変わります。

数値を一時的にメモリへ記憶し、名前を付けて何度でも読み書きするための仕組みが変数です。英語ではvariableと呼びます。

変数は、名前の付いた箱によく例えられます。箱に入れるのが値で、箱に付けるラベルが変数名です。

text
┌───────────┐
│    160    │ ← 箱の中に入っているデータ(値)
└─────┬─────┘
   名前: x    ← 箱に付けたラベル(変数名)

プログラムでxと書くと、xに記憶した数値を取り出せます。上の例なら160を取り出し、計算や描画に使えます。

変数の宣言と初期化 ​

四角形を描くコードのwhileループの直前に、次の2行を追加してください。

cpp
    SetBackgroundColor(245, 248, 252);

    int x = 160;
    int y = 120;

int x = 160;は、整数を扱う変数xを用意し、最初の値を160にする文です。

cpp
int x = 160;
  • int:データ型
  • x:変数名
  • = 160:初期値の指定
  • ;:文の終わり

データ型と扱う値 ​

先頭のintは「イント」と読みます。変数で扱うデータの種類を指定するデータ型です。データ型は英語でdata typeと呼びます。

intは整数を扱う型で、integerが整数を意味します。今回の座標には160や120などの整数を使います。

変数の宣言 ​

型と変数名を並べてint x;と書くことを、変数の宣言と呼びます。英語ではdeclarationです。

この宣言で、メモリ上に整数を記憶する変数xを用意します。C++では、変数を宣言してから使う必要があります。宣言していない変数名を使うと、「識別子が見つからない」というコンパイルエラーになります。

変数の初期化 ​

変数を用意するときに最初の値を入れることを、初期化と呼びます。英語ではinitializationです。このとき入れる値が初期値になります。

= 160は初期値を指定する部分です。今回のローカル変数は、宣言するときに初期化してから使います。

2行目のint y = 120;も同じです。整数型の変数yを宣言し、初期値を120にしています。

大文字と小文字の厳密な区別

C++ではアルファベットの大文字と小文字を区別します。例えばxとXは別の名前です。小文字のxで宣言した変数は、その後も小文字のxで使ってください。

相対座標によるサイズと位置の管理 ​

左上座標を基準にした描画 ​

用意した変数xとyで四角形を描きます。whileループ内のDrawBoxを次のように書き換えてください。

cpp
        DrawBox(x, y, x + 48, y + 48, GetColor(38, 113, 191), TRUE);

第1引数と第2引数には、左上の座標xとyを渡します。第3引数と第4引数は、右下の座標を求める式です。x + 48とy + 48で、幅と高さを48ピクセルにします。

  • 左上座標:(x, y) → (160, 120)
  • 右下座標:(x + 48, y + 48) → (160 + 48, 120 + 48) すなわち (208, 168)

右下の座標を左上の座標に48を足して求めるので、四角形の大きさは変わりません。xとyだけで位置を変えられます。

算術演算子(+)と値の評価 ​

足し算に使う+は、四則演算を行う算術演算子の一つです。算術演算子は英語でarithmetic operatorと呼びます。

計算しても変数の値は変わらない

引数のx + 48では、xの値160に48を足した結果の208を関数へ渡します。計算するだけでは、xの値は変わりません。xには160が残ります。

初期値の変更実験 ​

変数の宣言int x = 160;の初期値を300に変えて実行してください。

左上のx座標は300、右下は300 + 48 = 348になります。横幅は48ピクセルのまま、四角形が右へ移動した結果です。座標を何箇所も書き換える必要はなく、初期値を1箇所変えるだけで位置を調整できます。

確認を終えたら、初期値を元の160に戻してください。

代入による座標の更新 ​

変数に新しい値を書き込む操作が代入です。英語ではassignmentと呼びます。箱の例では、中身を新しい値に入れ替える操作に当たります。

宣言コードの直後に、次の1行を一時的に追加してみましょう。

cpp
    int x = 160;
    int y = 120;
    x = x + 40; // 代入の実験

右辺の計算と左辺の箱への上書き ​

C++の=は、右辺を計算した結果を左辺の変数へ書き込む代入演算子です。英語ではassignment operatorと呼びます。数学の「左右が等しい」という意味ではありません。

cpp
x = x + 40;
  • x + 40:① 160 + 40 → 200
  • x:② x に200を代入

この文を実行すると、xの値は160から200に変わります。

四角形を描く位置が40ピクセル右へ移ることを確認してください。=は値を更新する記号です。第01回の条件に使った==は、値を比べる記号でした。

動作を確認したら、追加したx = x + 40;の1行を削除して元に戻してください。

チェックリスト
  • 変数がデータを記憶する名前付きの箱であることを説明できる
  • 型(int)、宣言、初期化、代入のそれぞれの意味を区別できる
  • 横幅を48のまま表示位置を変える行を選び、変更前後の座標を説明できる