不健康再びって感じ。
どうしたものか。
ま、いっか。別に。移植手段も無いワケじゃないし。(面倒だけど)
というワケでコンパイルオプション -Wno-pmf-conversionsを追加し、メソッドを (引数に thisポインタを追加して、一般の) 関数ポインタへと変換し、さらに型チェック機構を誤魔化すため、void*変数へ代入。使用側では、代入されている関数のクラス型は固定(自分自身のみという暗黙仕様)なので、決め打ちで先程の一般関数ポインタ型へ castし、引数に thisポインタを追加することで目的である任意メソッドの起動処理を記述することができた (この使用側の処理は virtualメソッドとして定義し、各派生型で実装)。ちなみに virtualメソッドを使用する場合、一般関数ポインタ型に変換する際にアドレス探索・解決され、その解決後の関数アドレスへのポインタが返されるみたいです。
もっとも理想的な解決方法は、純粋オブジェクト指向の Eiffel言語のように、メンバー変数定義に like演算子を用いて、自クラスの関数ポインタ型という相対的な型定義ができればいいんだけど。これで一気に解決しそうな感じ。
・・・自分でもナニを書いているのかわからなくなってきた。
なんか話が逸れているような。
で、なんの話だっけ? そうそう、ファイアーボールの呪文だけど、まだ覚えてすらいない(笑)。
それ以前にまだキャラクターデータを作っていなかったり呪文の効果がってまだ対象を絞り込んだりとかもまだまだできないんだけど。(って、一体ナニをしようとしているのだ!?)
取り敢えずファイアーボールを撃つロジック『だけ』が動けばい〜な〜なんて。
動くロジックができれば、あとはプログラマーズ・ハイ状態でどどど〜ってなるといいな。
でも、ボクのプログラマーズ・ハイは左脳中心で起動された場合にのみ発揮される。想像しながら(右脳中心)の場合は、ダメなんだ。先に想像を完了させておかないと。でも、細部まで定義するのは時間がかかるし.....。
ボクの右脳は受信性能は高いけど、発信性能はイマイチってーコト。
『まず、方向性を決める。それを自分宛の Mailで送る。受信した Mailを基に、それはどういう方向性なのか想像する。それをさらに自分宛に送る。これを納得のいくまで繰り返す。』という話も聞くのだけど、俺は自分の書いた Mailを見て返事を書ける程、そんなに器用じゃない。ので却下。
そんなことはどうでもよくて、どうも俺が作ろうとするヤツは、変に硬派でマニアックにこだわってしまう。だから完成しないまま放置されるんだってば。
これが一番の問題。なんとかしないと。
さらに書き足すと、今回、C++で組んでるんだけど、細かなプリミティブクラスをいちいち自力で組んでいくのも面倒になってきたので、とうとう STLに手を出そうと解説書を読み漁り始めた所。
他に C++操縦法という本もあるんだけど、これは 一本組んでから読んだ方がよさげな感じの本なので、これは後回しにしたけど、やっぱ芋蔓式で、やることが増えてゆく。
これに打ち勝つためには、根性だッ! 根性しかないッ!!
だから、家庭用ゲーム機でのプレイでも、十時キーでマウスカーソルを動かすような、無意味な操作体系は受け入れられない自分に気付く。
ゲームの特性上望ましい場合もあるだろうけど、シムシティタイプのゲームでも、マウスカーソルは無しでプレイしたい。画面の枠の外のような無意味な場所に移動したりすることのできないような方式がいい。それにはモードの概念を導入しないといけなくなるだろうけどね。
選択肢を決定する場合には、やはり『オーバーラップ無し』で、十時キーで上下左右に直接移動する方が、確実に目が疲れずに選択できる。
前にもやっていたのを見たことあるんだけど、定期的にやっているのかな?
当然、番組表には載ってない。
celeron機で, 約 30分後にコンパイル終了。あれ? 3.3.3.1の頃より速い!?
あ、FreeBSDの make buildworldが約 1時間だから、そんなもんか。
取り敢えず軽く動作確認しようと思ったけど、俺の ATI 3D PRO TURBO PC2TV (3D RAGE II)は相変わらず調子悪く、なんと vgaモード、しかも 320x200しか表示できない(涙)。
ぢつを言うとこのカードは 3.3.4でも調子悪く、いや、XFree86全てと相性が悪く、こんな感じでまともに使えそうもない(涙)。
なにかの拍子で治った時もあったけど、なんの拍子だか分ってない(汗)。おかしくなる原因は分かってるけど。
TV出力端子を使って、TVと接続するだけ。その後リセット等で VGA BIOSに初期化させると、一発で、この調子。でも当たり前のように、Win9xでは至って快調(汗)。ぶ〜。