2021-01-06 16:57:51 +01:00
|
|
|
"""main module"""
|
|
|
|
|
|
|
|
import random
|
|
|
|
import clean_input
|
|
|
|
|
|
|
|
|
|
|
|
# Game
|
|
|
|
|
|
|
|
def central_function():
|
|
|
|
''' does everything, keeps order'''
|
|
|
|
|
|
|
|
active = 0 # contains index of the active player
|
|
|
|
|
2021-01-11 16:49:05 +01:00
|
|
|
card_stack, players_with_cards, players = initialize()
|
|
|
|
# print(card_stack)
|
|
|
|
# print(str(len(card_stack)))
|
|
|
|
#
|
|
|
|
# print(players_with_cards)
|
|
|
|
# print(str(len(players_with_cards)))
|
|
|
|
#
|
|
|
|
# print(players)
|
|
|
|
|
|
|
|
#while deckP1 and deckP2 and deckP3 not empty:
|
|
|
|
# round(..., players_with_cards, players)
|
2021-01-06 17:12:36 +01:00
|
|
|
# TO DO implement active_player rotation
|
2021-01-06 16:57:51 +01:00
|
|
|
|
|
|
|
|
|
|
|
def round(..., players_with_cards, players):
|
|
|
|
'''structures one round in the game'''
|
|
|
|
|
2021-01-06 17:02:34 +01:00
|
|
|
while player_request in deck_of_player:
|
|
|
|
choose(..., players_with_cards, players)
|
2021-01-06 16:57:51 +01:00
|
|
|
|
|
|
|
|
|
|
|
def choose(..., players_with_cards, players):
|
|
|
|
"""active player chooses another player from whom to steal a card"""
|
|
|
|
|
|
|
|
players_without_active = players.pop(active_player)
|
|
|
|
print('Folgende Spieler stehen zur Verfügung:')
|
|
|
|
print(players_without_active)
|
2021-01-06 17:02:34 +01:00
|
|
|
# needs clean.io, chosen_player enthält den index in der players liste
|
2021-01-06 16:57:51 +01:00
|
|
|
chosen_player = players.index(input(
|
2021-01-06 17:02:34 +01:00
|
|
|
'Welchen Spieler möchtest du befragen?'))
|
|
|
|
player_request = input('Welche Karte möchtest du haben?') # TODO: needs clean.io dict magic
|
2021-01-06 16:57:51 +01:00
|
|
|
|
|
|
|
if player_request in players_with_cards[chosen_player]['cards_on_hand']:
|
|
|
|
steal(P1, P2)
|
|
|
|
else:
|
|
|
|
# end of round
|
|
|
|
if stack == exists:
|
2021-01-11 16:49:05 +01:00
|
|
|
# TODO: player.values + card_from_stack
|
2021-01-06 16:57:51 +01:00
|
|
|
break
|
|
|
|
|
|
|
|
|
|
|
|
def steal(P1, P2):
|
|
|
|
"""defines how the active players steals cards from chosen player """
|
2021-01-06 17:12:36 +01:00
|
|
|
# TODO: write steal function
|
2021-01-06 16:57:51 +01:00
|
|
|
|
|
|
|
def initialize():
|
|
|
|
"""
|
|
|
|
initializes stuff
|
|
|
|
:return:
|
|
|
|
"""
|
|
|
|
|
2021-01-11 16:49:05 +01:00
|
|
|
card_stack = []
|
2021-01-06 16:57:51 +01:00
|
|
|
players = []
|
|
|
|
players_with_cards = []
|
|
|
|
|
|
|
|
x = 0
|
|
|
|
for i in range(4):
|
|
|
|
for l in "abcdefgh":
|
|
|
|
d = {"id": x, "number": i, "letter": l}
|
2021-01-11 16:49:05 +01:00
|
|
|
card_stack.append(d)
|
2021-01-06 16:57:51 +01:00
|
|
|
x += 1
|
|
|
|
|
|
|
|
number_of_players = clean_input.io_int("Mit wie vielen Spielern wollen Sie spielen?")
|
|
|
|
number_of_players += 1 # Add also human player.
|
|
|
|
|
|
|
|
for i in range(number_of_players):
|
|
|
|
players.append(f"player{i}")
|
|
|
|
|
|
|
|
if len(players) == 2:
|
|
|
|
cards_per_player = 10
|
|
|
|
else:
|
2021-01-11 16:49:05 +01:00
|
|
|
cards_per_player = int(len(card_stack) // len(players))
|
2021-01-06 16:57:51 +01:00
|
|
|
|
|
|
|
for i in range(number_of_players): # Select cards for x players
|
|
|
|
cards_of_player = [] # Player deck
|
|
|
|
for j in range(cards_per_player): # Select ten cards
|
2021-01-11 16:49:05 +01:00
|
|
|
x = random.randint(0, len(card_stack) - 1) # Select one random card
|
|
|
|
selected_card = card_stack[x]
|
|
|
|
del card_stack[x] # Remove card from main card deck.
|
2021-01-06 16:57:51 +01:00
|
|
|
cards_of_player.append(selected_card)
|
|
|
|
|
|
|
|
# Add list of dicts (cards) to players
|
|
|
|
players_with_cards.append({"player": players[i], "cards_on_hand": cards_of_player})
|
|
|
|
|
2021-01-11 16:49:05 +01:00
|
|
|
return card_stack, players_with_cards, players
|
2021-01-06 17:12:36 +01:00
|
|
|
|
2021-01-11 16:49:05 +01:00
|
|
|
central_function()
|
2021-01-06 17:12:36 +01:00
|
|
|
'''
|
|
|
|
players_with_cards = [
|
|
|
|
{'player': 'player0', 'cards_on_hand': [{'id': 13, 'number': 1, 'letter': 'f'},
|
|
|
|
{'id': 26, 'number': 3, 'letter': 'c'},
|
|
|
|
{'id': 22, 'number': 2, 'letter': 'g'},
|
|
|
|
{'id': 10, 'number': 1, 'letter': 'c'},
|
|
|
|
{'id': 19, 'number': 2, 'letter': 'd'},
|
|
|
|
{'id': 31, 'number': 3, 'letter': 'h'},
|
|
|
|
{'id': 6, 'number': 0, 'letter': 'g'},
|
|
|
|
{'id': 9, 'number': 1, 'letter': 'b'},
|
|
|
|
{'id': 5, 'number': 0, 'letter': 'f'},
|
|
|
|
{'id': 15, 'number': 1, 'letter': 'h'}]
|
|
|
|
},
|
|
|
|
...]'''
|