第7章 キー操作を制御する

キーが押されているかどうかの判断は、ゲームループが回るたびに行われている。このままではゲームを作る過程において、さまざまな弊害が出てくる。

1.スタート画面でのメニュー選択時
たとえばスタート画面で「はじめから」「途中から」「オプション」の3つを選ぶプログラムを考える。カーソルを表示し、上下キーでカーソルを移動させる場合、カーソルが高速に動いてしまう。
2.シューティングなどでのゲーム開始時
たとえばスタート画面からスペースキーを押してゲームを開始する。自機がスペースキーにより弾を発射する場合、ゲーム開始時に弾を発射してしまう。
3.連続して弾を発射する場合
スペースキーを押している間、弾を連続して発射する場合、ゲームループが回るたびに弾を発射してしまう。

この章では、キー入力によるさまざまな問題を解決する基本的な手段を学ぶ。

7-1 前準備

キー入力によるさまざまな動作を試すため、第7章用プログラムを用意した。ダウンロードし、以下の手順でプロジェクトを作成する。

  1. 解凍して現れたファイルを全て任意のドライブのDDraw07フォルダに格納する。
  2. Visual C++を開き、新規作成でWin32Applicationを作成する。プロジェクト名を「DDraw07」に、フォルダは先ほど作成したフォルダを指定する。
  3. 「プロジェクト」→「プロジェクトへ追加」→「ファイル」を選択し、DDraw07フォルダ内の全てのファイルを追加する。
    (今回はリソースも作成済みなので、リソースの作成は必要ない)
  4. プロジェクトの設定を変更し、3つのライブラリ「ddraw.lib」「dxguid.lib」「winmm.lib」をリンクする。
  5. ビルドを行い、プログラムが正常に動くことを確認する。

6章のプログラムとの違い

  1. スタート画面にメニューと、メニューを選択するカーソルを表示。ただしカーソルはまだ動かない。
  2. スタート処理を機能別に関数化した。
  3. ゲーム画面では、スペースキーを押すと自キャラから弾が発射される。弾は画面上に一発しか撃てない。ただしゲーム開始時、スペースキーを検出してしまうため、必ず弾が発射されてしまう。
  4. キャラクタデータに「LIFE」を追加。弾はLIFEが0のとき発射できる。
  5. 移動処理のウェイトをはずした。
  6. スタート画像、キャラクタ画像データを微妙に変更。

[ TOP ]