2014.01.29

『入門ゲームプログラミング』確認問題解答&練習問題解答例

入門ゲームプログラミング

『入門ゲームプログラミング』の確認問題解答と練習問題解答例です。


【第1章】
1.横スクロールと縦スクロールのゲーム、アニメーションによるアドベンチャーゲーム。
2.「アブリケーションブログラミングインターフェイス」の略で、Windowsなどのオベレーティングシステムに下層レベルでアクセス するためのもの。
3.Windowsの事を奥深く理解していなくても性能を引き出せるプログラムが書ける。
4.XInput
5.クラスはとある物体の性質を定義する為の宣言で、オブジェクトはそのクラスが変数として実体化したもの。
6.同一クラスのメンバ関数などからのみアクセス可能。
7.「->」演算子
8.try/catch
9.ファイル間の差異を比較し、必要に応じて統合できるツール。
10.ハードディスクの故障対策と、不具合を起こした変更の特定をするため。
【第2章】
1.WinMain関数。
2.ウィンドウに送信されたメッセージを処理する関数を指定する為のもの。
3.WS_OVERLAPPED
4.WS_EX_TOPMOST | WS_VISIBLE | WS_POPUP
5.false
6.メッセージを送信する事によってプログラムとやり取りを行う。
7.WM_QUITメッセージが受信されることで終了する。
8.Windowsによって処理される。
9.ユーザーが押したキーボードの文字を読み取るため。
10.ShiftキーやCtrlキーといった特殊なキーを読み取る為の仮想的なキー番号。
【第3章】
1.d3d9.h
2.d3d9.lib
3.Direct3DCreate9
4.D3DADAPTER_DEFAULT
5.グラフィック図形を、表示のためにビクセル(ドット)に変換するブロセスのこと。
6.三次元空間内の一点であり、位置、色、テクスチャなどの属性を指定する為のもの。
7.DirectXメソッドの戻りステータスが「成功」であるかどうかを判断する為に使う。
8.D3DCOLOR_XRGB(0,0,255)
9.画面の表示の途切れやゆがみを防止するため。
10.確保したメモリが解放されないまま残ってしまうこと。
11.ヘッダファイル。
12.showBackbuffer関数。
【第4章】
1.Gameクラス。
2.連続して画面に表示する際に正しい位置に表示するため。
3.DirectXウィンドウのコンテンツが消え、環境が前の状態に戻った後も、コンテンツは元に戻らない。
4.DirectXシーンの開始。(BeginScene関数を呼び出す。)
5.メッセージルーブから、ゲームのrun関数を繰り返し呼び出す。
6.省電力のため。
7.800dpi以上。
8.マウス入力がキャブチャウィンドウに送られる。
9.左:VK_LEFT 右:VK_RIGHT 上:VK_UP 下:VK_DOWN
10.getMouseX関数はマウスポインタの現在のX座標を示し、getMouseRawX
関数は前の位置に対する相対的な位置を表すX座標を示す。
11.有線コントローラー。
12.4つ。
13.低周波の振動。
14.getGamepadButtons(1)を呼び出しGAMEPAD_BとのANDでテストする方法と、getGamepadB(1)の戻り値でテストする方法。
15.gamePadVibrateLeft(1, 32768, 2.0)
【第5章】
1.3D空間において定義される一点。
2.図形上に描画される画像。
3.DirectXシーンの開始。
4.シーン
5.2の累乗数
6.(32, 32)
7.バイリニアフィルタリングが掛かる時に広めにテクスチャを参照してしまうので。
8.loadTexture関数。
9.スブライト全体の色を変更するため。
10.グラフィックスデバイスが消失した時にテクスチャデータを解放、再読み込みする。
11.ピクセル単位のサイズ。
12.画像に色を付けて描画する。
13.image.h
14.テクスチャから描画する部分を選択する事で、反転描画などを行う狙い。
15.現在のフレームが終了フレームより大きい時に完了していると判断。
16.Imageオブジェクトのloopをfalseにする。
17.アニメーションのフレーム間の間隔を指定するため。
18.setCurrentFrame関数。
19.呼び出した順に描画するので、惑星の上に星雲が重なった絵になる。
【第6章】
1.xとy。
2.1つのベクトルの後ろにもう1つのベクトルをつなげたときに到達する終点の座標となる。
3.ベクトルの長さが変わる。
4.ベクトルを自身の長さで除算する。
5.単位ベクトル方向の成分を表すスカラー値となる。
6.Vector2Dot関数。
7.Vector2Normalize関数。
8.それぞれの半径の合計以下。
9.境界ボックスをエンティティと一緒に回転させるかどうか。
10.衝突判定の精度が高くなる。
11.エンティティが衝突している場合。
12.ボックスが衝突していない事を示す。
13.円の中心点が衝突ボックスの辺の投影の外側にある場合。
14.円とボックスの最も近い頂点との衝突を判定する。
15.他のエンティティと衝突する機能など。
16.collisionTypeプロパティ。
17.円、ボックス、回転ボックス。
18.collidesWith関数。
19.フレーム間の時間が長くなって移動距離が大きくなる時。
20.衝突しているエンティティを必ず離れる方向に移動させる。
【第7章】
1.正しい。
2.正しい。
3.誤り。
4.誤り。
5.WAVファイル。
6.波形内の変更する部分を選択し、[エフェクト]メニューの[増幅…]を選択する。
7.DoWork関数。
8.ゲームコードから特定のサウンドを参照するときの手掛かりとする。
9.宇宙船がウィンドウの端で跳ね返るときに、上下左右のどの端かによって異なるサウンドが再生されるようにした。
10.コードを記述しなくても、サウンドを再生するときに複数の同時再生を避けることができる機能。
【第8章】
1.事前にレンダーしたテキスト、スプライトテキスト、DirectXテキスト。
2.スプライトテキスト。
3.表示速度が高速、拡大縮小などの変形が出来る。
4.setXY関数。
5.print(str, 10, 30);
6.print(str, 40, 50, CENTER_MIDDLE);
7.setFontColor(SETCOLOR_ ARGB(255, 0, 0, 255));
8.指定した文字列を現在のフォントの高さを使って表示するのに必要な幅と高さを返す。
9.文字を横にずらして2回描画する。
10.テクスチャ画像を必要としない、サイズを大きくしてもエッジがギザギザにならない。
【第9章】
1.大きさが画面より大きく、バターンがはっきりとしていない。
2.左。
3.4つ。
4.先に描画したアイテムが、後から描画したアイテムによって覆い隠されること。
5.遠近法を表現する為なので、近い物体の方が速い。
6.影は高度が変化しても垂直位置が変わらないが、反射は反対方向に動く。
7.飛行する物体とその下の地表との関係を視覚的に表す指標となる。
8.ブレイヤーにいつでもメッセージを表示できるようになる。
9.print(“Hello World”);
10.液晶の数値表示の光る部分数。
11.set関数。
12.180度。
13.四角形の単純なビットマッブを剣の画像に置き換える。
14.360度、270度、180度。
15.0から100。
16.円盤がゼロの位置を指定するため。
17.0.1
18.getSwitchOn関数。
19.initialize関数の引数typeをfalseにして呼び出す。
20.0から100。
【第10章】
1.限られたテクスチャでも巨大なマッブを作ることができる。
2.垂直投影。
3.タイルを再利用する事によって必要なテクスチャが抑えられるため。
4.遠くの物体が近くの物体に遮蔽されることがある。
5.描画順序が正しくないと前後関係がおかしく見えるので。
6.Imageクラスの機能を使って描画時に色フィルタを適用している。
7.15種類。
8.木などのオブジェクト。
9.そのタイルの最も高い辺の高さ。
10.高度の構造物を配置することが出来る。
【第11章】
1.作品の履歴が確実に記録される。
2.1週間以下。
3.ブロジェクトをスケジュールどおりに進めること。
4.スケジュールの策定や管理を行うため。
5.プロジェクトの進行が遅れているのが分かるようになる。
6.作業負担の公平化と追加人員が必要かどうかの判断。
7.ガントチャートのタスクは人員配置表のタスクとして引用できる。
8.チームの各メンバーがブロジェクト全体を明確に理解できるようにすること。
9.テクスチャが正しいサイズで作成されていること。
10.バグの早期発見、修正のため。
11.ソースコード内のコメント形式。
12.Entityクラス。
13.spacewar.cppファイル。
14.ship1.damage(SHIP);
15.ゲームの実行ファイルと同じフォルダの「SpacePiratesSave.txt」というファイルを探す。
【第12章】
1.データをある場所から別の場所へと送信するために、情報とハードウェアをどのように構成すればよいのかを定義する一連のルールのこと。
2.TCPは信頼性は高いがリアルタイム性が低く、UDPは信頼性よりタイムリー性が求められる局面で使われる。
3.32ビット。
4.1024〜65535。
5.ネットワークへのインターフェイスのこと。
6.socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
7.ブロッキングソケットは操作が完了するまで関数呼び出しが戻らず、非ブロッキングソケットはデータが送受信されない場合でも必ず即時に戻る。
8.あらゆるアドレス。
9.サーバーソケット。
10.createClient関数。
11.ホスト名からIPアドレスを取得する。
12.「localhost」。
13.送信されたデータのバイト数。
14.sendto関数。
15.受信したデータのバイト数。
 16.ソケットを構成して、ソケットが着信接続を待機する。
17.listen関数を呼び出しておく。
18.送信アドレス。
19.WSACleanup関数。
20.getError((0x2726 << 16) | NET_INVALID_SOCKET);

練習問題 解答例


下記リンクよりダウンロードしてください
『入門ゲームプログラミング』練習問題解答例 (300KB)

確認問題 解答

【第1章】

1.横スクロールと縦スクロールのゲーム、アニメーションによるアドベンチャーゲーム。
2.「アブリケーションブログラミングインターフェイス」の略で、Windowsなどのオベレーティングシステムに下層レベルでアクセス するためのもの。
3.Windowsの事を奥深く理解していなくても性能を引き出せるプログラムが書ける。
4.XInput
5.クラスはとある物体の性質を定義する為の宣言で、オブジェクトはそのクラスが変数として実体化したもの。
6.同一クラスのメンバ関数などからのみアクセス可能。
7.「->」演算子
8.try/catch
9.ファイル間の差異を比較し、必要に応じて統合できるツール。
10.ハードディスクの故障対策と、不具合を起こした変更の特定をするため。

【第2章】
1.WinMain関数。
2.ウィンドウに送信されたメッセージを処理する関数を指定する為のもの。
3.WS_OVERLAPPED
4.WS_EX_TOPMOST | WS_VISIBLE | WS_POPUP
5.false
6.メッセージを送信する事によってプログラムとやり取りを行う。
7.WM_QUITメッセージが受信されることで終了する。
8.Windowsによって処理される。
9.ユーザーが押したキーボードの文字を読み取るため。
10.ShiftキーやCtrlキーといった特殊なキーを読み取る為の仮想的なキー番号。

【第3章】
1.d3d9.h
2.d3d9.lib
3.Direct3DCreate9
4.D3DADAPTER_DEFAULT
5.グラフィック図形を、表示のためにビクセル(ドット)に変換するブロセスのこと。
6.三次元空間内の一点であり、位置、色、テクスチャなどの属性を指定する為のもの。
7.DirectXメソッドの戻りステータスが「成功」であるかどうかを判断する為に使う。
8.D3DCOLOR_XRGB(0,0,255)
9.画面の表示の途切れやゆがみを防止するため。
10.確保したメモリが解放されないまま残ってしまうこと。
11.ヘッダファイル。
12.showBackbuffer関数。

【第4章】
1.Gameクラス。
2.連続して画面に表示する際に正しい位置に表示するため。
3.DirectXウィンドウのコンテンツが消え、環境が前の状態に戻った後も、コンテンツは元に戻らない。
4.DirectXシーンの開始。(BeginScene関数を呼び出す。)
5.メッセージルーブから、ゲームのrun関数を繰り返し呼び出す。
6.省電力のため。
7.800dpi以上。
8.マウス入力がキャブチャウィンドウに送られる。
9.左:VK_LEFT 右:VK_RIGHT 上:VK_UP 下:VK_DOWN
10.getMouseX関数はマウスポインタの現在のX座標を示し、getMouseRawX関数は前の位置に対する相対的な位置を表すX座標を示す。
11.有線コントローラー。
12.4つ。
13.低周波の振動。
14.getGamepadButtons(1)を呼び出しGAMEPAD_BとのANDでテストする方法と、getGamepadB(1)の戻り値でテストする方法。
15.gamePadVibrateLeft(1, 32768, 2.0)

【第5章】
1.3D空間において定義される一点。
2.図形上に描画される画像。
3.DirectXシーンの開始。
4.シーン
5.2の累乗数
6.(32, 32)
7.バイリニアフィルタリングが掛かる時に広めにテクスチャを参照してしまうので。
8.loadTexture関数。
9.スブライト全体の色を変更するため。
10.グラフィックスデバイスが消失した時にテクスチャデータを解放、再読み込みする。
11.ピクセル単位のサイズ。
12.画像に色を付けて描画する。
13.image.h
14.テクスチャから描画する部分を選択する事で、反転描画などを行う狙い。
15.現在のフレームが終了フレームより大きい時に完了していると判断。
16.Imageオブジェクトのloopをfalseにする。
17.アニメーションのフレーム間の間隔を指定するため。
18.setCurrentFrame関数。
19.呼び出した順に描画するので、惑星の上に星雲が重なった絵になる。

【第6章】
1.xとy。
2.1つのベクトルの後ろにもう1つのベクトルをつなげたときに到達する終点の座標となる。
3.ベクトルの長さが変わる。
4.ベクトルを自身の長さで除算する。
5.単位ベクトル方向の成分を表すスカラー値となる。
6.Vector2Dot関数。
7.Vector2Normalize関数。
8.それぞれの半径の合計以下。
9.境界ボックスをエンティティと一緒に回転させるかどうか。
10.衝突判定の精度が高くなる。
11.エンティティが衝突している場合。
12.ボックスが衝突していない事を示す。
13.円の中心点が衝突ボックスの辺の投影の外側にある場合。
14.円とボックスの最も近い頂点との衝突を判定する。
15.他のエンティティと衝突する機能など。
16.collisionTypeプロパティ。
17.円、ボックス、回転ボックス。
18.collidesWith関数。
19.フレーム間の時間が長くなって移動距離が大きくなる時。
20.衝突しているエンティティを必ず離れる方向に移動させる。

【第7章】
1.正しい。
2.正しい。
3.誤り。
4.誤り。
5.WAVファイル。
6.波形内の変更する部分を選択し、[エフェクト]メニューの[増幅…]を選択する。
7.DoWork関数。
8.ゲームコードから特定のサウンドを参照するときの手掛かりとする。
9.宇宙船がウィンドウの端で跳ね返るときに、上下左右のどの端かによって異なるサウンドが再生されるようにした。
10.コードを記述しなくても、サウンドを再生するときに複数の同時再生を避けることができる機能。

【第8章】
1.事前にレンダーしたテキスト、スプライトテキスト、DirectXテキスト。
2.スプライトテキスト。
3.表示速度が高速、拡大縮小などの変形が出来る。
4.setXY関数。
5.print(str, 10, 30);
6.print(str, 40, 50, CENTER_MIDDLE);
7.setFontColor(SETCOLOR_ ARGB(255, 0, 0, 255));
8.指定した文字列を現在のフォントの高さを使って表示するのに必要な幅と高さを返す。
9.文字を横にずらして2回描画する。
10.テクスチャ画像を必要としない、サイズを大きくしてもエッジがギザギザにならない。

【第9章】
1.大きさが画面より大きく、バターンがはっきりとしていない。
2.左。
3.4つ。
4.先に描画したアイテムが、後から描画したアイテムによって覆い隠されること。
5.遠近法を表現する為なので、近い物体の方が速い。
6.影は高度が変化しても垂直位置が変わらないが、反射は反対方向に動く。
7.飛行する物体とその下の地表との関係を視覚的に表す指標となる。
8.ブレイヤーにいつでもメッセージを表示できるようになる。
9.print(“Hello World”);
10.液晶の数値表示の光る部分数。
11.set関数。
12.180度。
13.四角形の単純なビットマッブを剣の画像に置き換える。
14.360度、270度、180度。
15.0から100。
16.円盤がゼロの位置を指定するため。
17.0.1
18.getSwitchOn関数。
19.initialize関数の引数typeをfalseにして呼び出す。
20.0から100。

【第10章】
1.限られたテクスチャでも巨大なマッブを作ることができる。
2.垂直投影。
3.タイルを再利用する事によって必要なテクスチャが抑えられるため。
4.遠くの物体が近くの物体に遮蔽されることがある。
5.描画順序が正しくないと前後関係がおかしく見えるので。
6.Imageクラスの機能を使って描画時に色フィルタを適用している。
7.15種類。
8.木などのオブジェクト。
9.そのタイルの最も高い辺の高さ。
10.高度の構造物を配置することが出来る。

【第11章】
1.作品の履歴が確実に記録される。
2.1週間以下。
3.ブロジェクトをスケジュールどおりに進めること。
4.スケジュールの策定や管理を行うため。
5.プロジェクトの進行が遅れているのが分かるようになる。
6.作業負担の公平化と追加人員が必要かどうかの判断。
7.ガントチャートのタスクは人員配置表のタスクとして引用できる。
8.チームの各メンバーがブロジェクト全体を明確に理解できるようにすること。
9.テクスチャが正しいサイズで作成されていること。
10.バグの早期発見、修正のため。
11.ソースコード内のコメント形式。
12.Entityクラス。
13.spacewar.cppファイル。
14.ship1.damage(SHIP);
15.ゲームの実行ファイルと同じフォルダの「SpacePiratesSave.txt」というファイルを探す。

【第12章】
1.データをある場所から別の場所へと送信するために、情報とハードウェアをどのように構成すればよいのかを定義する一連のルールのこと。
2.TCPは信頼性は高いがリアルタイム性が低く、UDPは信頼性よりタイムリー性が求められる局面で使われる。
3.32ビット。
4.1024〜65535。
5.ネットワークへのインターフェイスのこと。
6.socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
7.ブロッキングソケットは操作が完了するまで関数呼び出しが戻らず、非ブロッキングソケットはデータが送受信されない場合でも必ず即時に戻る。
8.あらゆるアドレス。
9.サーバーソケット。
10.createClient関数。
11.ホスト名からIPアドレスを取得する。
12.「localhost」。
13.送信されたデータのバイト数。
14.sendto関数。
15.受信したデータのバイト数。
 16.ソケットを構成して、ソケットが着信接続を待機する。
17.listen関数を呼び出しておく。
18.送信アドレス。
19.WSACleanup関数。
20.getError((0x2726 << 16) | NET_INVALID_SOCKET);