Может быть, вы можете показать больше кода? В частности, как инициализируется BlackJackDeck
. Кроме того, как инициализируются руки игроков? Я обновлю этот ответ, как только мы получим больше информации. На данный момент трудно сказать, что происходит, не видя больше.
Однако, эта вещь не привлекла мое внимание: list.pop
принимает необязательный целочисленный параметр, который он обрабатывает как индекс для извлечения. То, как написан ваш код, кажется, что у вас сложилось впечатление, что это число представляет количество элементов, которые вы sh извлечете, что неверно. Поэтому, когда вы говорите BlackJackDeck.drawCard(1)
, вы выталкиваете и возвращаете карту с индексом 1 (вторая карта). Если вы говорите BlackJackDeck.drawCard(5)
, вы не выталкиваете пять карточек из колоды, вы выталкиваете одну карточку - карточку с индексом 5 (шестая карточка).
РЕДАКТИРОВАТЬ - Спасибо за публикацию большего количества кода , Основная проблема, которая сразу бросается в глаза, заключается в том, что рука каждого игрока не является переменной экземпляра, это переменная класса (stati c). Посмотрите на этот фрагмент, который предназначен для имитации структуры вашего кода прямо сейчас:
class Player:
hand = []
def __init__(self, name):
self.name = name
def add_card_to_hand(self, card):
self.hand.append(card)
player_1 = Player("Bob")
player_2 = Player("Tom")
player_1.add_card_to_hand("Ace of Spades")
player_2.add_card_to_hand("Queen of Hearts")
print(f"{player_1.name}'s hand: {player_1.hand}")
print(f"{player_2.name}'s hand: {player_2.hand}")
Вывод:
Bob's hand: ['Ace of Spades', 'Queen of Hearts']
Tom's hand: ['Ace of Spades', 'Queen of Hearts']
>>>
hand
- это единственный список в памяти, который используется всеми экземплярами Player
, потому что это переменная класса. Поэтому, если вы вызываете add_card_to_hand
, независимо от того, на какой объект игрока вы ссылаетесь, вы в конечном итоге добавляете в тот же список. Что вам действительно нужно, так это отдельный список для каждого игрока, поэтому hand
должна быть переменной экземпляра, например:
class Player:
def __init__(self, name):
self.hand = []
self.name = name
def add_card_to_hand(self, card):
self.hand.append(card)
player_1 = Player("Bob")
player_2 = Player("Tom")
player_1.add_card_to_hand("Ace of Spades")
player_2.add_card_to_hand("Queen of Hearts")
print(f"{player_1.name}'s hand: {player_1.hand}")
print(f"{player_2.name}'s hand: {player_2.hand}")
Вывод:
Bob's hand: ['Ace of Spades']
Tom's hand: ['Queen of Hearts']
>>>
Я посмотрю на остальной код, который вы разместили в бит. Если я увижу что-нибудь еще, я обновлю этот пост.