論理シフトと算術シフト(数式的な説明)

◆シフトとは?

ただし、「符号を持つ整数」を扱う場合は注意が必要。


◆論理シフト(Logical Shift)

例:

8ビットで -4 を表す場合(2の補数表現):
11111100 (-4)

右に1ビット論理シフト:
01111110 = +126  ← 本当は -2 になるべきだが、全然違う値になる!

◆算術シフト(Arithmetic Shift)

例:

8ビットで -4 を表す場合(2の補数表現):
11111100 (-4)

右に1ビット算術シフト:
11111110 = -2   ← 正しく ÷2 になった!

◆数式的なまとめ


◆最重要ポイント


ゲームループとシーン管理

◆ゲームループとは?

ゲームは止まらずに動き続けるプログラムです。 毎フレームごとに以下を繰り返します。

while(ゲームが終わるまで){
    Init();    // 準備
    Update();  // 動きや入力の処理
    Draw();    // 画面に描く
}

◆シーン(状態)とは?

ゲームには「場面」があります。

これらを state(状態) として変数に持っておきます。

state = { title, play, gameover }

◆切り替えのイメージ

[タイトル画面] → ボタン押す → [プレイ画面]
[プレイ画面] → ミスした → [ゲームオーバー画面]
[ゲームオーバー画面] → ボタン押す → [タイトル画面]

◆コードのイメージ

enum State { TITLE, PLAY, GAMEOVER };
State state = TITLE;
 
while (true) {
    switch (state) {
        case TITLE:
            UpdateTitle();
            DrawTitle();
            if (Startボタン押した) state = PLAY;
            break;
 
        case PLAY:
            UpdatePlay();
            DrawPlay();
            if (ミスした) state = GAMEOVER;
            break;
 
        case GAMEOVER:
            UpdateGameOver();
            DrawGameOver();
            if (ボタン押した) state = TITLE;
            break;
    }
}

◆まとめ

を分けている。

これで「タイトル → プレイ → ゲームオーバー → タイトル」の流れを作れる。