コード例 #1
0
 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 = {}
コード例 #2
0
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 != ''
コード例 #3
0
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
コード例 #4
0
    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])
コード例 #5
0
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)
コード例 #6
0
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
コード例 #7
0
 def setup_method(self):
     self.random_picked_cards = {}
     self.deck_obj = Deck(infinite_deck=True)
コード例 #8
0
ファイル: player.py プロジェクト: DuckBoss/AtleastOne-Server
 def __init__(self, socket, name, hand: Optional[List[Card]] = None):
     super().__init__(socket, name)
     self._hand = hand if hand is not None else Deck()
コード例 #9
0
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)}')
コード例 #10
0
def clear_game(server):
    global end_flag
    end_flag = False
    for client in server.clients:
        server.clients[client].hand = Deck()