Ich komme beim Programmieren nich weiter :/... es soll ein quartett programmiert werden. bis jetzt habe ich es hinbekommen es für 2 spieler zu programmieren (es gibt hier ja noch den talon und jeder spieler erhält 8 karten), jedoch bekomme ich es irgendwie nicht auf die reihe meinen fehler beim anfang der bedingungen für mehrere spieler richtig hinzubekommen.
ich habe eine liste mit allen karten die bereits gemischt sind ---> mixed_cards
und ich habe eine "große" liste player_cards in die alle listen (also alle Kartenhände der spieler) angelegt werden sollen.
Ich will also je nach eingabe des Spielers so viele listen erstellen.. das hab ich auch soweit glaube ich hinbekommen.
Mein problem ist: wie bekomme ich es hin mit einer schleife, dass mir quasi immer eine karte in eine "kartenhand" also einzelne list ausgeteilt wird
wenn es 4 spieler sind ja gleichmäßig die karten auf liste mit index 0 - 3 aufzuteilen und dann die schleife so lang durchlaufen zu lassen bis in mixed_cards keine Karte bzw. kein Element mehr enthalten ist?
mein bisheriger Code:
Code: Alles auswählen
from random import shuffle
activ_player = 0
player_before = 1
players = 3
player_cards = []
talon = []
index_cards = [31]
cards = ['a1', 'a2', 'a3', 'a4',
'b1', 'b2', 'b3', 'b4',
'c1', 'c2', 'c3', 'c4',
'd1', 'd2', 'd3', 'd4',
'e1', 'e2', 'e3', 'e4',
'f1', 'f2', 'f3', 'f4',
'g1', 'g2', 'g3', 'g4',
'h1', 'h2', 'h3', 'h4']
mixed_cards = cards.copy()
shuffle(mixed_cards)
next_talon_card = 11
def check_quartet(cards):
for letter in ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']:
counter = 0
# Karten mit "letter" suchen
for card in cards:
if letter in card:
counter += 1
if counter == 4:
print("Quartett gefunden: " + letter)
# Karten mit "letter" entfernen/ablegen
for num in range(1, 5):
card = letter + str(num)
cards.remove(card)
for i, pcards in enumerate(player_cards):
pcards.sort() #Karten werden nach Zeichen sortiert
print("Suche nach Quratetts für Spieler %d" % i)
check_quartet(pcards)
print(pcards)
if players == 2:
player_cards.append(mixed_cards[0:10])
player_cards.append(mixed_cards[10:20])
talon = mixed_cards[20:32]
while len(player_cards[0] )!= 0 or len(player_cards[1]) != 0:
print("Spieler", activ_player, "hat die Karten: ")
print(player_cards[activ_player])
lookforcard = input("Geben Sie die gesuchte Karte ein: ")# Hier wird die Karte, die beim Gegenspieler "gesucht" werden soll eingegeben
if lookforcard in player_cards[player_before]:
player_cards[activ_player].append(lookforcard)
player_cards[player_before].remove(lookforcard)
player_cards[activ_player].sort()
check_quartet(player_cards[activ_player])
print("Spieler", activ_player, "hat die Karten: ")
print(player_cards[activ_player])
print("Glückwunsch, dein Gegner hat die gewünschte Karte.")
player_before = (player_before + 1) % 2
activ_player = (activ_player + 1) % 2
if len(player_cards[0]) == 0:
print("Spieler 0 hat gewonnen")
elif len(player_cards[1]) == 0:
print ("Spieler 1 hat gewinnen.")
else:
print("Leider nichts gefunden. Ziehe eine Karte!")
player_cards[activ_player].append(talon[next_talon_card])
del talon[next_talon_card]
player_cards[activ_player].sort()
check_quartet(player_cards[activ_player])
print("Spieler", activ_player, "hat die Karten: ")
print(player_cards[activ_player])
player_before = (player_before + 1) % 2
activ_player = (activ_player + 1) % 2
next_talon_card= next_talon_card - 1
if len(player_cards[0]) == 0:
print("Spieler 0 hat gewonnen")
elif len(player_cards[1]) == 0:
print ("Spieler 1 hat gewinnen.")
elif players > 2:
(x, y ) = divmod(32, players) # x sind die karten , y der rest
for q in range(x):
player_cards([]) # so viele Listen einfügen, wie es spieler gibt
for a in range (0, players):
player_cards[a].append(mixed_cards(x))
a = a + 1
print (spread_cards.player_cards[0])