Weil die topCard 19 auch in der Doku vorkommt, könnte das zwar jetzt ein Copy&Paste-Fehler sein, aber trotzdem der Einwand: 19 ist KreuzBube, also sicher keine 7.
Das merke ich an, weil ich auch beim Kommunizieren mit dem Server komische Missverständnisse habe, die ich mir nicht erklären kann.
Auf meiner Bot-Seite sieht alles soweit in Ordnung aus (ich habe zwei Bots "A" und "B" mit jeweiliger Eingabe vom Server "<<<" und Antworten ">>>"). Die Ausgabe sieht so aus: (Achtung: Ausgabe ist nicht JSON, sondern ein Python dict... Die Kommunikation mit dem Server benutzt aber das richtige Format mit " statt ', true statt True, usw.)
Auf der Server-Seite sieht das so aus:Code:A <<< {'status': 'okay', 'sendName': True} A >>> {'status': 'okay', 'name': 'A'} A <<< {'status': 'okay', 'name': 'A', 'setName': True} B <<< {'status': 'okay', 'sendName': True} B >>> {'status': 'okay', 'name': 'B'} B <<< {'status': 'okay', 'name': 'B', 'setName': True} A <<< {'status': 'okay', 'gameStart': True} B <<< {'status': 'okay', 'gameStart': True} A <<< {'status': 'okay', 'cardsLeft': 7, 'skipped': False, 'turnOf': 'A'} B <<< {'status': 'okay', 'cardsLeft': 7, 'skipped': False, 'turnOf': 'A'} A <<< {'hand': [4, 7, 21, 19, 31, 27, 26], 'drawTwoCards': False, 'status': 'okay', 'wishedColor': -1, 'cardsLeft': 7, 'skipped': False, 'topcard': 0} A [*] Top card "♠Pik 7 (#0)". A [*] Playing card "♣Kreuz Bube (#19)". A wishing color 1 A >>> {'status': 'turn', 'wishedColor': 1, 'skipped': False, 'selectedCard': 19, 'name': 'A'} A <<< {'status': 'okay', 'cardsLeft': 7, 'skipped': False, 'turnOf': 'B'} B <<< {'status': 'okay', 'cardsLeft': 7, 'skipped': False, 'turnOf': 'B'} B <<< {'hand': [20, 23, 29, 8, 28, 17, 13], 'drawTwoCards': False, 'status': 'okay', 'wishedColor': 1, 'cardsLeft': 7, 'skipped': False, 'topcard': 19} B [*] Top card "♣Kreuz Bube (#19)". B [*] Playing card "♦Karo 10 (#13)". B >>> {'status': 'turn', 'wishedColor': -1, 'skipped': False, 'selectedCard': 13, 'name': 'B'} B <<< {'drawedCards': 15, 'status': 'error'} B [*] Drawing punishment card "♣Kreuz 10 (#15)". A <<< {'status': 'okay', 'cardsLeft': 6, 'skipped': False, 'turnOf': 'A'} B <<< {'status': 'okay', 'cardsLeft': 6, 'skipped': False, 'turnOf': 'A'}
Da werden völlig falsche Karten angezeigt. Mich wundert auch, dass sich Spieler A trotz angeblicher Kreuz Ass (vom Bot wurde aber ein Bube gespielt!) eine Farbe wünschen darf. Warum Spieler B danach eine Strafkarte bekommt, kann ich nicht nachvollziehen.Code:[#] Ein Spieler hat sich verbunden![#] Ein Spieler hat sich verbunden! [#] Zug von Spieler A [#] Spieler A legt die Karte Kreuz Ass [#] Spieler A wünscht sich die Farbe Karo [#] Zug von Spieler B [!] Spieler B erhält eine Strafkarte! [#] Zug von Spieler A [!] Spieler A erhält eine Strafkarte! [#] Zug von Spieler B [!] Spieler B erhält eine Strafkarte! [#] Zug von Spieler A [#] Spieler A legt die Karte Herz König
Was mir am Protokoll auch nicht gefällt ist, dass den anderen Spielern scheinbar nicht mitgeteilt wird, was die anderen Spieler machen. Angenommen wir hätten drei Spieler, Spieler 1 ist dran, spielt, Spieler 2 und 3 spielen -- Spieler 1 ist nun wieder dran und sieht wohl an topCard, was Spieler 3 gelegt hat. Aber was hat Spieler 2 gelegt? Diese Information ist wichtig, wenn man analysieren möchte, welche Karten die Gegner überhaupt noch auf der Hand haben können. Außerdem ist zu Spielbeginn nicht klar, wie viele Spieler (und mit welchen Namen) im Spiel sind. Das erfährt man scheinbar auch erst nach und nach, wenn man eine Runde gespielt hat und der Server jedem Spieler mal einen Zug gegeben hat.
Weitere Anmerkungen:
(1) Der Server mag es glaube ich nicht, wenn man seine Nachrichten so mit Zeilenumbrüchen formatiert, wie das in der Dokumentation beschrieben wird. Das ist am Anfang etwas verwirrend, wenn der Server dann die (eigentlich korrekten) JSON-Nachrichten ablehnt.
(2) http://en.bab.la/conjugation/english/draw