小一時間でゲームをつくる ──7つの定番ゲームのプログラミングを体験

サポートページ

この記事を読むのに必要な時間:およそ 0.5 分

ダウンロード

本書のサンプルファイルをダウンロードできます。

データは,圧縮ファイル形式でダウンロードできます。
圧縮ファイルをダウンロードしていただき,適宜展開してご利用ください。

(2022年5月24日最終更新)

ダウンロード
サンプルファイル

お詫びと訂正(正誤表)

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2023年10月2日最終更新)

第1~2刷をお持ちの方

P.86 上から3番目のコードの次に追加

原点のマスが盤面の端だった場合、隣接するマスが盤面の範囲外になってしまうことがあります。そこで、各方向のマスをチェックする前に、そのマスが盤面の範囲内であるかどうかをチェックし、範囲外であればその方向のチェックをスキップします。

// [6-2-5]すべての方向を反復する
for (int i = 0; i < DIRECTION_MAX; i++)
{
    ...

    // [6-2-7.1]チェックするマスが盤面の範囲内でないか判定する
    if ((currentPosition.x < 0)
        || (currentPosition.x >= BOARD_WIDTH)
        || (currentPosition.y < 0)
        || (currentPosition.y >= BOARD_HEIGHT))
    {
        // [6-2-7.2]対象の方向のチェックをスキップする
        continue;
    }
}

(以下2022年5月24日更新)

第1刷をお持ちの方(第2刷で修正済み)

P.129 本文の上から1行目

実行して操作すると、画面がずれてしまいます。
実行して操作すると、画面の下のほうが一部乱れてしまいます。

P.129 「落下ブロックを回転させる」2段落目の下のコード

[6-8-9]キーボード入力があったかどうか判定する
[6-8-11]入力されたキーによって分岐する

P.130 本文1段落目の下のコード

[6-8-9]キーボード入力があったかどうか判定する
[6-8-11]入力されたキーによって分岐する

P.136 「落下ブロックとフィールドの当たり判定の関数を作成する」1段落目の下のコードページ


// [6]関数を宣言する場所
...

// [6-1]落下ブロックとフィールドの当たり判定を行う関数を宣言する
bool BlockIntersectField()
{
    return false;// [6-1-8]当たらなかったという結果を返す
}
		

// [6]関数を宣言する場所

// [6-1]落下ブロックとフィールドの当たり判定を行う関数を宣言する
bool BlockIntersectField()
{
    return false;// [6-1-8]当たらなかったという結果を返す
}

...
		

「...」の位置が違います。

P.138 「落下ブロックをキーボード入力で操作するときの当たり判定」1段落目の下のコード

DrawScreen();// [6-7-13]画面を描画する関数を呼び出す
...

P.145 「そろった1行を削除する」2段落目の下のコード

// [6-2-8]対象の列を反復する
// [6-2-8]すべての列を反復する

(以下2022年5月17日更新)

P.69 上から2番目のコード

// [6-7-1]盤面のすべての列を反復する
...
    // [6-7-2]盤面のすべての行を反復する
// [6-7-1]盤面のすべてのを反復する
...
    // [6-7-2]盤面のすべてのを反復する