SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

C++Builder XE2+FireMonkeyで昔のラケットゲームを再構築してみる(3)

15年前の入門書の課題を、最新の開発環境を使って再挑戦

  • このエントリーをはてなブックマークに追加

 15年前のC++Builder入門書で紹介されていたクラシックなラケットゲームを、最新のC++Builder XE2とFireMonkeyフレームワークを使って再構築する連載第3弾。最新の開発環境を使うことで、改めてC++Builderのビジュアル開発の仕方を理解するとともに、旧バージョンとの違いを明らかにしていきます。

  • このエントリーをはてなブックマークに追加

いよいよコーディングです

 この連載では、過去2回(第1回第2回)にわたって画面設計を行ってきました。C++Builderのビジュアル設計環境を利用することで、1行もコードを書かずにゲームの外観を完成させることができました。

 これから2回に分けて、ゲームのためのコードを記述していきましょう。コードの記述も、コンポーネントのイベントに対応するイベントハンドラとして定義できるので効率的です。イベントの感知や、イベントに対応させるコードの呼び出しなどは、フレームワークがやってくれるので、本当に必要な機能だけをコーディングするだけでいいのです。

ラケットを動かす

OnKeyDownイベントでキーボードの押下を検出する

 では、はじめにゲームのための基本的なコードを記述していきましょう。最初に行うのはラケットを動かすコードの作成です。ラケットは左右の矢印キーで移動させます。

 フォームのOnKeyDownイベントは、キーボードを押すと発生します。このフォームのOnKeyDownイベントが発生するのは、フォームにフォーカスがある時だけです。

 OnKeyDownと同じようなイベントとしてOnKeyPressがありますが、OnKeyPressは単一の文字キーの入力に応答します。矢印キーのような特殊なキーやシフト状態を検出したいときは、OnKeyDownを使用します。

 OnKeyDownイベントハンドラの引数には、WORD型のKeyがあります。Keyは仮想コードを表します。矢印キーに対しては、以下のように定義されています。

仮想キーの例
仮想キー 説明
VK_LEFT 0x26
VK_UP 0x27
VK_RIGHT 0x28
VK_DOWN 0x29

ラケットを動かすコード

 ここでは左右の矢印キーを使用するので、VK_LEFTとVK_RIGHTを用います。次が、OnKeyDownイベントハンドラのコードです。

void __fastcall TGameForm::FormKeyDown(TObject *Sender, 
    WORD &Key, System::WideChar &KeyChar, TShiftState Shift)
{
    const  delta = 8;  //ラケットの移動距離

    switch(Key) {
        case  VK_LEFT:  // 0以上なら左に移動
            if (Racket->Position->X - delta >= 0)
               Racket->Position->X = Racket->Position->X - delta;
            break;
        case  VK_RIGHT:  // コート幅以内なら右に移動
            if (Racket->Position->X + Racket->Width + delta <= Court->Width)
               Racket->Position->X = Racket->Position->X + delta;
            break;
}

 ラケットを移動させるコードに注目してください。ラケットの位置を表すプロパティは、FireMonkeyではPositionです。VCLでは、Left、Topで位置を指定することができましたが、FireMonkeyの場合、PositionのサブプロパティX、Yを用いるので、Racket->Position->X のような記述になります。

 このコードは、構造ペイン上でGameFormを選択し、オブジェクトインスペクタで「イベント」タブをクリック。OnKeyDownイベントの値列をダブルクリックして表示されたメソッドに対して記述します。

図1 OnKeyDownイベントの記述
図1 OnKeyDownイベントの記述

 プログラムを実行して、左右の矢印キーを押してみましょう。ラケットが動きますね。

図2 ラケットを動かす
図2 ラケットを動かす

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ボールを動かす

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

EDN編集部(イーディーエヌ編集部)

エンバカデロ・デベロッパーネットワーク(EDN)は、ソフトウェア開発者とデータベース技術者のための技術情報サイトです。Delphi、C++Builderをはじめとする開発ツールやER/Studioなどのデータベースツールに関連する技術記事、ビデオなどを提供しています。EDN編集部は、EDN記事と連携...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6635 2012/06/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング