中学1年生のかずは相変わらず,パソコンでゲームばかりしている。それにプラスして,こうしろうに「かずはアニメおたくや。」と言われるようにアニメ好きで,アニメのサイトも毎日定期巡回しているようだ。
「かず,なんかしようや」とActiveBasicというプログラム言語というか開発環境を紹介した。ゲームやネットサーフィンばかりしている子供を見ると,何かさせたくなってしまうのだ。
ActiveBasicは当初,N88互換Basicとして開発されたが,Ver3.0で構造化プログラミングをサポートし,まだベータ版ではあるがVer4.0では,なんとオブジェクト指向を取り入れ,COMコンポーネントやDirectXにも対応しているプログラミング言語である。これで手軽に,3DのロボットをPCの画面上に動き回らせることができればアニメおたくの「かずは夢中!」になるかしらんと勧めたのだ。
開発元のDISCOVERSOFT(http://www.discover-soft.com/)のページにあるDirectXプログラミング講座の「5分でできる、"Hello World!" on DirectX」のリンクをたどり,かずはDirectXプログラミングに着手した。ちなみにDISCOVERSOFTは組織ではなく,個人でプログラム言語を開発し,サイトも運営されているらしい。作者はなんと21歳の若者で,すでに解説本も執筆している。「スゲーなあ」と44才のおじさんは,その才能に次元の違いを感じてしまう。
まずは「1.はじめに」のページの指示に従いマイクロソフトのサイトからDirectX9.0エンドユーザー向けランタイムライブラリをダウンロード,インストールする。もちろん,その前にActiveBasic4.0をダウンロードしてインストールしておかなくてはいけない。
最初に作るのはHello World!と表示する定番のプログラムだ。DirectXで表示するのだから,日経ソフトウエアの「今月のHello World」最終回のデジハリ(デジタルハリウッド株式会社)なみのHello Worldが表示できるのかもしれないが,まずは黒い画面にテキストで控えめに「Hello World!」と表示するプログラムから作成を始める。
DirectXプログラミング講座の指示に沿ってかずはプロジェクトを作成していく。
プロジェクト名を入力し,DirectX対応アプリケーションを選択し,次へをクリックするとプログラムのスケルトン(骨組み)が自動的に作成される。
---------------------------------------------------------- Sub RenderProc() ' TODO: この位置に描画に関するコードを記述してください。 dx_DrawText(100,100,"Hello World!",D3DCOLOR_XRGB(255,255,255)) End Sub ----------------------------------------------------------RenderProc()に,このようにコードを打ち込めと書いてある通りに,dx_DrawTextの行を入力すると,Hello World!と黒い画面に表示された。
私はちょっとした用事があったので「続けてやってみるこっちゃ」と外出した。帰宅して「かず,うまくいったか?」とたずねると「どこに書けば,いいがかわからんだ」とはっきりした富山弁ではっきりしないことを言った。
「そこに書け」と書いてあるところに書けばいいがでないがかと内心思いながら「なんで?」と次のサンプルプログラム「2Dポリゴンの表示のページ」(http://www.discover-soft.com/directx/step04/index.html)をかずと一緒に読んでみた。
「あっ,そうかオブジェクト指向のスタイルがはじめてやから,わからんがや」とかずのわからんが納得できた。
自動的に作成されるスケルトンの最初の部分に,
Dim pImageObj As *CImage2D
とクラスポインタ型の変数を定義し,InitProc()でpImageObj= New CImage2Dとオブジェクトを生成して,QuitProc()ではDelete pImageObjとオブジェクトを破棄する。肝心のRenderProc()で,pImageObj のDrawメソッドをpImageObj->Draw(50,50,200,150)と呼び出して長方形を描画する。
黒い画面に白い長方形が描画された。
「Initでオブジェクトを生成して,Quitで破棄,Renderで描けばいいがや」と簡潔すぎる説明をかずにした。