diff --git a/quartett.py b/quartett.py index 2c11444..9c1b1a8 100644 --- a/quartett.py +++ b/quartett.py @@ -71,7 +71,6 @@ def round(card_stack, players_with_cards, players, active, complete_card_stack, switch = True while switch: - # print(active) players_without_active = copy.copy(players) players_without_active.pop(active) @@ -106,7 +105,6 @@ def round(card_stack, players_with_cards, players, active, complete_card_stack, drop_cards(players_with_cards, all_quartets, active) time.sleep(total_time) - switch = False else: # AI players @@ -160,10 +158,6 @@ def round(card_stack, players_with_cards, players, active, complete_card_stack, switch = False - # print("AI deck:", players_with_cards[active]) - # print("AI choose:", chosen_player) - # print("AI card wish", player_request) - def pretty_print_deck(players_with_cards, player): """ @@ -192,6 +186,7 @@ def steal(active, chosen_player, players_with_cards, player_request): :param player_request: wanted card :return: None """ + if active == 0: print(f"player{chosen_player} hat die Karte, die du " "haben möchtest und sie wandert in dein Deck.") @@ -350,8 +345,15 @@ def the_winner_is(players_with_cards, players): # to print all the players' names who have won for i in range(len(winners)): if winners[i] == temp: - print(f"{players[i]} hat das Spiel gewonnen!") + if players[i] == "player0": + print("Du hast das Spiel gewonnen!") + else: + print(f"{players[i]} hat das Spiel gewonnen!") + end_screen() + + +def end_screen(): clean_input.io_str("Möchten Sie das Spiel beenden oder ein neues Spiel starten?" "Drücken Sie 'q' zum Beenden oder 'r'," "um ein neues Spiel zu starten...", []) @@ -359,4 +361,7 @@ def the_winner_is(players_with_cards, players): # Call central_function() only if quartett.py is the main module if __name__ == "__main__": + # remove end_screen() from the_winner_is() if you want to run tests + # import doctest + # doctest.testfile("tests") central_function() diff --git a/tests b/tests new file mode 100644 index 0000000..670f7f1 --- /dev/null +++ b/tests @@ -0,0 +1,148 @@ +>>> import quartett as q +>>> import clean_input as c + + +>>> players_with_cards = [{'player': 'player0', 'cards_on_hand': [{'id': '1', 'number': '0', 'letter': 'b'}, {'id': '30', 'number': '3', 'letter': 'g'}, {'id': '7', 'number': '0', 'letter': 'h'}, {'id': '9', 'number': '1', 'letter': 'b'}, {'id': '5', 'number': '0', 'letter': 'f'}, {'id': '24', 'number': '3', 'letter': 'a'}, {'id': '13', 'number': '1', 'letter': 'f'}, {'id': '2', 'number': '0', 'letter': 'c'}, {'id': '6', 'number': '0', 'letter': 'g'}, {'id': '16', 'number': '2', 'letter': 'a'}], 'quartet': 0}, +... {'player': 'player1', 'cards_on_hand': [{'id': '27', 'number': '3', 'letter': 'd'}, {'id': '12', 'number': '1', 'letter': 'e'}, {'id': '15', 'number': '1', 'letter': 'h'}, {'id': '17', 'number': '2', 'letter': 'b'}, {'id': '8', 'number': '1', 'letter': 'a'}, {'id': '26', 'number': '3', 'letter': 'c'}, {'id': '31', 'number': '3', 'letter': 'h'}, {'id': '21', 'number': '2', 'letter': 'f'}, {'id': '29', 'number': '3', 'letter': 'f'}, {'id': '11', 'number': '1', 'letter': 'd'}, {'id': '20', 'number': '2', 'letter': 'e'}], 'quartet': 1}, +... {'player': 'player2', 'cards_on_hand': [{'id': '23', 'number': '2', 'letter': 'h'}, {'id': '19', 'number': '2', 'letter': 'd'}, {'id': '18', 'number': '2', 'letter': 'c'}, {'id': '0', 'number': '0', 'letter': 'a'}, {'id': '22', 'number': '2', 'letter': 'g'}, {'id': '3', 'number': '0', 'letter': 'd'}, {'id': '14', 'number': '1', 'letter': 'g'}, {'id': '25', 'number': '3', 'letter': 'b'}, {'id': '4', 'number': '0', 'letter': 'e'}, {'id': '28', 'number': '3', 'letter': 'e'}], 'quartet': 2}] + + +1. pretty_print_deck(players_with_cards, player) + +Positivtests: + +>>> q.pretty_print_deck(players_with_cards, 0) +Dein Deck: ['0b', '3g', '0h', '1b', '0f', '3a', '1f', '0c', '0g', '2a'] + +>>> q.pretty_print_deck(players_with_cards, 1) is None +True + +>>> q.pretty_print_deck(players_with_cards, 2) is None +True + +Negativtests: + +>>> q.pretty_print_deck("player", 0) +Traceback (most recent call last): +... +TypeError: string indices must be integers + +>>> q.pretty_print_deck([0], 1) +Traceback (most recent call last): +... +IndexError: list index out of range + +--- + +2. steal(active, chosen_player, players_with_cards, player_request) + +Positivtests: + +>>> active = 1 +>>> chosen_player = 2 +>>> player_request = {'id': '3', 'number': '0', 'letter': 'd'} +>>> q.steal(active, chosen_player, players_with_cards, player_request) +player2 hat die Karte, die player1 haben möchte und sie wandert in sein Deck. + +>>> active = 0 +>>> chosen_player = 1 +>>> player_request = {'id': '27', 'number': '3', 'letter': 'd'} +>>> q.steal(active, chosen_player, players_with_cards, player_request) +player1 hat die Karte, die du haben möchtest und sie wandert in dein Deck. + +>>> active = 2 +>>> chosen_player = 1 +>>> player_request = {'id': '12', 'number': '1', 'letter': 'e'} +>>> q.steal(active, chosen_player, players_with_cards, player_request) +player1 hat die Karte, die player2 haben möchte und sie wandert in sein Deck. + +Negativtests: + +>>> active = 2 +>>> chosen_player = 1 +>>> player_request = {'id': '12', 'number': '1', 'letter': 'k'} +>>> q.steal(active, chosen_player, players_with_cards, player_request) +Traceback (most recent call last): +... +ValueError: {'id': '12', 'number': '1', 'letter': 'k'} is not in list + +>>> active = 2 +>>> chosen_player = 1 +>>> player_request = {} +>>> q.steal(active, chosen_player, players_with_cards, player_request) +Traceback (most recent call last): +... +ValueError: {} is not in list + +--- + +3. drop_cards_help(p, all_quartets) + +Positivtests: + +>>> p = players_with_cards[0] +>>> for i in range(4): +... p["cards_on_hand"][i]["letter"] = "b" +>>> all_quartets = [] +>>> q.drop_cards_help(p, all_quartets) +Du legst das b-Quartett ab... + +>>> p = players_with_cards[1] +>>> for i in range(4): +... p["cards_on_hand"][i]["letter"] = "c" +>>> q.drop_cards_help(p, all_quartets) +player1 legt das c-Quartett ab... + +>>> p = players_with_cards[2] +>>> for i in range(4): +... p["cards_on_hand"][i]["letter"] = "d" +>>> q.drop_cards_help(p, all_quartets) +player2 legt das d-Quartett ab... + +Negativtests: + +>>> p = players_with_cards[0] +>>> q.drop_cards_help(p, all_quartets) is None +True + +>>> p = players_with_cards[1] +>>> q.drop_cards_help(p, all_quartets) is None +True + +--- + +# remove end_screen() from the_winner_is to test it +4. the_winner_is(players_with_cards, players) + +Positivtests: + +>>> players_with_cards = [{'player': 'player0', 'cards_on_hand': [{'id': '1', 'number': '0', 'letter': 'b'}, {'id': '30', 'number': '3', 'letter': 'g'}, {'id': '7', 'number': '0', 'letter': 'h'}, {'id': '9', 'number': '1', 'letter': 'b'}, {'id': '5', 'number': '0', 'letter': 'f'}, {'id': '24', 'number': '3', 'letter': 'a'}, {'id': '13', 'number': '1', 'letter': 'f'}, {'id': '2', 'number': '0', 'letter': 'c'}, {'id': '6', 'number': '0', 'letter': 'g'}, {'id': '16', 'number': '2', 'letter': 'a'}], 'quartet': 0}, +... {'player': 'player1', 'cards_on_hand': [{'id': '27', 'number': '3', 'letter': 'd'}, {'id': '12', 'number': '1', 'letter': 'e'}, {'id': '15', 'number': '1', 'letter': 'h'}, {'id': '17', 'number': '2', 'letter': 'b'}, {'id': '8', 'number': '1', 'letter': 'a'}, {'id': '26', 'number': '3', 'letter': 'c'}, {'id': '31', 'number': '3', 'letter': 'h'}, {'id': '21', 'number': '2', 'letter': 'f'}, {'id': '29', 'number': '3', 'letter': 'f'}, {'id': '11', 'number': '1', 'letter': 'd'}, {'id': '20', 'number': '2', 'letter': 'e'}], 'quartet': 1}, +... {'player': 'player2', 'cards_on_hand': [{'id': '23', 'number': '2', 'letter': 'h'}, {'id': '19', 'number': '2', 'letter': 'd'}, {'id': '18', 'number': '2', 'letter': 'c'}, {'id': '0', 'number': '0', 'letter': 'a'}, {'id': '22', 'number': '2', 'letter': 'g'}, {'id': '3', 'number': '0', 'letter': 'd'}, {'id': '14', 'number': '1', 'letter': 'g'}, {'id': '25', 'number': '3', 'letter': 'b'}, {'id': '4', 'number': '0', 'letter': 'e'}, {'id': '28', 'number': '3', 'letter': 'e'}], 'quartet': 2}] + +>>> players = ["player0", "player1", "player2"] +>>> q.the_winner_is(players_with_cards, players) +player2 hat das Spiel gewonnen! + +>>> players_with_cards[1]["quartet"] = 2 +>>> q.the_winner_is(players_with_cards, players) +player1 hat das Spiel gewonnen! +player2 hat das Spiel gewonnen! + +>>> players_with_cards[0]["quartet"] = 2 +>>> q.the_winner_is(players_with_cards, players) +Du hast das Spiel gewonnen! +player1 hat das Spiel gewonnen! +player2 hat das Spiel gewonnen! + +Negativtests: + +>>> q.the_winner_is(players_with_cards[0], players) +Traceback (most recent call last): +... +KeyError: 0 + +>>> q.the_winner_is(players_with_cards) +Traceback (most recent call last): +... +TypeError: the_winner_is() missing 1 required positional argument: 'players' \ No newline at end of file