乱反射の光跡 in hatenablog

なみへいのブログです。hatenablogヴァージョン。

さあヴァージョン0.4


さて、反省ばかりしてても仕方ない(笑)ので、そろそろヴァージョン0.4に取りかかることにします。前回書いた「NSView」の勉強もしなくてはいけないのですが、それはそれとして(笑)。
というか、「NSView」をソースコードでコントロールして「スプリット」を実現させるには、かなり複雑な操作になるような予感が強くなってきまして(笑)。表示もそうなのですが、プレイヤーの手が複数になった場合、それぞれの手札を個別に操作して、点数も個別に計算したりしなければならなくなるので、今の僕にはとても手に負えない(笑)ものになりそうで……。


という訳で、「スピリット」は後々の課題ということにして(笑)、その他のことを片付けていくことにします。
まずは全体の設計から。


「その8」「その9」と反省ばかりのこのプログラム(笑)。まずはその反省を生かしていかねばなりません。そのための「反省」なんだから(笑)。


といっても、クラス設計の根本からして穴だらけ(笑)。これを何とかしなければ。
まずはここからです、「NNCard」クラスの全面改訂。一番簡単なところから(笑)。……といっても、これが一番の基本になるわけですが。


この「NNCard」、基本的には一枚のカードを表すものなので、インスタンス変数を用意して、初期化メソッドはその変数に定数を当てはめていくだけ、という単純な仕様にします。
できるだけ汎用性を持たせることを意識して、作ってみたいと考えてます。


インスタンス変数として、カード名、スーツ(マーク)、ナンバー(数字)を文字列(NSString)として持つことにします。画像名は変数として保持するのではなく、画像表示のメソッドかどこか(笑)で、カード名から作成することにします。……おお、モデルとビューの切り分け(笑)。

値としては、通常の値と代替の値のふたつ。その値を切り替える専用のフラグを新たにひとつ。その他にBOOL値のフラグとint値のフラグを持つことにしました。これはゲームによっていろいろと使えるように。今回はBOOL値フラグを、「ブラックジャック」の手の判定に利用することにする予定です。……まだ、予定ですが(笑)。

それぞれの値にsetterとgetterを用意しますが、カード名・スーツ・ナンバーの3つにはsetterを用意しません。
これは1セットのトランプが持つカードはそれぞれ1枚ずつであり、これが変更できたりすると、1セットのトランプのカード構成を崩してしまうことになるからです。カード名を変更することは違うカードを用意することと同義なので、それはカード名の変更ではなく、新しいカードオブジェクトを生成することで対応する方が良いと思うからです。
……素人の考え方ですが、合ってるかな?(笑)

まあ、このクラスはトランプの1枚のカードを表現するもので、基本的にカード固有の変数を格納するだけのオブジェクトなので。setterとgetter以外は初期化のメソッドだけです。初期化のメソッドは、全ての変数を引数として与えるメソッドから、フラグの設定を省略(フラグにはNO、または0が入る)したものをいくつか用意しました。


ソースコードは、後ほどホームページで公開します。