乱反射の光跡 in hatenablog

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

NNCard version 0.4


いやいや、ご無沙汰してしまいました。


前回「ソースコードはそのうち公開」などと書いておきながらまだ公開していないのは、「汎用性の高いものを」などと考えながら、どうすれば汎用性が高くなるのか、がわからないから(笑)何ですが。

などと埒の明かないことを考えたりしながらも、初戦は素人プログラミング、所詮はヴァージョン0.4という事で、試行錯誤は当然のこととして、先に進むことにします。
 ……また変わるかもしれないけど(笑)。

現時点でのソースコードを公開しました。
http://www.interq.or.jp/neptune/namiheij/Softwares/BlackJack/Sources/NNCard_objC04.html
とりあえずは、こんな感じで。


で、課題は、汎用性を高めるにはどうすればいいか。
NNCardクラスはトランプのカード1枚を表すクラスです。すなわち、それ自体は何らかの決まった役割を持っているわけではないのです。それはゲームのルールの中でそれぞれの役割が決められ、そのゲームの中のルールによってその価値(変数の値?)が決められるわけです。
つまり、このクラスではゲームの内容に関わるデータは持たない方がいい。しかも、1枚のカードが持つ価値はゲームによって千変万化するわけですから、このクラス自体が何らかのゲームにおける価値(決められた値)を持つわけではない。いや、持ってはいけない、ということになります。


そこで、このクラスは変数を保持することと、その変数をゲームの主体であるアプリケーションコントローラから受け取る、ということになるわけです。
ということで、このクラスが持つ機能は初期化メソッドと、セッターとゲッターという、基本的なメソッドのみとなるのですが。


……しかし。


汎用性を持たせるためには、もうひとつ、追加するものがあります。
ジョーカーカードです。
今制作しているBlackJackには出てこないし、必要のないカードなのですが、これから他のカードゲームをこのクラスを利用して作ろうとする場合、ジョーカーカードもちゃんと揃えられる機能は持たせておかないと、と思ったのです。


しかしこのジョーカーカード、「オールマイティ」なカードになったり「オニ」になったり(笑)と、その機能はそれこそ他のカード以上に「千変万化」するカードでもあります。
これをどうやってオブジェクトで表現すればいいのか、正直言ってわかりません(笑)。
とりあえずは、他のカードと同じような初期化をして、ゲームによって持たせる値やフラグに変化を付ける、という形にするのが、現在の時点では最善でしょう。


ついでに、「-description;」メソッドも追加することに。
これはオブジェクトの内部の状態を文字列オブジェクトとして返すもので、プロパティリストなどに利用されるものです。
現在、別に利用するあてはないのですが、参考書に「一応あった方が云々」などと書いてあったので(笑)。


しかしこの「-description」メソッド、「-(NSString*)description: format, var1, var2, ...」という書式なのですが、このformatのソースに改行を入れると、Xcodeで警告をもらっちゃったりします(笑)。公開したソースコードは見やすいように改行コードが入っているのですが、警告が出たらformat内の改行を取り除けば、警告が出なくなります。