だから私はもう一度初心者の問題で立ち往生しています:D
私はコンピューターに対して囲碁のテキストベースのゲームを一緒にマッシュアップしようとしています。
さて、1枚のカードは実際には2つのリストの要素のタプルです。
suits = ['Clubs', 'Diamonds', 'Spade', 'Hearts']
ranks = [None, 'ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'jack', 'queen', 'king']
その後、それはデッキに追加され、シャッフルされ、それ以外のものが手札に配られます。(私が思う本thinkpythonからそのほとんどを手に入れました。その過程でクラス構造と継承について多くを学びました。)
片手はこんな感じかもしれません
['Clubs 2', 'Diamonds king', 'Diamonds 2', 'Spades 2', 'Hearts 2']
ご覧のとおり、その手には同じランクの4つが含まれているため、プレーヤーにとっては1ポイントです。しかし、手にランクリストのアイテムの4つのインスタンスが含まれているかどうかを確認するにはどうすればよいですか?リスト内の各項目を反復処理する必要がありますか、それともクリーンで簡単な方法がありますか?
編集
すべての答えの人に感謝します。:Dしかし、手のアイテムに「split」を使用しようとすると、属性エラーが発生します。私が実行しているコードをもっと投稿するべきだったと思います。
完全なコードとトレースバックはこちら
http://pastebin.com/TwHkrbED
カードでのメソッドの定義に何か問題がありますか?私はそれを機能させるために何時間もハッキングしてきましたが、運がありません。
EDIT2
デッキ生成部分にいくつかの変更を加えました。これで、デッキ全体がタプルのリストになり、コードが大幅に減りました。
thedeck=[]
class Deckofcards:
suits = ['Clubs', 'Diamonds', 'Hearts', 'Spades']
ranks = ['Ace', '2', '3', '4', '5',
'6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']
def __init__(self):
for i in self.suits:
for a in self.ranks:
thedeck.append((i, a))
他の方法は非常に複雑だったようですが、idkです。実際のゲームパーツを追加して、明日はどうなるか見ていきます。