added doctest file and added end_screen() after the_winner_is()
This commit is contained in:
parent
897f9d8375
commit
a70f219824
19
quartett.py
19
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()
|
||||
|
|
|
@ -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'
|
Loading…
Reference in New Issue