class Player: """Класс Player представляет игрока. Атрибуты экземпляра класса: - self.name (str): имя игрока; - self.card_list (CardList): выбранные карты игрока. Методы экземпляра класса: - add_card(): добавляет карту в выбранные; - make_choice(): возвращает индекс выбранной игроком карты. """ def __init__(self, name): self.name = name self.card_list = CardList() def __str__(self): return self.name + " [" + str(self.card_list) + "] " + str( self.card_list.sum()) def add_card(self, card): card.is_face = True self.card_list.append(card) def make_choice(self): return int(input())
def __init__(self, cards_count): """Инициализация стола. Параметры: - cards_count (int): количество карт для игры. При инициализации стола происходит генерация набора из 'cards_count' карт (номерами от 1 до 'cards_count'). Если options.debug == True, карты должны быть лицом вверх. После генерации их необходимо перемешать - используйте self._card_list.shuffle(). Необходимо удостовериться, что 'cards_count' > 1. """ assert cards_count > 1, 'Количество карт должно быть больше единицы' self._card_list = CardList() # print(self._card_list._cards) self._card_list._cards = [Card(x) for x in range(1, cards_count + 1)] # self._card_list._cards=map(Card,list(range(1,cards_count+1))) # кажется нельзя использовать мап для создания списка объектов класса # print(self._card_list._cards) # используется поле CardList с '_', еще map может не работать с range # print(options.debug) if options.debug: # print('love') list(map(lambda x: x.turn_face(), self._card_list._cards)) # почему мап работает только, когда конвертируется в список??? # print(self._card_list._cards[0].is_face) # можно ли без lambda? self._card_list.shuffle()
def __init__(self, cards_count): assert cards_count > 1, "Недостаточное кол-во карт, для игры!" self._card_list = CardList() for i in range(1, cards_count + 1): card = Card(i) if options.debug: card.is_face = True self._card_list.append(card) self._card_list.shuffle()
def __init__(self, name): """Инициализация игрока. Параметры: - name (str): имя игрока. В процессе инициализации необходимо: - запомнить имя игрока; - инициализировать набор карт. """ self.name = name self.card_list = CardList()
class Player: """Класс Player представляет игрока. Атрибуты экземпляра класса: - self.name (str): имя игрока; - self.card_list (CardList): выбранные карты игрока. Методы экземпляра класса: - add_card(): добавляет карту в выбранные; - make_choice(): возвращает индекс выбранной игроком карты. """ def __init__(self, name): """Инициализация игрока. Параметры: - name (str): имя игрока. В процессе инициализации необходимо: - запомнить имя игрока; - инициализировать набор карт. """ self.name = name self.card_list = CardList() def __str__(self): """Вернуть строковое представление класса. Формат: 'Имя [выбранные карты] сумма', например, 'Иван [1 2 5] 8'. """ return (self.name + ' [' + str(self.card_list) + '] ' + str(self.card_list.sum())) # возможно не должна возвращать бэки, только числа def add_card(self, card): """Добавить карту 'card' в выбранные. Для игрока карта должна быть открытой (лицом вверх). """ card.turn_face() self.card_list.append(card) # не очень понятно: должна быть проверка на открытость # или ее нужно открыть после? def make_choice(self): """Вернуть номер карты, выбранной игроком (int). Номер вводится с клавиатуры (первая карта - номер 1). """ return (int(input()))
def create_list(self, language: Language, name: str): card_list = CardList(util.slugify(name) + ".json", language, name=name) if self.get_flashcard_list_by_name(language, name) is not None: msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText( "Die neue Liste konnte nicht erstellt werden, da eine andere mit dem gleichen Namen bereits existiert." ) msg.setWindowTitle("Liste existiert bereits") msg.exec_() return self.card_lists[language.value][card_list.id] = card_list self.save_list(card_list)
class CardTable: """Класс CardTable представляет игорный стол. Умеет: - хранить карты, лежащие на столе; - "отдавать" карту; - определять - пуст или нет. Атрибуты экземпляра класса: - self._card_list (CardList): набор карт на столе. Методы экземпляра класса: - self.take_card(): берет карту со стола; - self.is_empty(): True, если на слоле нет карт. Свойства: - card_count (int): количество карт на столе. """ def __init__(self, cards_count): assert cards_count > 1, "Недостаточное кол-во карт, для игры!" self._card_list = CardList() for i in range(1, cards_count + 1): card = Card(i) if options.debug: card.is_face = True self._card_list.append(card) self._card_list.shuffle() def __str__(self): line = "Карты на столе ({length}): {cards}".format( length=len(self._card_list), cards=self._card_list) return line def take_card(self, index): try: if 1 <= index: return self._card_list.pop(index - 1) else: raise IndexError except IndexError: raise def is_empty(self): if self._card_list.is_empty(): return True else: return False @property def card_count(self): return len(self._card_list)
def load_lists(self): for language in Language: self.card_lists[language.value] = {} language_dir = self.language_dirs[language.name] for file in os.listdir(language_dir): if file.endswith(".json"): try: with open(os.path.join(language_dir, file), encoding='utf-8') as json_file: card_list = CardList( file, language, json_data=json.load(json_file)) self.card_lists[language.value][ card_list.id] = card_list except: print("Invalid", language.name, "card list '", file, "'") traceback.print_exc()
draw_cards(players_hand, hand_size) draw_cards(bots_hand, hand_size) def draw_cards(card_list, num_of_cards): # draws num_of_cards from the top of the deck to the input card_list for i in range(num_of_cards): card_list.cards.append(deck.cards.pop(0)) def display_current(): print(players_hand) print(bots_hand) print(deck.cards) if __name__ == '__main__': # script for playing 2s and 4s 1v1 vs a bot # Hardcoded default variables for the game hand_size = 5 # init stuff players_hand = CardList() bots_hand = CardList() deck = CardList() play_pile = CardList() new_game()
class CardTable: """Класс CardTable представляет игорный стол. Умеет: - хранить карты, лежащие на столе; - "отдавать" карту; - определять - пуст или нет. Атрибуты экземпляра класса: - self._card_list (CardList): набор карт на столе. Методы экземпляра класса: - self.take_card(): берет карту со стола; - self.is_empty(): True, если на слоле нет карт. Свойства: - card_count (int): количество карт на столе. """ def __init__(self, cards_count): """Инициализация стола. Параметры: - cards_count (int): количество карт для игры. При инициализации стола происходит генерация набора из 'cards_count' карт (номерами от 1 до 'cards_count'). Если options.debug == True, карты должны быть лицом вверх. После генерации их необходимо перемешать - используйте self._card_list.shuffle(). Необходимо удостовериться, что 'cards_count' > 1. """ assert cards_count > 1, 'Количество карт должно быть больше единицы' self._card_list = CardList() # print(self._card_list._cards) self._card_list._cards = [Card(x) for x in range(1, cards_count + 1)] # self._card_list._cards=map(Card,list(range(1,cards_count+1))) # кажется нельзя использовать мап для создания списка объектов класса # print(self._card_list._cards) # используется поле CardList с '_', еще map может не работать с range # print(options.debug) if options.debug: # print('love') list(map(lambda x: x.turn_face(), self._card_list._cards)) # почему мап работает только, когда конвертируется в список??? # print(self._card_list._cards[0].is_face) # можно ли без lambda? self._card_list.shuffle() def __str__(self): """Вернуть строковое представление карт на столе. Формат: Карты на столе (3): X X X """ return('Карты на столе ({}): {}'.format(self.card_count, self._card_list)) def take_card(self, index): """Взять (вернуть) со стола одну карту под номером 'index'. Параметры: - 'index' - номер карты, начиная с 1. Исключения: - IndexError: если не 1 <= index <= card_count. """ if not 1 <= index <= self.card_count: raise IndexError('Номер карты должен быть в интервале [1;{}]' .format(self.card_count)) return self._card_list.pop(index - 1) def is_empty(self): """Вернуть True, если на столе нет карт.""" return self._card_list.is_empty() @property def card_count(self): """Вернуть количество карт на столе.""" return len(self._card_list)
def save_list(self, card_list: CardList): with open( os.path.join(self.language_dirs[card_list.language.name], card_list.filename), 'w') as outfile: json.dump(card_list.to_dict(), outfile)
Attributes: normal_cards: 通常札 trump_cards: 切札 extra_cards: 追加札・毒 """ def __init__(self, normal_cards, trump_cards, extra_cards=None): # TODO: 追加札はカードから得る(引数で与えない) self.normal_cards = normal_cards self.trump_cards = trump_cards if extra_cards is None: self.extra_cards = [] else: self.extra_cards = extra_cards def __str__(self): return str(self.normal_cards + self.trump_cards) card_list = CardList() # ウツロのかけら初期デッキ utsuro_no_kakera_1 = Deck( [card_list[Goddess.UTSURO_HAJIMARI][0][0][i][0] for i in range(7)], [card_list[Goddess.UTSURO_HAJIMARI][0][1][i][0] for i in range(3)]) # ホノカのかけら初期デッキ honoka_no_kakera_1 = Deck( [card_list[Goddess.HONOKA_HAJIMARI][0][0][i][0] for i in range(7)], [card_list[Goddess.HONOKA_HAJIMARI][0][1][i][0] for i in range(3)])
def __init__(self, name): self.name = name self.card_list = CardList()