def setup_method(self): path_to_current_file = os.path.realpath(__file__) current_directory = os.path.split(path_to_current_file)[0] self.json_path = os.path.join( current_directory, '../src/test_files/test-default-cards.json') self.deck = Deck(108) self.all_cards = {}
class TestDeck: def setup_method(self): self.card_1 = Card(card_color='blue', card_value=0, card_hex='#0000ff') self.card_2 = Card( card_color='green', card_value=5, card_hex='#aaabbb') self.card_3 = Card(card_color='blue', card_value=1, card_hex='#222ddd') self.card_4 = Card(card_color='red', card_hex='#555dda') self.card_5 = Card(card_color='yellow', card_value=8, card_hex='#7dd643') self.card_6 = Card(card_color='black', card_value='wild', card_hex='#000000') self.deck = Deck(max_deck_size=10, cards=[self.card_1, self.card_2, self.card_3, self.card_4, self.card_5, self.card_6]) def teardown_method(self): del self.card_1, self.card_2, self.card_3, self.card_4, self.card_5, self.card_6 del self.deck def test_deck_size(self): assert self.deck.size == 6 def test_deck_cards(self): count = 0 for x in range(self.deck.size): self.deck.draw() count += 1 assert count == 6 def test_deck_random_card(self): card = self.deck.draw_random() assert card.hex != ''
class TestJSON: def setup_method(self): path_to_current_file = os.path.realpath(__file__) current_directory = os.path.split(path_to_current_file)[0] self.json_path = os.path.join( current_directory, '../src/test_files/test-default-cards.json') self.deck = Deck(108) self.all_cards = {} def teardown_method(self): del self.json_path del self.deck del self.all_cards def test_json(self): with open(self.json_path, 'r') as card_defs: data = json.load(card_defs) # Retrieve all cards for card_color in data['cards']['colors']: print(f"{card_color} - " f"\n{data['cards']['colors'][card_color]['numbers']}" f"\n{data['cards']['colors'][card_color]['special']}") for card_value in data['cards']['colors'][card_color][ 'numbers']: self.deck.add_to_top( Card(card_color=card_color, card_value=card_value, card_hex=data['cards']['colors'][card_color] ['hex'])) self.all_cards['all_cards'] = [] for x in list(self.deck.deck): item = x.get_json() self.all_cards['all_cards'].append(item) assert len(self.all_cards['all_cards']) == 108
def setup_method(self): self.card_1 = Card(card_color='blue', card_value=0, card_hex='#0000ff') self.card_2 = Card( card_color='green', card_value=5, card_hex='#aaabbb') self.card_3 = Card(card_color='blue', card_value=1, card_hex='#222ddd') self.card_4 = Card(card_color='red', card_hex='#555dda') self.card_5 = Card(card_color='yellow', card_value=8, card_hex='#7dd643') self.card_6 = Card(card_color='black', card_value='wild', card_hex='#000000') self.deck = Deck(max_deck_size=10, cards=[self.card_1, self.card_2, self.card_3, self.card_4, self.card_5, self.card_6])
def game_loop(server): global current_player, game_deck, discard_pile, registered_cards register_cards() game_deck = Deck() discard_pile = Deck() game_deck.generate_default_deck( num_of_players=len(server.clients), card_definitions_file='../definitions/cards.json') print(f"Deck Size: {game_deck.size}") server.send_message( server_data.Data(content_type=SERV_MESSAGE, content_data=f'THE GAME HAS STARTED!', client=server.name)) for client in server.clients: while server.clients[client].hand_size() < 7: card = game_deck.draw() server.clients[client].add_to_hand(card) server.send_message(server_data.Data( content_type=SERV_MESSAGE, content_data= f'Given {server.clients[client].name}: {card.get_json()}', client=server.name), sock=server.clients[client].socket) print(f'Cards left in deck: {game_deck.size}') # Draw first card discard_pile.add_to_top(game_deck.draw()) print(f"Chosen Card - {discard_pile.get_top_card()}") server.send_message( server_data.Data( content_type=SERV_BROADCAST, content_data= f'Discard Pile: Top Card - {discard_pile.get_top_card()}')) # Get first player current_player = random.choice(list(server.clients.values())) print(f"First Player - {current_player.name}") server.send_message( server_data.Data( content_type=SERV_BROADCAST, content_data=f'The first player is {current_player.name}')) while not end_flag: time.sleep(1) clear_game(server)
class TestInfiniteDeck: def setup_method(self): self.random_picked_cards = {} self.deck_obj = Deck(infinite_deck=True) def teardown_method(self): del self.random_picked_cards del self.deck_obj def test_draw_1000_cards(self): for x in range(1000): card = self.deck_obj.draw() try: self.random_picked_cards[card.id] += 1 except KeyError: self.random_picked_cards[card.id] = 1 counter = 0 for item in self.random_picked_cards.values(): counter += item assert counter == 1000
def setup_method(self): self.random_picked_cards = {} self.deck_obj = Deck(infinite_deck=True)
def __init__(self, socket, name, hand: Optional[List[Card]] = None): super().__init__(socket, name) self._hand = hand if hand is not None else Deck()
import json from src.game.card import Card from src.game.deck import Deck json_path = 'definitions/cards.json' json_path_spec = 'definitions/card-specials.json' deck = Deck() all_cards = {} with open(json_path, 'r') as card_defs: data = json.load(card_defs) # Retrieve all cards for card_color in data['cards']['colors']: print(f"{card_color} - " f"\n{data['cards']['colors'][card_color]['values']}") for card_number in data['cards']['colors'][card_color]['values']: deck.add_to_top(Card(card_color=card_color, card_value=card_number, card_hex=data['cards']['colors'][card_color]['hex'])) all_cards['all_cards'] = [] for x in list(deck.deck): item = x.get_json() all_cards['all_cards'].append(item) with open('test_files/test-all-cards.json', 'w') as out_file: json.dump(all_cards, out_file) print('\n'.join(x.get_json_dump() for x in list(deck.deck))) print(f'Deck Size: {len(deck.deck)}')
def clear_game(server): global end_flag end_flag = False for client in server.clients: server.clients[client].hand = Deck()