IRC用のポーカーゲームボットを作ろうとしていますが、カードの扱いに頭を悩ませているようには見えません。
このアルゴリズムは非常に非効率的であることは知っていますが、現在のPythonスキルを使用して思いつくことができる最高のものです。どんな改善でも大歓迎です!
プレーヤーは、キーがプレーヤーのニックネームであり、値がプレーヤーが持っている金額である辞書です。
コードを実行するときに、プレーヤーが1人しかない場合は、必要に応じて5枚のカードが提供されます。しかし、プレイヤーが2人いる場合、それぞれ4〜6枚のカードが生成されます。私はまだ他のプレイヤーでテストしていません。
事前に初期化された変数のいくつか:
numberOfPlayers = 0 #The numerical value of the amount of players in the game
players = {} #The nickname of each player and the amount of money they have
bets = {} #How much each player has bet
decks = 1 #The number of decks in play
suits = ["C","D","H","S"] #All the possible suits (Clubs, Diamonds, Hearts, Spades)
ranks = ["2","3","4","5","4","6","7","8","9","J","Q","K","A"] #All the possible ranks (Excluding jokers)
cardsGiven = {} #The cards that have been dealt from the deck, and the amount of times they have been given. If one deck is in play, the max is 1, if two decks are in play, the max is 2 and so on...
hands = {} #Each players cards
コード:
def deal(channel, msgnick):
try:
s.send("PRIVMSG " + channel + " :Dealing...\n")
for k, v in players.iteritems():
for c in range(0, 5):
suit = random.randrange(1, 4)
rank = random.randrange(0,12)
suit = suits[suit]
rank = ranks[rank]
card = rank + suit
print(card)
if card in cardsGiven:
if cardsGiven[card] < decks:
if c == 5:
hands[k] = hands[k] + card
cardsGiven[card] += 1
else:
hands[k] = hands[k] + card + ", "
cardsGiven[card] += 1
else:
c -= 1
else:
if c == 5:
hands[k] = hands[k] + card
cardsGiven[card] = 1
else:
hands[k] = hands[k] + card + ", "
cardsGiven[card] = 1
s.send("NOTICE " + k + " :Your hand: " + hands[k] + "\n")
except Exception:
excHandler(s, channel)
例や詳細な説明が必要な場合は、お問い合わせください:)