Создание карточной игры с классами Python - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь попрактиковаться в программировании на Python, создав карточную игру.Сейчас я хочу добиться, чтобы игрок взял карту из колоды.У меня есть следующий код:

class Deck():

def __init__(self):
   #create the deck
   self.deck = []
   self.discard_pile = []

def create_deck(self):
   #assign the number of cards for each type to a card (dict)
   deck_stats = {"A":4, "B":6, "C":5, "D":5, "E":5, "F":5, "G":5, "H":5, "I":5, 'J':5}

   for card in deck_stats.keys():
     for i in range(0,deck_stats[card]):
       self.deck.append(card)
   return self.deck

def shuffle(self):
   #randomise the deck or for when the shuffle card is played
   random.shuffle(self.deck)
   return self.deck

def pickup(self):
   #picks up the first card on the draw pile
   picked_up = self.deck.pop(0)
   print(picked_up)
return picked_up

И класс проигрывателя:

class Player(Deck):

def __init__(self):
   self.player_hand = ["defuse"]
   for i in range(6):
     self.draw_card()

def draw_card(self):
#draw pile reduces by one
   deck = Deck()
   deck.create_deck()
   deck.shuffle()
   self.player_hand.append(deck.pickup())
return self.player_hand

В методе draw_card() из класса Player я вызвал метод pickup изПалубный класс.Я считаю, что это неправильно, но я не уверен, как еще можно забрать карту из объекта Deck.

Кроме того, метод draw_card явно не работает так, как предполагалоськаждый раз он создает новую колоду, а затем подбирает ее из новой колоды (по крайней мере, это то, что я думаю сейчас).Это возвращает меня к моему первоначальному вопросу: как заставить игрока забрать карту из той же колоды, чтобы мне не приходилось каждый раз создавать новую колоду?

1 Ответ

0 голосов
/ 16 марта 2019

Попробуйте что-то вроде

class Deck():

    def __init__(self):
        # create the deck
        self.discard_pile = []
        self.deck = self.create_deck()
        self.shuffle()

    def create_deck(self):
        deck = []
        # assign the number of cards for each type to a card (dict)
        deck_stats = {"A": 4, "B": 6, "C": 5, "D": 5, "E": 5, "F": 5, "G": 5, "H": 5, "I": 5, 'J': 5}

        for card in deck_stats.keys():
            for i in range(0, deck_stats[card]):
                deck.append(card)
        return deck

    def shuffle(self):
        # randomise the deck or for when the shuffle card is played
        random.shuffle(self.deck)
        return self.deck

    def pickup(self):
        # picks up the first card on the draw pile
        picked_up = self.deck.pop(0)
        print(picked_up)
        return picked_up


class Player:

    def __init__(self):
        self.player_hand = ["defuse"]
        self.deck = Deck()
        for i in range(6):
            self.draw_card()

    def draw_card(self):
        # draw pile reduces by one
        self.player_hand.append(deck.pickup())
        return self.player_hand
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...