ただし、「符号を持つ整数」を扱う場合は注意が必要。
例:
8ビットで -4 を表す場合(2の補数表現): 11111100 (-4) 右に1ビット論理シフト: 01111110 = +126 ← 本当は -2 になるべきだが、全然違う値になる!
例:
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; } }
を分けている。
これで「タイトル → プレイ → ゲームオーバー → タイトル」の流れを作れる。