LAST UPDATE 1998/07/18


『 その5-8 』



 ■ プログラムの実行

 実はこのプログラムにはまだ欠陥があった。お気づきであろうか。オブジェクトを移動しているときにファイルによって移動量が定まらないことである。最初にロードし表示していた玉は直径が約0.8なのである。Move_R命令では移動量を0.1にしてあった。サイズの大きなXファイルを表示しているときは、移動ボタンを押しても少しずつしか動かないし、小さなファイルを表示しているときには、動きすぎる。やはりオブジェクトの大きさに合せた移動量を設定しなければならないようである。それに便利な命令が用意されている。標準モジュールJmainBのGeneralのDeclarationsを見てもらいたい。

    GetObjMinMax(ID&, Obj As MinMax)
がそれである。同時にMinMaxの定義部分もチェックしておこう。この命令を実行するとXYZ成分それぞれの最大座標と最小座標を得ることができる。 では、標準モジュールで新しく変数を宣言し(図1)、Com_StartのClickイベント内でファイルをロードし終わり表示も終わった場所、つまりDX_Drawのあとに次のコードを追加しよう。(図2) それから、「←」「↑」「↓」「→」ボタンの移動命令Move_Rの0.1を全てMoveValに書き換えよう。


図1:変数の宣言 図2:移動量の計算


 ■ (再び)プログラムの実行

 これで、オブジェクトサイズが違っても移動量が変わらないようになったのである。今度は、何かを表示したままの状態で、別のアプリケーションを起動し、ビューワーが隠れるようにウインドウを重ねてみてほしい。そして再びビューワーを一番上にしてみると…「ぼわ~ん(完璧と思っていた自信が爆発した音)」
 せっかく表示されていたオブジェクトが消えたままもしくは欠けたままで、再描画されない。プログラムというのはなかなか完璧に動かないものである。誰かが昔言ったものである。「プログラムというのは、あなたの思った通りには動かない。しかし、あなたの作った通りには動いているのである。」
 DirectX は Windows の表示に関する面倒な手続きをかなり飛ばして、直接画面に描画するというシステムである。だからして、表示速度が速い。DirectX にとってウインドウの重なり具合などというのは知ったことではないのである。だから、そういうことが起こった場合は、プログラマーの手によってその面倒を見てあげなくてはならない。

 フォームのピクチャーボックスをダブルクリックしよう。すると pic の Click イベントが表示される。今度はそのイベントリストを開いてみよう。これは、ピクチャーボックスがサポートしている全イベントの一覧である。一番下の方に Paint というイベントがあるではないか。ここでおもむろにヘルプを開いてキーワードに Paint と打ち込むすると一番上に「オブジェクトが移動または拡大された、あるいはそのオブジェクトを隠していたウィンドウが移動した結果として、オブジェクトの一部または全部が画面に表示されたときに発生します。」となっている。これは使える。ようするにピクチャーボックスの表示状態に何か変化があったときに発生するイベントで、ウインドウの順番が変わったときなどにも発生する。
 ということで、ここに Call Dx_Draw の1行を書き込んでやる。これで、表示状態に変化が起こったときに再描画が行われるようになり、ようやくXファイルビューワーの完成である。めでたしめでたし。

 ■ VBの学習法

 実はこのVBというアプリはヘルプが充実しているのである。Paint イベントを探したときのような方法で、ヘルプを使ってひたすら関係のありそうなキーワードを調べまくるのである。例えばヘルプのキーワードに listbox と入力してみる。するとそれに関する一般的な説明が表示される。それから、関連項目、プロパティー、メソッド、イベントなどリストボックスで使用可能なものについて調べることができる。さらに運が良ければ使用例というサンプルプログラムが載っていたりする。VBという言語が持っている命令数は膨大な数に上る。それら全てを一気に覚えようと試みるのは暴挙なのである。VBの学習本を買いまくるのも手かもしれないが、全てを網羅するような本は分厚くて読む気になれないはずである。
 私がVBを覚えた方法というのは、既にある程度使い方を知っていたプログラマーに30分程度取っ掛かり部分の基礎を習った。そのあとはひたすらヘルプファイルとの戦いであった。そのうちに、ヘルプの上手な使い方というのを自分なりに発見し、現在に至っているが、今でもヘルプはプログラミングに欠かせない大切なお友達である。
 プログラマーは学者ではない。だから作りたいプログラムが「とりあえず」動けばOKで細かいことは気にせずに、前進するのである。
 次回からはいよいよゲーム制作に入るのでお楽しみに…




その5-1 | その5-2 | その5-3 | その5-4 | その5-5 | その5-6 | その5-7 | その5-8

『 サルのゲーム製作講座 』 目次 | その 1 | その 2 | その 3 | その 4 |
その 5 | その 6 | その 7 | その 8 | その 9 | その 10 | その 11


もどる

e-mail: sc_3da@magical2.egg.or.jp