TECH PLAY

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

3,278円 (税込)

楽天

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

書籍情報

発売日:

著者/編集:ゲヱム道館

出版社:技術評論社

発行形態:単行本

書籍説明

内容紹介

現場で役立つC言語での開発を学べる。ゲーム画面はアスキーアート!すぐに作れてカスタマイズできる。Windows,Visual Studio Community対応。

目次

目次●小一時間でゲームをつくる──7つの定番ゲームのプログラミングを体験 本書の概要 収録タイトル C++コンソールアプリの開発環境をセットアップする C++プログラムの記述と、本書の読み進め方 レトロゲーム調の「美咲フォント」を利用する 第1章:王道RPGの戦闘シーンを作成する──コマンド選択とメッセージ表示によるターン制バトル # テキストベースで進行するRPGの戦闘シーン # プログラムの基本構造を作成する ## プログラムのベース部分を作成する ## コンソールの設定 # キャラクターのステータスを表示する ## プレイヤーのステータスを作成する ## プレイヤーのステータスを初期化する ## プレイヤーのステータスを表示する ## モンスターのステータスを作成する ## モンスターのステータスを初期化する ## モンスターを表示する # 戦闘の流れを作成する ## 戦闘開始のメッセージを表示する ## コマンドのデータを作成する ## 各キャラクターに攻撃をさせる # コマンド選択インターフェイスを作成する ## コマンドを選択する処理を呼び出す ## コマンドの一覧を表示する ## コマンドを選択するカーソルを追加する ### カーソルを描画する ### カーソルをキーボード入力で操作する ## 選択したコマンドを決定する # 戦うコマンドを実装する ## 攻撃対象を設定する ## 相手に与えるダメージを計算する ## 相手にダメージを与える ## 敵を倒したときの処理を実装する # 魔王降臨!──敵をラスボスに差し替える ## ラスボスのデータを追加する ## モンスターをラスボスに差し替える ## プレイヤーが死んだときのメッセージを表示する ## 勇者の能力を書き換えて強くする ## 逃げるコマンドを実装する # 回復呪文コマンドを実装する ## 呪文を発動させてHPを回復させる ## 呪文を唱えたらMPを消費する ## MPが足りなければ呪文を唱えられないようにする # 最終決戦──打倒魔王! 第2章:ライフゲームを作成する──単純なルールから生成される、複雑な生命シミュレーション # ライフゲーム──単純なルールから展開される、複雑な生命シミュレーション ## ライフゲームの誕生と発展 ## ライフゲームのルール # プログラムの基本構造を作成する ## プログラムのベース部分を作成する ## コンソールの設定 # フィールドを描画する ## フィールドのデータを作成する ## フィールドを描画する # 対象のセルがいくつの生きたセルと隣接しているかを数える ## マスごとに隣接するマスの状態をチェックする ## フィールドの範囲外の座標を無視する ## フィールドが無限にループしているものとする ## 隣接する生きたセルの数を数える # 世代を進行させる ## キーボード入力でシミュレーションを進行させる ### シミュレーション処理を呼び出す ### 各セルの次の世代での生死判定を行う ### シミュレーションの結果を画面に反映させる ## シミュレーションを一定時間ごとに自動進行させる # 任意のパターンをフィールドの中心に配置する ## フィールドを広くする ## パターンをフィールドに書き込む関数を作成する ## パターンをフィールドに書き込む関数をテストする # パターンの例 ## 固定物体 ## 振動子 ### 固定物体(周期2) ### パルサー(周期3) ### 八角形(周期5) ### 銀河(周期8) ### ペンタデカスロン(周期15) ## 長寿型 ### R-ペントミノ ### ダイ・ハード ### どんぐり ## 移動物体 ### グライダー ### 軽量級宇宙船 ### 中量級宇宙船 ### 重量級宇宙船 ## 繁殖型 ### グライダー銃 ### 小さいパターン ### シュシュポッポ列車 ### マックス ### 直線から神秘的な模様 ### 十字から神秘的な模様 第3章:リバーシを作成する──マス目単位のデータ処理とAIの実装 # 2人対戦ボードゲームの定番「リバーシ」 # プログラムの基本構造を作成する ## プログラムのベース部分を作成する ## コンソールの設定 # 盤面を描画する ## 盤面を初期化する ## 盤面を描画する ## 盤面の初期配置を設定する # キーボード入力でマスを選択できるようにする ## カーソルを描画する ## カーソルをキーボード入力で操作する ## カーソルの位置を初期化する # キーボード入力で石を置く ## 現在のターンを表示する ## カーソルの座標に石を置く ## 石を置いたらターンを切り替える # 石を置けるかどうかの判定を行う ## 石を置けなかった場合の処理を実装する ## すでに石が置かれているマスには置けないようにする ## 指定したマスに石を置けるかどうかを判定する # 挟んだ相手の石をひっくり返す ## 石をひっくり返す処理を追加する ## 石をひっくり返す # どこにも石を置けない場合はパスする ## 石を置ける場所があるかどうか判定する関数を作成する ## どこにも石を置けなければパスする # 勝敗の結果を表示する ## 結果の表示へ遷移する ## 勝敗を判定して結果を表示する ## ゲームが終了したら初期化する # ゲームモードの選択画面を作成する ## ゲームモードの選択処理に遷移する ## ゲームモードを一覧表示する ## ゲームモードをキーボード入力で選択する ### カーソルを表示する ### キーボード入力で選択を切り替える ## 選択を決定してモード選択画面を抜ける ## モードごとにAIの担当を設定する # 石を置くマスを自動で判断するAIを実装する ## AIの処理に遷移する ## 置けるマスのリストを作成する ## 置ける場所の中からランダムで置く ## AIのターンではカーソルを消す # AIどうしの対戦による観戦モードを追加する 第4章:落ち物パズルゲームを作成する──落ちてくるブロックをそろえて消すリアルタイムパズル # パズルゲームの定番、落ち物パズル # プログラムの基本構造を作成する ## プログラムのベース部分を作成する ## コンソールの設定 # フィールドを作成する ## ゲームを初期化する関数を追加する ## 画面を描画する関数を追加する ## フィールドのデータを作成する ## フィールドを描画する # 落下ブロックを追加する ## 落下ブロックの種類を定義する ## 落下ブロックの形状を定義する ## 落下ブロックのデータを作成する ## 落下ブロックを初期化する ## 落下ブロックを描画する # 落下ブロックをキーボードで操作する ## キーボード入力をする ## 落下ブロックを移動させる ## 落下ブロックを回転させる # ブロックをリアルタイムに落下させる ## ゲームをリアルタイムに進行させる ## ブロックを落下させる # 落下ブロックとフィールド上のブロックとの当たり判定を行う ## 落下ブロックとフィールドの当たり判定の関数を作成する ## 落下ブロックとフィールドの当たり判定を行う ### 落下ブロックをキーボード入力で操作するときの当たり判定 ### 落下ブロックが自動落下するときのフィールドとの当たり判定 # 落下ブロックをフィールドに積み上げる ## 新しい落下ブロックを発生させる ## ブロックが天井まで積み上がったらゲームオーバーにする # 横にそろった行のブロックを消す ## そろった行のブロックを消す関数を作成する ## ブロックが横にそろったかどうかを判定する ## そろった1行を削除する ## 消した行の上のブロックを下に1マスずらす 第5章:ドットイートゲームを作成する──リアルタイムアクションと4種のAI # ビデオゲーム黎明期に大ヒットした「ドットイート」 # プログラムの基本構造を作成する ## プログラムのベース部分を作成する ## コンソールの設定 # 迷路を作成する ## 迷路のデータを作成する ## 迷路を初期化する ## 迷路を描画する # プレイヤーを作成する ## プレイヤーのデータを作成する ## プレイヤーを描画する ## プレイヤーの初期座標を設定する ## プレイヤーを操作する ## プレイヤーと壁の当たり判定を行う ## プレイヤーを上下左右にループ移動させる ## プレイヤーがドットを食べるようにする # 気まぐれモンスターを作成する ## 気まぐれモンスターのデータを作成する ## 気まぐれモンスターを描画する ## 一定時間ごとに実行される、リアルタイム処理を実装する ## モンスターの種類によって、AIの処理を分岐させる ## 気まぐれモンスターの移動先を取得する ## 気まぐれモンスターを動かす ## 気まぐれモンスターが壁を通り抜けないようにする ## 気まぐれモンスターが後戻りしないようにする # 追いかけモンスターを作成する ## 追いかけモンスターのデータを追加する ## 追いかけモンスターを描画する ## 経路探索アルゴリズムの解説 ## 2点間の最短経路を探索する処理を作成する ### 探索開始地点から各マスへの最短距離を取得する ### 探索者のマスから、各マスへの最短経路を取得する ## 追いかけモンスターを動かす ## 追いかけモンスターが壁を通り抜けないようにする ## 追いかけモンスターが後戻りしないようにする # 先回りモンスターを作成する ## 先回りモンスターのデータを追加する ## 先回りモンスターを描画する ## 先回りモンスターの移動先を取得する ### プレイヤーの向きを取得する ### プレイヤーの3マス先の座標を取得する ## 先回りモンスターを動かす # 挟み撃ちモンスターを作成する ## 挟み撃ちモンスターのデータを追加する ## 挟み撃ちモンスターを描画する ## 挟み撃ちモンスターを動かす # ゲームオーバーの処理を作成する ## プレイヤーとモンスターが重なったかどうかを判定する処理を作成する ## ゲームオーバーになったらゲームをリセットする ## モンスターがプレイヤーに突っ込んできた場合もゲームオーバーにする ## ゲームオーバーのメッセージを画面中央に表示する # エンディングの処理を作成する ## ドットをすべて食べ尽くしたかどうかを判定する処理を作成する ## エンディング画面を作成する ## ゲームをクリアしたらエンディング画面を表示する 第6章:擬似3Dダンジョンゲームを作成する──アスキーアートによる擬似3D描画のギミック # ビデオゲーム黎明期のRPGのスタンダード、擬似3Dダンジョン ## コンピュータRPGの原点『ウィザードリィ』の誕生 ## 『ウィザードリィ』の国内への影響 ## 疑似3D視点のギミックに迫る # プログラムの基本構造を作成する ## プログラムのベース部分を作成する ## コンソールの設定 # デバッグ用のマップを描画する ## 迷路のデータを作成する ## 迷路のマップを描画する # 迷路をランダムで生成する ## 迷路を生成するアルゴリズム ## 迷路をランダムで作成する処理を呼び出す ## 迷路のすべてのマスを壁で塞ぐ ## 壁を掘る関数を作成する ## 壁を掘ってよいかどうかを判定する ## 最初の通路を生成する ## 掘るべき壁をすべて掘り尽くす # 迷路を移動できるようにする ## マップにプレイヤーを表示する ## キーボード入力でプレイヤーを操作する ### 方向転換する ### 進行方向に前進する # 迷路を擬似3D描画する ## 擬似3D描画用のデータを作成する ### 迷路のアスキーアートを作成する ### アスキーアート参照用のテーブルを作成する ### 視界内の相対座標のテーブルを作成する ## 迷路を擬似3D視点で描画する処理を呼び出す ## 描画用のアスキーアートを合成する ## 迷路を描画する # クエストを追加する ## プレイヤーがゴールに到達したかどうかを判定する ## エンディングのメッセージを表示する 第7章:戦国シミュレーションゲームを作成する──秀吉も仰天! 一夜で戦国シミュレーション # 「進軍」コマンドしかない、シンプルな戦国シミュレーションゲーム # 本章の戦国シミュレーションゲームの時代背景 ## 年代設定 ## 戦国大名列伝 ### 織田信長 ### 武田信玄 ### 上杉謙信 ### 徳川家康 ### 北条氏政 ### 足利義昭 ### 毛利元就 ### 伊達輝宗 ### 島津義久 ### 長宗我部元親 # プログラムの基本構造を作成する ## プログラムのベース部分を作成する ## コンソールの設定 # 地図を描画する ## 大名のデータを作成する ## 城のデータを作成する ## 年のデータを作成する ## 地図を描画する処理を呼び出す ### 地図を描画する # 各城の行動ループを作成する ## 行動順をランダムにする ## 各城にターンを回していく ### ターンの順を描画する ### 各ターンの共通メッセージを表示する # プレイヤーの大名を選択できるようにする ## プレイヤーの大名の選択フェイズに移行する ## プレイヤーが担当する大名を選択する # 進軍コマンドを作成する ## 城どうしの接続データを作成する ## 進軍先の城をキーボード入力する ## 進軍兵数をキーボード入力する # 攻城戦を作成する ## 攻城戦を発生させる ## 最初のメッセージを表示する ## 攻城戦の戦闘を実装する ## 攻城戦の戦闘を終了する ## 攻城戦の結果を表示し、戦後処理をする ### 攻撃側が勝ったときの処理を実装する ### 守備側が勝ったときの処理を実装する # 敵の大名のAIを実装する ## 隣接した敵の城のリストを作成する ## 一番弱い敵の城に攻め込む処理を作成する ## 味方の前線の城に兵を送るAIを実装する ### 敵と隣接する味方の城のリストを作成する ### 兵を送る先の城を決定する ### 送る兵数を決定する ### 兵を味方の城に送る # イベントを追加する ## 1年経過したときに兵数を変動させる ## プレイヤーの大名家が滅亡したときの処理を作成する ## ゲーム終了時に年表を表示する ## ゲームオーバーで年表を表示する ## ゲームが終了したらゲームをリセットする ## プレイヤーが天下統一したときの処理を作成する ## 歴史イベント「本能寺の変」を追加する ### 明智光秀 ### 豊臣秀吉 Appendix 1:戦国シミュレーションゲームを三国志に改造する──データの書き換えで、戦国を三国に! # 戦国シミュレーションゲームのデータを書き換えて、三国志のゲームに改造する ## そもそも『三国志』とは何か──四大奇書の一つ『三国志演義』 ## 三国志武将列伝 ## このAppendixの三国志のシナリオ # ゲームデータを書き換える ## コンソールの設定 ## 君主のデータを書き換える ## 州のデータを書き換える ## サンプルの地図を描画する ## 文字化けを修正する ## 正式な地図を描画する ## 州の接続情報を書き換える # 戦国時代固有の設定を三国志向けに変更する ## 兵数の単位を変更する ## メッセージを修正する Appendix 2:王道RPG 完全版──戦闘シーンにフィールドシーンを追加して、完全なRPGに仕上げよう! # 王道RPGの世界を完全再現したい!──第1章の戦闘シーンを拡張して、完全なRPGにしよう # プログラムの基本構造を作成する ## 第1章のプログラムを拡張する ## コンソールの設定 # フィールドを追加する ## フィールドのデータを作成する ## フィールドを描画する # マップ上にプレイヤーを追加する ## マップ上にプレイヤーを描画する ## プレイヤーをキーボード入力で操作する ## プレイヤーが侵入不可のマスに移動できないようにする ## プレイヤーの移動に合わせて画面をスクロールする # 王様の城を実装する ## 王様の城のデータを追加する ## プレイヤーの初期位置を設定する ## 王様の城を描画する ## 王様の城からフィールドに出る ## フィールドから王様の城に入る ## 人物との会話イベントを実装する ### 王様との会話イベントを実装する ### 姫との会話イベントを実装する # 魔王の城を実装する ## 魔王の城のデータを追加する ## 魔王の城に入れるようにする ## 魔王の城を描画する ## 魔王の城からフィールドに出る ## 魔王との会話イベントを実装する # 戦闘を発生させる ## フィールドで雑魚モンスターと遭遇する ## 姫にステータスを回復してもらう ## 魔王との戦闘を発生させる ## プレイヤーが死んだら王様のところに戻される # エンディングを実装する 索引 著者紹介

著者情報

ゲヱム道館

類似書籍