はじめに
今から15年前、業界初のC++向けのビジュアルRADツール「C++Builder」が発売されました。マウス操作で部品を配置してアプリケーションを開発するツールとしては、当時「Delphi」と「Visual Basic」がありましたが、C++は初めて。それまでクラスライブラリと格闘してGUIを作成していたため、なんて便利なんだろうと思ったものです。
時代は変わり、Web系の開発に適した言語にフォーカスが当たっていきましたが、今、スマートフォンをはじめとするマルチデバイスの中で、C++の役割も見直されています。そんな中、C++BuilderがiOSやAndroidにも対応するというアナウンスがありました。
「C++Builderも15年目で大きく飛躍するのか」と思い、昔を懐かしんで当時の書籍を取り上げてみたところ、クラシックなラケットゲームの演習課題を見つけました。アスキー出版局の「Borland C++Builder入門」(著・藤井等、監修・ボーランド)。確か日本で最初のC++Builderの書籍です。
今回は、懐かしい演習課題に、最新バージョンXE2を使ってもう一度取り組んでみようと思います。ちょうどXE2には、表現力豊かなHD/3Dグラフィックを簡単に扱えるFireMonkeyコンポーネントがあります。以前より、ちょっとリッチなインターフェイスになったゲームの製作を通して、最新バージョンでの開発の違いもあぶりだせるのではないかと思います。
ゲームの概要
これから作成するゲームは、左右に動くラケットで壁に跳ね返るボールを打つ簡単なものです。左右の矢印キーでラケットを動かし、ボールを打ちます。ボールを1回打つと得点が加算され、打ち損なうとラケットは没収です。ラケットは全部で5つ用意することにします。ボールは、打ち返すたびに加速するようにしましょう。速いボールを打てばそれだけ高得点が得られるようにします。
どのコンポーネントを使うか
今回、15年前の書籍の内容を、最新の開発環境で再現するにあたり、最新環境ならではの機能を使ってみることにします。
FireMonkeyは、Delphi/C++Builder XE2に新たに搭載されたコンポーネントフレームワークで、Windows/Mac OS Xなどマルチプラットフォームのサポートに加えて、HD/3Dの高品質なベクターグラフィックを簡単に利用できます。FireMonkeyには従来のVCLと類似のコンポーネントもあり、比較的簡単に新しいフレームワークにもなじみやすく、簡単に開発を進めることができます。
ラケットやボールは、Labelコンポーネントを用いて表現します。Labelの位置は、プログラム中で変更することも可能なため、動くボールやラケットを表すことができます。FireMonkeyには、表面にテクスチャを貼り付けることのできる3Dオブジェクトも用意されているので、よりリアルなボールやラケットを作成することも可能です。