Python-知識を一つに-1
ウオード・カニンガム
コードが動くまでは口先だけだね。
「戦争」カードゲーム
class Card:
suits = ["spades", "hearts", "daiamonds", "clubs"]
values = ["none", "none", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King", "Ace"]
Cardクラスには2つのクラス変数`suitsとvaluesがあります
suitsはカードのスート(マーク)(スペード, ハート, ダイヤ, クラブ)
を表す文字列を持つリストの変数です。valuesも文字列ですが、こちらにはカード
の値を表す文字列を持っています。それぞれ、2から10の数字、ジャック、
クイーン、キング、エースをあらわします。valuesの最初の2つの要素には、リスト
インデックス操作と値が一致するように、nonを持たせています。つまり、values[2]
でリストの要素にアクセスしたら”2”を取得できます。
インスタンス変数 suitとvalue
Cardオブジェクトは、2つのインスタンス変数suitとvalueを持っています。
どちらも整数で、この2つの値でそのオブジェクトがどんなカードなのかを表します
たとへば「ハート2」のカードをつくりたければ、Cardクラスに2(数値として)
と1(スートとして、suitsのインデックスは1はハート)をあわわします。
Cardクラスは、特殊メソッド__lt__と__gt__を定義しています。
この2つのメソッドのおかげで、Cardのオブジェクトは大小比較の演算子で
比較できるようになります。