『 その5-4 』
■ コーディング:「←」ボタン ![]()
そうでなければ
が入っている。これはVBがやることなので、これらオプションボタンからのイベントにコードを書き込む必要はない。コーディングが必要なのは「↑」「↓」「←」「→」 の キャプションをつけたコマンドボタンのClickイベントである。 では、フォーム上の「←」ボタンをダブルクリックしてコードを呼び出そう。ここにはY軸まわりに10度回転するようにコードが書き込まれている。ここでの新しい機能を整理してみよう。
玉を左に移動する Opt_Mov.Value = Falseのとき さらにOpt_XY.Value = Trueのとき 玉をY軸回転する Opt_XY.Value = Falseのとき 玉をZ軸回転する Opt_Mov.Value はTrueかFalseどちらかの値が入っている。このオプションボタンの値はOpt_Rotというボタンの値と連動していて、MovがTrueの場合はRotはFalseだし、MovがFalseの場合RotはTureなのである。だから 「Opt_Mov.Value = Trueのとき」というのは「移動が選択されている」という意味で、 「Opt_Mov.Value = Falseのとき」というのは「回転が選択されている」という意味になるのである。では実際にコーディングしてみよう。ここには
Call DX_Draw というコードが書かれていたはずであるがそれを下のように書き換える。
Call Move_R(0, -0.1, 0, 0) Else If (Opt_XY.Value = True) Then Call Rotate_R(0, 0, 10, 0) Else Call Rotate_R(0, 0, 0, 10) End If End If Call DX_Draw さて、最初のifである。これはその行の最後にあるThenとそこから2行下のElseと最後から2行目のEnd ifとセットになっている。上のコード内で太文字で書いてあるので参考にしてほしい。この意味を日本語で書くと「もし、ifの後に書いてあることが本当であればThenの後の命令を実行し、違っていたらElseの後の命令を実行しなさい。実行していく過程で、ElseもしくはEnd ifという命令を見つけたら、そこで処理を終え、End ifの後の命令から続けなさい。」になる。太文字のEnd ifの1行上にもEnd ifがあるが、それは太文字のElseの下にあるifの仲間なので、読み飛ばされる。 この流れをもう少しプログラムに関係づけて書くと、
Ifの後の部分を条件式と呼ぶらしいが、( )で囲んでいる。実の事を言うと、VBの文法上では( )は必要なかったりする。しかし、私は必ず条件式は( )で囲むことにしている。プログラムを少しでも見やすくしようという配慮と、それからVBで作ってみたプログラムがあまりにも実行速度が遅い場合、C++でコーディングすることになるが、移植の際に書き直す個所が減るので便利だったりするという理由がある。 これはあくまでも私の超個人的な意見なので強くは勧めないが、もしあなたが「どうしてもいやだ」というのでなければ、条件式は固まりごとに( )で囲もう。(弱気な勧め) |
■ 実行してみる さて、できあがったらさっそく実行である。モードを切り替えながら、上下左右のボタンをクリックしてみよう。スンゲーとは思わないか。既にこのプログラムはXファイルビューワーではないか!慣れてくるとこの程度のプログラムは5分程度でできるようになる。まさに「電源入れたら5分で3次元。」なのである。 ところが…このプログラムには欠陥があったりする。 「移動」にして玉を左右どちらかの端まで移動して、回転させてみてほしい。…そうなのである。回転の中心座標は常に画面の中心に設定されているのである。 「これは仕様である。」と大威張りしてしまうのも手であるが、ちゃんと回転の中心を設定する命令も用意されているので、説明していくことにする。 |
その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