前回に引き続き、アンドゥ機構付きの選択処理という物を作ってみたいと思います。
どんな風に作ろうか考えてから、実装し、動作テストまでやる予定です。
毎日のように料理作って、弁当を会社に持っていく生活を続けている。
料理をしていると、なんだか心が温まるんですよね。
はい、では本題に入ります。
C++ 言語の基本を学ぼうと入門書を一通り読み終えると、クラスの継承とか多態性(ポリモーフィズム)
といった単語を覚えると思います。
なるべくコード記述量を少なくして、コピー&ペーストする部分を共通化し
後々拡張するときに楽できて、修正の影響範囲が明快になるように…
つまり面倒くさいことになる前に、C++ 言語の特性を使って書こう、という話です。
アンドゥリドゥの機構を考えます。考えるというより、一般的にどうやるかを調べてみましょう。
そこで登場するのがデザインパターンです。
アンドゥリドゥの機構はそのうちの一つ Command パターンに当てはまる感じでしょうか。
Command パターンの詳細はコチラを参照してください。
何のことは無く、命令をクラスにする、ただそれだけです。
さて、この Command パターンに従うならば、コマンドマネージャ(アンドゥリドゥ管理クラス)は
基底クラスのポインタを扱うことになります。(C++ならばの話ですが)
そのポインタ、いつ誰が作成し、どのタイミングで解放すれば良いのでしょうか?
なんだかんだで面倒くさそうです。
そんなときに、これもデザインパターンなのか「スマートポインタ」というものが有名です。
C++ は new して確保した領域は、いらなくなったら解放する必要があります。
これはプログラマの責任ですが、面倒な上解放し忘れることがあります。(今のところ一度もありませんが)
解放し忘れたコードが見つけづらいことも問題です。(他人のコードとか触るときは気をつけないとね)
勝手に要らなくなったときに、自分から delete してくれるものがあると便利ですね。
そんなポインタを管理する仕組みが「スマートポインタ」なんです。
さてさて、それを自分で作るのもまた面倒くさい話ですね。
そこで Boost C++ Library という便利な外部ライブラリを見つけることになると思います。
詳細を次に示します。
あ、スマートポインタはシェアードポインタとも言います。
これにコマンドクラスのポインタを渡して管理すればアンドゥ機構の完成です。
…
2012/3/5 熱を出して寝込むことに。
最近 ACV のやりすぎだな、きっとこの不規則な生活が原因に違いない。
…
すみませんが 045話はここまでです。
作業を始めるには準備が足りないことに気付きましたので、しばらく言語の勉強をします。
時間を置いてちょっと違うことを考えてみました。
C++ で GUI ツールの作成、つまり MFC でどんどこコードを書いていくやり方は
2012年の現時点ではちょっと古いやり方かもしれません。
ゼロから GUI を作ろうとするなら C# からでしょうか。
( ほか、ツール作成について最近 WPF という単語をよく耳にします。)
となると、DirectX 11 や Bullet Physics を C# で扱うことになります。それはどうやって?
そんなこんなでゲーム作りのパイプラインを今一度見直してみたいと思います。
結論を出してから実装に移ることにしましょう。(なんだか無駄足を踏みそうになったので)
まずは C# のお勉強から始めます。
最近後輩が C# について、「リフレクション」がどうとか口にしていたのを思い出しまして
それって C# のなんだろ?って疑問が頭の中にあったのでそれを説明している入門書を探してみました。
最初に目についたのがコレ↓
ということで即購入!
最後のページまで理解しながら読んでみます。
…
……
………
ふぅ、やっと最後のページをめくれた。
うーん、一日じゃ読み終わらなかったし…
最後の最後でリフレクションについて説明がなされていました。
リフレクションとは、実行中に他のアセンブリや自身のメタデータを見る行為のことを指すそうです。
あ、メタデータとはプログラムについてのデータのことです。
(具体的に何?という問いに対する答えとしては、Type オブジェクトを取り出して属性の値を取得するとか…)
あれですね、結局この本を読まないとうまく理解できないと思います。
あとは、C# 使っていけばそのうち覚える機会が出てくるのではないかと…
ひとまず C# についてちょっとだけ詳しくなれました。
C# を学ぼうとした一番の目的は WPF アプリケーションをコーディングするときに
書式でつまづかないようにする為です。
この辺はクリアできたんじゃないかと!
では、続いて WPF について学んでみたいと思います。
もっとリッチなUIを簡単に作らせてよ!
そんな顧客のニーズにこたえるべくマイクロソフトは Avalon というプロジェクトチームを結成。
その後、プロジェクトは Windows Presentation Foundation (WPF) という名前で呼ばれるようになったそうです。
教科書にこちら↓を用意しました。
C# のときのように一字一句追っていくようなことはせず、どんなことができるのか流し読みしてみました。
具体的な実現方法については、もう一度読み直して習得してみようと思います。
この本…しっかり読んでいても、何を言いたいのかよくわからない文章があるんですよね。
私の知識レベルが足りていないからなのだと思います。
そんなこんなで WPF に興味がある人は自分を含めて多そうなので簡単な入門編を作っていきたいと思います。
ツール開発時にふと思い出したように、次から始める講座を参照するようになればいいなぁと夢見つつ作業に取り掛かってみましょうか!
次回! WPF 入門編をお楽しみに!
2012/02/19 初記。
2012/04/07 更新。