PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Official F-H Coding Contest 2017



Barny
21.03.2017, 16:15
Free-Hack Coding Contest Frühjahr 2017


Hallo und herzlich willkommen!

Ich möchte euch herzlich einladen am diesjährigen Coding-Contest 2017 teilzunehmen! Dieser Contest richtet sich insbesondere auch an alle Coding-Anfänger! Also wenn du dich hier gerade angesprochen gefühlt hast, dann hör nicht auf zu lesen! Bei diesem Contest hat jeder die Chance zu gewinnen!

Die Aufgabe:
Die Aufgabe besteht darin, einen voll netzwerkfähigen Bot für das Spiel "Mau Mau" zu programmieren. Ziel ist es, dass später die geschriebenen Bots, im K.O.-System, gegeneinander antreten können. Da bei "Mau Mau" auch viel Glück eine Rolle spielt, kann hier prinzipiell jeder gewinnen.

Kurzfassung:
Der Bot verbindet sich zu einem Server (im nachfolgenden "Dealer" genannt) und erhält von diesem seine Handkarten und wird durch das Spiel geführt. Der Dealer kontrolliert die getätigten Züge und gibt zu jedem Zug Feedback. Die Kommunikation findet ausschließlich in JSON statt.
Dies muss euer Bot grob können:


Der Bot muss sich mit der Serveranwendung verbinden und authentifizieren können.
Der Bot wartet bis er am Zug ist und reagiert auf die aktuelle Spielsituation mit einem korrekten Zug.
Der Bot stellt selbstständig fest, ob er eine Karte legen kann und zieht eine Karte, wenn dies nicht der Fall ist.
Der Bot setzt eine Runde aus, wenn dies der Spielverlauf erfordert (beispielsweise wurde eine 8 gelegt).
Der Bot zieht selbstständig zwei Karten, wenn dies der Spielverlauf erfordert (beispielsweise wurde eine 7 gelegt).
Der Bot verwaltet über das gesamte Spiel seine Karten selber.

Die Serveranwendung steht euch während der Entwicklungszeit als Download zur Verfügung, damit ihr nach Belieben alles offline ausprobieren könnt! Die Anwendung ist in Java geschrieben und sollte damit jeder ohne Probleme auf seinem Rechner zum Laufen kriegen. Ihr findet die Anwendung und alle Details zum Contest als Git-Repo hier:

https://github.com/Barny-Blog/Free-Hack-Coding-Contest

In diesem Repository befindet sich mit Absicht nur eine JAR, da der Code nach Abschluss des Contests erst von uns in diesem Repository veröffentlicht wird. Des Weiteren befindet sich hier auch eine vollständige Dokumentation zum Contest und zur Aufgabe! Da ich nicht alles doppelt schreiben möchte, könnt ihr euch falls ihr Interesse habt dort mehr Informationen holen. :)

Die Programmiersprachen:
Hierbei gibt es keine Einschränkungen durch Vorgaben von unserer Seite! Die Sprache sollte lediglich mit einfachen Socketverbindungen klarkommen. Der Rest liegt bei euch! ;)

Der Zeitraum:
Der Contest startet heute (21.03.2017) und geht bis einschließlich dem 22.04.2017. Bis dahin sollten eure Bots funktionsfähig sein. :)

Der Ablauf:
Ihr habt bis zum oben genannten Zeitpunkt Zeit eure Bots fertigzustellen. Die Auswertung findet dann am nachfolgenden Tag (23.04.2017, Uhrzeit wird noch bekannt gegeben) statt. Hierbei lasst ihr euren Bot von Zuhause aus laufen und spielt gegen andere Entwickler. Zur Auswertung wird exakt die Serveranwendung verwendet mit der ihr euren Bot entwickelt habt und die euch ab heute zur Verfügung steht. Wer gegen wen spielen wird, wird im Laufe des Contests bekannt gegeben. Ein "Match" besteht aus 11 Spielen. Wer die meisten Spiele davon gewinnt, der gewinnt das Match und kommt eine Runde weiter. Der Verlierer scheidet aus. Es ergibt sich daraus in jedem Fall einen Gesamtsieger.

Die Preise:
Natürlich gibt es auch was zu gewinnen! Der Gewinner erhält nachfolgenden Preis:

25€ Amazon Gutschein
Nickname in gewuenschter Farbe (darf nicht belegt sein)
Coding Contest Winner Benutzertitel
Free-Hack Mail-Adresse mit einer Weiterleitung auf die eigene, private Mailadresse

Ihr seht also, dass sich das Mitmachen lohnt! ;)

Achtung: Die Preisausschüttung findet nur statt, wenn der Sieger seinen verwendeten Code auf unserem Git-Server veröffentlicht, damit jeder etwas davon hat!

Anmerkungen:

Bei diesem Contest soll der Spaß und das Lernen im Vordergrund stehen! Demnach ist es auch erlaubt zum Thema Threads zu eröffnen und darüber zu sprechen! Es sollte sich jedoch jeder darüber im Klaren sein, dass der Gewinn nicht geteilt werden kann.
Die Serveranwendung wurde intensiv auf Fehler von uns getestet. Dennoch kann sich immer mal was einschleichen. Findet ihr also einen Fehler, dann bitte ich euch, mir dies mitzuteilen. Die Fehler werden dann noch vor der Auswertung behoben! Alle Änderungen werden aber auch in diesem Thread bekannt gegeben, damit jeder weiterhin die gleichen Chancen hat.
Der Code der Serveranwendung wurde von mir obfuscated. Wenn ihr also Reversen wollt, dann könnt ihr das tun. Ich versichere euch, dass es einfacher (und vor allem fairer den anderen gegenüber) ist, wenn ihr den Bot selber schreibt. Des Weiteren habe ich den eigentlichen Botcode, den ich zur Entwicklung verwendet habe, entfernt. Der Bot ist demnach rotzeblöd. :D
Ansprechpartner bei diesem Contest ist prinzipiell das FH-Team. Sollte also etwas unklar sein, dann meldet euch! Auch wir machen das nicht regelmäßig und Fehler oder Missverständnisse können vorkommen!


Ich möchte alle Leute die teilnehmen möchten bitten dem FH-Team dies zeitnah mitzuteilen! Dies ist zwingend erforderlich, weil vor der Auswertung die Spieler zugeordnet werden müssen.

Ansonsten möchte ich an dieser Stelle allen viel Spaß und Erfolg wünschen!

Viele Grüße,

Barny

Nachträglich hinzugefügte Informationen:

Damit der Server eure gesendeten Nachrichten verarbeitet, müsst ihr diese mit einem abschließenden Linebreak absenden. Dies habe ich auch nun der Doku in Git hinzugefügt. Beispiel:

sendMessage("bliblablub meine nachricht\n")
Am 23.03.2017 wurde eine neue Version der Serveranwendung ins Git-Repo gepusht. Gefixt worden sind kleiner Fehler die teilweise Netzwerkprobleme verursacht haben. (Fehler gemeldet von Leange (https://free-hack.com/member.php?47648-Leange))
Am 24.03.2017 wurde eine neue version der Serveranwendung ins Git-Repo gepusht. Gefixt worden sind kleinere Fehler die teilweise Netzwerkprobleme verursacht haben. Außerdem wurde das parsen der übergebenen Parameter überarbeitet. Es wurden also nur die Bedienung angepasst. (Fehler gemeldet von Easysurfer (https://free-hack.com/member.php?42972-Easysurfer) )
Am 26.03.2017 wurde eine neue Version der Serveranwendung ins Git-Repo gepusht. Der Server spuckt in seinem Log nun die korrekten Karten aus. Außerdem sendet der Server vor jedem Zug eines Spielers nun die aktuelle "topCard" mit raus. Somit kann man immer wissen, was die aller erste Karte des Spiels war. (Gemeldet von blackberry (https://free-hack.com/member.php?43591-blackberry) )
Am 27.03.2017 wurde eine neue Version der Serveranwendung ins Git-Repo gepusht. Gefixt worden ist ein kleiner Fehler, der durch das Release vom 26.03.2017 enstanden ist. Bitte unbedingt die neue Version herunterladen! Entschuldigt bitte dieses Hin und Her... Im mom alles nen bisschen stressig bei mir...
Am 28.03.2017 wurde eine neue Version der Serveranwendung ins Git-Repo gepusht. Es wurde nen bisschen an der Performance geschraubt. Bitte die aktualisierte Version verwenden!
Anmerkung vom 03.04.2017: Liegt als erste Karte die aufgedeckt wird ein Bube, so ist die Jokerfunktion vertan. Das bedeutet, dass auf diese Farbe entweder die Farbe des Buben oder ein Bube selber gelegt werden darf. Es wird sich weder eine Farbe automatisch gewünscht und vorgegeben, noch darf der nächste Spieler sich eine Farbe wünschen. Das heißt, es muss die Farbe oder das Bild bedient werden. Ich habe diesen Umstand zusätzlich in der Dokumentation vermerkt. (Angemerkt von Easysurfer (https://free-hack.com/member.php?42972-Easysurfer))


----------------------------------------
Derzeit angemeldete Teilnehmer:
- Dailox
(https://free-hack.com/member.php?78756-Dailox)- Leange (https://free-hack.com/member.php?47648-Leange)
- cruzz (https://free-hack.com/member.php?80543-cruzz)
- zaub9rwald (https://free-hack.com/member.php?45304-zaub9rwald)
- lrg0
(https://free-hack.com/member.php?75382-lrg0)- Easysurfer (https://free-hack.com/member.php?42972-Easysurfer)
- wacked (https://free-hack.com/member.php?54497-wacked)
- blackberry (https://free-hack.com/member.php?43591-blackberry)

Dailox
21.03.2017, 20:24
Jo, ich mach mal mit :)!

Sehr coole Idee !

Leange
21.03.2017, 21:52
Ist der Spieler der nach ner 7 gezogen hat immer noch drann?

/e: und wie lange ist Zeit für nen Zug?

Jut4h.tm
22.03.2017, 00:18
Sry ich kann nicht lesen :-(

Barny
22.03.2017, 07:45
Ist der Spieler der nach ner 7 gezogen hat immer noch drann?

Guter Einwand. Ist derzeit nicht in der Dokumentation vermerkt und werde ich ergänzen. Damit du aber schonmal eine Antwort hast:
Wenn Spieler 1 eine 7 legt, dann ist Spieler 2 an der Reihe und wird mit nachfolgender Meldung zum Zug aufgefordert:


{
"status" : "okay",
"topCard" : 19,
"drawTwoCards" : true,
"skipped" : false,
"wishedColor" : -1
"cardsLeft" : 7,
"drawedCards" : [
4,
9
]
}

Der Server teilt dir die Karten mit, die du gezogen hast und dass du überhaupt Karten gezogen hast (oben rot markiert). Dann wartet er auf deinen Zug. Du bist also nachdem du gezogen hast dran.


/e: und wie lange ist Zeit für nen Zug?
Du hast alle Zeit der Welt für deinen Zug. Von mir aus lass dir deinen nächsten Zug noch von Google, Amazon und sonst wem berechnen.^^ Wenn der Server feststellt, dass du offline bist (IOException die geworfen wird) dann scheidest du aus dem Spiel aus und hast die Runde verloren.

Viele Grüße,

Barny

Leange
22.03.2017, 15:29
Jo kannst mich auch als angemeldet eintragen :)


Du hast alle Zeit der Welt für deinen Zug. Von mir aus lass dir deinen nächsten Zug noch von Google, Amazon und sonst wem berechnen.^^

Pff ich schreib nur den Clienten und spiel manuell! ;) ... JK

Leange

H4x0r007
22.03.2017, 15:36
Die Spiellogik sollte schon implementiert werden ;)

Barny
22.03.2017, 17:02
Wir wollen ja auch später deinen Code haben und veröffentlichen wenn du gewinnst. ;) Wär scheiße wenn dann rauskommt, dass du beschissen hast. :D

Bist eingetragen! ;)

zzurc
22.03.2017, 17:12
Bin dabei :D ... Habe grad ein bisschen rum gespielt. Bei mir funktioniert die auth nicht bzw. bekomme nichts vom Server zurück nachdem ich mich authentifiziert habe. Hat jemand d. gleiche Problem?

Barny
22.03.2017, 17:26
Der Server erwartet nach jeder Message von euch ein Linebreak. Das steht bisher noch nicht in der Doku, werde ich aber ergänzen.

Das kam bisher schon 1-2 Mal auf. Könnte das dein Problem lösen, cruzz?

Viele Grüße,

Barny

zzurc
22.03.2017, 17:30
@Barny ich habe grad nach java sockets gesucht und gesehen d. es so gemacht wird :D ... Also Ja! genau d. war mein Problem :D Danke jetzt läufts :)

Leange
22.03.2017, 17:40
http://fs5.directupload.net/images/170322/aazqgbht.png

Server stürzt fast immer ab wenn ich nachm connecten / während auth Client schließe. Noch nichts gesendet.
Manchma gehts dann bekomm ich nur "Spieler hat während der Authentifiierung die Verbindung geschlossen!".
Ist jetzt nich so wild, muss ich halt für jeden Test den Server neu starten, aber liegt nicht an mir oder?

Leange

Barny
22.03.2017, 17:47
Server stürzt fast immer ab wenn ich nachm connecten / während auth Client schließe. Noch nichts gesendet.
Manchma gehts dann bekomm ich nur "Spieler hat während der Authentifiierung die Verbindung geschlossen!".
Ist jetzt nich so wild, muss ich halt für jeden Test den Server neu starten, aber liegt nicht an mir oder?

Leange
Okay, ich habe eine Ahnung:
Das wird passieren, wenn du mehrere Runden am Stück spielen willst und die GUI verwendest. Ist eine Runde vorbei, dann muss derzeit der Server neugestartet werden. Ich werde mich im Laufe des Abends oder morgen drum kümmern. Sehe ich bisher nicht als schwerwiegend an, weil es keinen Einfluss auf das Spielgeschehen hat. Ist mir aber auch nen bisschen peinlich, weil H4x0r007 mich bereits vor einigen Tagen auf genau diesen Fehler hingewiesen hat und ich es schlicht und ergreifend vergessen habe. Ich kümmer mich drum!

Viele Grüße,

Barny

zaub9rwald
22.03.2017, 21:01
Würde auch gerne mitmachen, kann aber nicht versprechen, dass ich genug Zeit hab.
Falls das ein Problem darstellt, dann mich bitte nicht anmelden.

Barny
22.03.2017, 21:19
Ich trage dich erstmal ein. Falls es garnix wird bei dir, dann kannste ja Bescheid sagen. Geht ja eigentlich nur darum, dass wir grob wissen mit wie vielen Teilnehmern wir rechnen können

lrg0
23.03.2017, 06:58
Ich bin auch dabei




Der Server läuft nicht. Wo ist der Fehler?



[lrg0@fedora Downloads]$ java -jar FH_CodingContest.jar
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(Graphic sEnvironment.java:204)
at java.awt.Window.<init>(Window.java:536)
at java.awt.Frame.<init>(Frame.java:420)
at java.awt.Frame.<init>(Frame.java:385)
at javax.swing.JFrame.<init>(JFrame.java:189)
at de.maumau.c.a.<init>(Unknown Source)
at de.maumau.main.a.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Invocation Event.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.j ava:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessI mpl.doIntersectionPrivilege(ProtectionDomain.java: 80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 726)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:82)
[lrg0@fedora Downloads]$ java -jar MauMau.jar -FreeHackContest -port=1234
Error: Unable to access jarfile MauMau.jar
[lrg0@fedora Downloads]$ java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b14)
OpenJDK 64-Bit Server VM (build 25.121-b14, mixed mode)
[lrg0@fedora Downloads]$








edit:
habe es hinbekommen... der befehl im git ist nicht ganz richtig. und bei falscher eingabe von parametern beendet sich MauMau einfach ohne weitere ausgabe


java -jar FH_CodingContest.jar -MauMau

Barny
23.03.2017, 10:57
Der Server läuft nicht. Wo ist der Fehler?


Oracle sagt:


public class HeadlessException
extends UnsupportedOperationException (https://docs.oracle.com/javase/7/docs/api/java/lang/UnsupportedOperationException.html) Thrown when code that is dependent on a keyboard, display, or mouse is called in an environment that does not support a keyboard, display, or mouse.


Habe auch gelesen, dass dies oft bei virtuellen Maschinen auftritt. Überprüfe das einmal.

Führe das Programm stattdessen mit den in Git angegebenen Parametern aus.



java -jar FH_CodingContest.jar -MauMau
Der von dir genannte Parameter existiert nicht.
Auch die Ausführung mit falschen Parametern öffnet die Hilfe in der Konsole mit allen Einstellungsmöglichkeiten (Parametern) und beendet sich dann erst. Bei dir scheinen noch andere Probleme zu sein, die du evtl. bevor du anfängst mit entwickeln mal checken solltest. Du kannst dich gerne bei mir per PM deswegen melden! ;)

Die korrekten Parameter für den Contest sind:

-FreeHackContest -port=1234
Nicht das hier Missverständnisse aufkommen. Ich sehe aber gerade, dass der Dateiname in der GIT-Doku ein anderer ist als ich euch gegeben habe. Ich werde das anpassen.


ja ganz cool aber warum nichts themen bezogenes richtung it sicherheit ? :(
Wenn dieser Contest ordentlich abläuft, dann werden sicherlich noch welche folgen für die du gerne deine Ideen einbringen kannst. :) Ich persönlich hätte jetzt keine Idee^^
Die Wahl ist auf dieses Thema gefallen, weil...

auch Programmiereinsteiger mitmachen können.
das Thema nicht zu kompliziert ist.
nur elementare Dinge der Programmierung vorkommen.
prinzipiell jeder gewinnen kann, da auch der Faktor "Glück" eine große Rolle spielt.


Viele Grüße,

Barny

H4x0r007
23.03.2017, 11:24
Wenn dieser Contest ordentlich abläuft, dann werden sicherlich noch welche folgen für die du gerne deine Ideen einbringen kannst. :) Ich persönlich hätte jetzt keine Idee^^
Die Wahl ist auf dieses Thema gefallen, weil...

auch Programmiereinsteiger mitmachen können.
das Thema nicht zu kompliziert ist.
nur elementare Dinge der Programmierung vorkommen.
prinzipiell jeder gewinnen kann, da auch der Faktor "Glück" eine große Rolle spielt.


Ich würde auch sagen, dass das momentan der "Testlauf" ist. Dinge in Richtung IT-Sicherheit werden sicher irgendwann folgen.
Ich finde aber auch die aktuelle Coding-Challenge spannend, nachdem man (wenn man sich unterfordert fühlt) mehrere Engines bauen und die sie dann miteinander vergleichen kann. Juta.tm wollte glaub ich testweise sogar eine kleine KI schreiben.

s3rb31
23.03.2017, 17:57
ja ganz cool aber warum nichts themen bezogenes richtung it sicherheit ? :(

+1

Obfuscated? Nur JAR? Für mich hört sich dass so an, als ob der Contest in Wirklichkeit nur für fortgeschrittene User ist. Wie soll man denn so leicht eine Lücke zum definitiven Gewinnen finden? :>

Barny
23.03.2017, 19:50
Ich habe gerade eben eine neue Version des Servers hochgeladen. Bitte die aktuelle Version verwenden. Ihr findet sie im Git-Repo.

Gefixt worden sind nur ein paar kleinere Fehler die teilweise Netzwerkprobleme verursacht haben. Es hat also keinen Einfluss auf den Spielverlauf oder euren Bot.

Danke an alle die was gemeldet haben!

Viele Grüße,

Barny

J0hn.X3r
23.03.2017, 21:57
Ahoi,


ja ganz cool aber warum nichts themen bezogenes richtung it sicherheit ? :(

dazu wollte ich noch schnell etwas schreiben, denkt daran, dass es in erster Linie darum ging:




Bei diesem Contest soll der Spaß und das Lernen im Vordergrund stehen!


Das "Problem" aus unserer Sicht war, das wir weder einschaetzen konnten:
a) Wie viele sich ueberhaupt daran beteiligen moechten
b) Welche Aufgabe die groesste Zielgruppe erreicht

Wir haben aktuell lange nicht die gleichen Besucherzahlen wie damals, daher galt es erst einmal ein Event zu ueberlegen, welches auch mit "weniger" Teilnehmern stattfinden kann. Da es schwer einzuschaetzen war, wie viele ueberhaupt teilnehmen, sollte die Aufgabe moeglichst machbar sein, auch fuer Neulinge/Anfaenger und ich finde, da hat sich Barny etwas tolles ueberlegt :) Nochmal ein Dank an dieser Stelle dafuer :)

Der letzte Coding Contest (der ziemlich genau vor 7 Jahren statt fand - wie die Zeit vergeht..) wurde ja leider nicht ausgewertet, wenn ich das richtig in Erinnerung habe.

Wie H4x0r007 aber bereits sagte:




Ich würde auch sagen, dass das momentan der "Testlauf" ist. Dinge in Richtung IT-Sicherheit werden sicher irgendwann folgen.

Kann man das als eine Art "Testlauf" sehen, wie das bei euch ankommt.. gegen weitere Competitions, die dann in Richtung IT-Sicherheit oder Guerilla Fotowettbewerb (Reloaded :D) gehen, spricht absolut nichts - dafuer ist die Sektion ja da ;)

Vorschlaege sind seit 2008 hier gerne gesehen (https://free-hack.com/showthread.php?15964-Vorschlag-f%C3%BCr-einen-Wettbewerb) :)

Funk_Doc
25.03.2017, 13:17
Habs mal kurz mit Netcat probiert. Leider kann ich mich nicht authentifizieren. Was mach ich falsch?

sarex
25.03.2017, 14:01
@Funk_Doc also bei mir funkzt es mittels ncat http://www.directupload.net/file/d/4671/9xnq53lq_png.htm
gesendet habe ich {"status": "okay","name": "sarex"} linebreak (\n) war nicht nötig da ncat das von allein mitsendet

mfg

blackberry
25.03.2017, 17:33
Wenn Spieler 1 eine 7 legt, dann ist Spieler 2 an der Reihe und wird mit nachfolgender Meldung zum Zug aufgefordert:


{
"status" : "okay",
"topCard" : 19,
"drawTwoCards" : true,
"skipped" : false,
"wishedColor" : -1
"cardsLeft" : 7,
"drawedCards" : [
4,
9
]
}
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.)

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'}

Auf der Server-Seite sieht das so aus:

[#] 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
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.

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

Barny
25.03.2017, 19:31
Hiho!

Dann legen wir mal los:

Habs mal kurz mit Netcat probiert. Leider kann ich mich nicht authentifizieren. Was mach ich falsch?
Hat sich dein Problem mit der möglichen Lösung von sarex geklärt?

@Blackberry:
Auf deinen Beitrag hab ich eigentlich nur gewartet und mich schon drauf gefreut. :D Ich versuche mal Klärung reinzubringen:

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.

Gebe ich dir 100%ig recht. Das habe ich da einfach nur reinkopiert. Auf die angezeigten Karten habe ich nicht im geringsten geachtet, da es nur die Kommunikation mit dem Server verdeutlichen sollte. Du bist aber auch der erste, der das angemerkt hat und dem das überhaupt aufgefallen ist. :D




Das merke ich an, weil ich auch beim Kommunizieren mit dem Server komische Missverständnisse habe, die ich mir nicht erklären kann.
[...]
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.

Das habe ich geradet getestet und kann ich bestätigen. Bin aber beruhigt, dass nur die Ausgabe fehlerhaft ist und nicht die Logik. Werde ich im laufe des Abends fixen und ne aktuelisierte Version hochladen! Vielen Dank fürs Melden! ;)



Warum Spieler B danach eine Strafkarte bekommt, kann ich nicht nachvollziehen.

Das kann ich anhand deiner Logs jetzt leider auch nicht nachvollziehen. Ich habe es lokal bei mir gestestet und bei mir stimmt es. Ich werde mir morgen aber Zeit nehmen und das nochmal genauer unter die Lupe nehmen.



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.
Der Server wurde nur für diesen Contest geschrieben und dieser sieht es vor, dass nur 2 Spieler zusammen spielen. Du kannst den Server im "Contestmodus" nicht für mehr als 2 Spieler starten (und wenn du im normalen Netzwerkmodus spielst, dann sind deine genannten Probleme sowieso nicht mehr vorhanden). Damit weißt du in jedem Fall, was der andere Spieler für eine Karte gespielt hat. Ihr spielt ja nur zu zweit. Und die aktuelle Topcard wird dir ja mitgeteilt. Und wenn du ausgesetzt hast, dann wird dir das auch mitgeteilt. Wäre der Contest für 3 Spieler ausgelegt, dann würde ich dir Recht geben. Dann hätte ich das aber auch anders gemacht. Aber im Endeffekt spielen diese Anmerkungen für diesen Contest keine Rolle.



(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.
In der Dokumentation sind Zeilenumbrüche drin, damit eine gewissen Übersicht gegeben ist. Das in einem JSON-Statement keine Zeilenumbrüche drin sind (dachte ich) sollte klar sein. Hab bisher keinen Dienst gehabt, der mir JSON mit Zeilenumbrüchen zuschickt, daher hab ich mir da keine Gedanken drüber gemacht. Vielleicht gibt es sie ja doch. Daher werde ich das in der Dokumentation ergänzen.


(2) http://en.bab.la/conjugation/english/draw
Für mich nen bisschen peinlich, aber absolut unrelevant für den Contest. Daher nehme ich mir die Kritik gerne an, aber korrigieren werde ich das nicht mehr, weil schon einige etwas entwickelt haben oder gar fertig sind.

Danke fürs Feedback! ;)

Viele Grüße,

Barny

blackberry
25.03.2017, 20:34
Auf deinen Beitrag hab ich eigentlich nur gewartet und mich schon drauf gefreut. :D
:-)



Werde ich im laufe des Abends fixen und ne aktuelisierte Version hochladen!
Danke!



Das kann ich anhand deiner Logs jetzt leider auch nicht nachvollziehen.
Es könnte sein, dass ich falsch kodierte Befehle verschicke und der Server mich daher nicht versteht, aber der Ablauf sieht so aus:
* Das Spiel beginnt; Es liegt Pik7 auf dem Tisch und Spieler A ist am Zug.
* Spieler A spielt Kreuz Bube und wünscht sich die Farbe 1 (=Karo).
* Spieler B ist nun am Zug und Spielt Karo 10.
* Der Server bestraft Spieler B. -- Warum?


Der Server wurde nur für diesen Contest geschrieben und dieser sieht es vor, dass nur 2 Spieler zusammen spielen. Du kannst den Server im "Contestmodus" nicht für mehr als 2 Spieler starten (und wenn du im normalen Netzwerkmodus spielst, dann sind deine genannten Probleme sowieso nicht mehr vorhanden). Damit weißt du in jedem Fall, was der andere Spieler für eine Karte gespielt hat.
Der Spieler, der anfängt, weiß auf jeden Fall, welche Karte als aller erstes ausgedeckt wurde. Der zweite Spieler bekommt diese Information nicht. Wenn sich der Zugstapel langsam leert und noch nicht der Ablagestapel wieder hinein gemischt wurde, hat der erste Spieler also einen klaren Vorteil.



In der Dokumentation sind Zeilenumbrüche drin, damit eine gewissen Übersicht gegeben ist. Das in einem JSON-Statement keine Zeilenumbrüche drin sind (dachte ich) sollte klar sein. Hab bisher keinen Dienst gehabt, der mir JSON mit Zeilenumbrüchen zuschickt, daher hab ich mir da keine Gedanken drüber gemacht. Vielleicht gibt es sie ja doch. Daher werde ich das in der Dokumentation ergänzen.
Wenn man JSON-Dateien als Konfigurationsdateien benutzt, dann sind Zeilenumbrüche, Tabs, usw. durchaus üblich. Etwa Sublime Text macht das so. (Das soll keine Kritik an der Implementierung sein. -- Wenn der Server das einzeilig will, dann ist das halt so. Ich wollte lediglich erwähnt haben, dass die Dokumentation mich dazu gebracht hatte gegenteiliges zu glauben und ich mich 10 Minuten über die daraus entstandenen Kommunikationsfehler mit dem Server gewundert hatte.)

EDIT: Hier noch eine komische Ergänzung:
* Spieler A beginnt; Es liegt KreuzAss aus. Spieler A kann nicht legen und sagt das dem Server.
* Spieler B ist dran. -- Die Server-Meldung, die ihm das sagt enthält '"skipped":false'; Spieler B weiß also überhaupt nicht mal, dass Spieler A aussetzen musste.
* Spieler B spielt auf das nach wie vor oben liegende KreuzAss dann einen KreuzKönig, was passt, wird aber wieder vom Server bestraft. Der Server hasst Spieler B.
https://i.imgur.com/uvVrCOU.png
https://i.imgur.com/nU5bnwB.png

Barny
25.03.2017, 22:14
Es könnte sein, dass ich falsch kodierte Befehle verschicke und der Server mich daher nicht versteht, aber der Ablauf sieht so aus:
* Das Spiel beginnt; Es liegt Pik7 auf dem Tisch und Spieler A ist am Zug.
* Spieler A spielt Kreuz Bube und wünscht sich die Farbe 1 (=Karo).
* Spieler B ist nun am Zug und Spielt Karo 10.
* Der Server bestraft Spieler B. -- Warum?

Ich konnte den Fehler im Contestmodus reproduzieren. Hab, wenn ich ehrlich bin, aber derzeit keine Erklärng dafür. Im normalen Netzwerkmodus tritt der Fehler nicht auf (zumindest konnte ich ihn hier nicht reproduzieren). Scheint also was mit den Statements zu tun zu haben die gesendet werden. Ich prüfe das wie gesagt direkt morgen früh und bitte das zu entschuldigen! Vielen Dank nochmal für´s melden!



Der Spieler, der anfängt, weiß auf jeden Fall, welche Karte als aller erstes ausgedeckt wurde. Der zweite Spieler bekommt diese Information nicht. Wenn sich der Zugstapel langsam leert und noch nicht der Ablagestapel wieder hinein gemischt wurde, hat der erste Spieler also einen klaren Vorteil.

So eng habe ich es ehrlich gesagt nicht gesehen. Aber wenn ich den Vorschlag machen darf, dass beim Start des Spiels die oberste Karte einmalig gesendet wird, wärst du damit zufrieden? Dann werde ich das zusammen mit den Bugfix von oben pushen.



Wenn man JSON-Dateien als Konfigurationsdateien benutzt, dann sind Zeilenumbrüche, Tabs, usw. durchaus üblich. Etwa Sublime Text macht das so.
Man lernt nie aus. ;) Werde das im Hinterkopf behalten. Kam mir so bisher nur noch nicht unter.

Viele Grüße,

Barny

blackberry
25.03.2017, 22:42
So eng habe ich es ehrlich gesagt nicht gesehen. Aber wenn ich den Vorschlag machen darf, dass beim Start des Spiels die oberste Karte einmalig gesendet wird, wärst du damit zufrieden? Dann werde ich das zusammen mit den Bugfix von oben pushen.
Also die oberste Karte würde ich (aus Prinzip!) gerne kennen. Wie wäre es außerdem, wenn der Server einfach alle korrekten(!) Nachrichten, der er von einem Client bekommt, an alle anderen Clients weiterschickt? Die sind ja immer mit dem Namen des Clients signiert. Teilnehmer, die diese Information nicht benutzen möchten, können dann einfach alle Nachrichten vom Server, die das Feld "'name':..." setzen, ignorieren und wer die Informationen benutzen möchte kann sie dann selbst parsen. Das sollte im Server-Quellcode doch nur minimale Modifikationen in Anspruch nehmen.

EDIT: Noch etwas Interessantes: Im Netzwerkspiel ist das Legen einer falschen Karte nicht erlaubt. Im Contest bekommt man dafür zwar eine Strafkarte, aber topCard wird trotzdem auf die falsch gelegte Karte gesetzt.

Barny
26.03.2017, 00:00
Es ist nun eine neue Version des Server im Git-Repo zum download bereitgestellt.
Gefixt worden sind unter anderem der Fehler, dass der Server die falschen Karten ausgibt im Log. Außerdem wurde noch 1 kleiner Fehler behoben, der allerding nix mit der Spiellogik oder den Serverausgaben an die Bots zu tun hat.


Also die oberste Karte würde ich (aus Prinzip!) gerne kennen. Wie wäre es außerdem, wenn der Server einfach alle korrekten(!) Nachrichten, der er von einem Client bekommt, an alle anderen Clients weiterschickt? Die sind ja immer mit dem Namen des Clients signiert. Teilnehmer, die diese Information nicht benutzen möchten, können dann einfach alle Nachrichten vom Server, die das Feld "'name':..." setzen, ignorieren und wer die Informationen benutzen möchte kann sie dann selbst parsen. Das sollte im Server-Quellcode doch nur minimale Modifikationen in Anspruch nehmen.

Ich werde mir das morgen im Detail anschauen. Die oberste Karte vor dem ersten Zug des Spiels werde ich aber auf jedenfall implementieren. Wir wollen ja nicht, dass jemand einen Vorteil einem anderen Spieler gegenüber hat. :P ;)



EDIT: Noch etwas Interessantes: Im Netzwerkspiel ist das Legen einer falschen Karte nicht erlaubt. Im Contest bekommt man dafür zwar eine Strafkarte, aber topCard wird trotzdem auf die falsch gelegte Karte gesetzt.

Das hat mit dem Fehler zu tun den du in deinen Posts darüber erwähnt hattest. Wenn dieser genannte Fall eintritt, dann sieht der Server deinen Zug als gültig an und entfernt sogar aus seinem Stack die von dir gelegte Karte (die halte ich ja um die Züge zu kontrollieren). Für ihn war alles in Ordnung und er legt die Karte auch in der Mitte ab. Allerdings passt ihn danach irgendwas nicht, weswegen er eine Strafkarte verteilt. Ich konnte den genauen Teil der betroffen ist heute nicht mehr feststellen. Bin aber auch mega müde und werde das auf morgen vertagen. Vielleicht können wir alles zu dem Fehler auch per PM weiter klären, damit der Thread nicht so überläuft. Lösung des Problems und Anmerkungen kommen dann wieder hier rein.

Viele Grüße und eine gute Nacht,

Barny

lrg0
26.03.2017, 07:02
Ich würde mir wünschen, dass der Server bei "status": "error" mitsendet, ob ein er Verstoß gegen Spielregeln vorliegt oder ungültiger Code gesendet wurde.

Barny
26.03.2017, 17:41
Hiho!


Also die oberste Karte würde ich (aus Prinzip!) gerne kennen.
Der Server sendet nun die aktuell oberste Karte bei jedem Zug mit. Das bedeutet, dass auch die aller erste Karte jedem Mitspieler mitgeteilt wird. Hierdurch lässt sich auch kontrollieren, ob der Gegner einen gültigen Zug gemacht hat oder aussetzt (in beiden Fällen zieht er eine Karte, also brauch man dazwischen nicht unterscheiden). Ich hoffe, dass ich dich damit glücklich machen konnte. :D ;)
Unten ist grün markiert was hinzugekommen ist:

{
"status" : "okay",
"turnOf" : "Bot1",
"skipped" : False,
"topCard" : 2
}


Ich würde mir wünschen, dass der Server bei "status": "error" mitsendet, ob ein er Verstoß gegen Spielregeln vorliegt oder ungültiger Code gesendet wurde.
Diese Anfrage habe ich dir bereits per PM beantwortet. Warum du das nochmal in den Thread reinhaust ist mir schleierhaft. Aber ich beantworte dir dennoch deine Anfrage nochmal hier:
Es ist unnötig einen Fehlercode zu versenden, da du entweder eine richtige oder eine falsche Karte legst. Ich würde dauerhaft den gleichen Fehlercode senden, wodurch das ganze sinnfrei wird. Du solltest deinen Bot natürlich so schreiben, dass er JSON korrekt parsen kann. Tut er das, dann kann er es nicht auf einmal, manchmal, falsch machen. Er wird das dann immer richtig parsen und auch korrektes JSON zurückschicken. Im Endeffekt zielt deine Anfrage nur auf die Zeit der Entwicklung ab (denn nur da macht es Sinn), aber zu einfach möchte ich es auch nicht machen. Ich denke, dass die Entwicklung auch ohne Fehlercode machbar ist.

Nun zum eigentlichen Grund dieses Beitrags:
Ich habe die genannten Bug(s) nun behoben und eine aktualisierte Version ins Git gepusht.

Der Server spuckt in seinem Log nun die korrekten Karten aus. Die Spiellogik war hiervon nie betroffen und lediglich die Ausgabe hat nicht gestimmt. Also hat der Server noch korrekt reagiert.
Wie oben erwähnt, sendet der Server vor jedem Zug auch nun die aktuelle "topCard" mit raus. Dies hat den Vorteil, dass die erste Karte jedem Bot bekannt ist und die Züge der anderen Bots (Gegner) kontrolliert werden können. Ich hoffe, dass das hilft.
Der genannte Fehler von Blackberry (den ich fälschlicherweise bestätigt hatte) war kein Fehler. Der Server hat eine Strafkarte vergeben, weil die Karte die gelegt werden sollte sich nicht mehr auf der Hand des Bots befunden hat. Demnach hat der Bot "beschissen" und wurde dafür bestraft. Ich hatte das ganze händisch gestern Abend getestet und mir ist der gleiche Fehler unterlaufen und habe dem Server eine Karte gesendet, die ich bereits 5 Züge vorher gesendet hatte. Deswegen war ich in der Annahme, dass der Server die Karten nicht richtig prüft. Dies hat sich jetzt aber erledigt. Vielen Dank nochmal an dich, blackberry, dass du mir deinen Code zum testen zur Verfügung gestellt hast!


Die neue Version des Server steht jetzt jedem zum Download zu Verfügung und die Doku werde ich heute auch noch dementsprechend anpassen!

Viele Grüße,

Barny

//EDIT:
Wenn der Wurm einmal drin ist... Es ist eine neue Version von mir hochgeladen worden, in der ich noch einen kleinen Fehler der im Zuge des letzten Fixes entstanden ist ausgebessert habe. Das sollte jetzt aber die letzte Version sein für den Contestmodus. Vielleicht kommt nochmal nen Update für den Netzwerkmodus, der hat aber nix mit dem Contest zu tun und ist daher erstmal zu vernachlässigen.

J0hn.X3r
05.04.2017, 19:00
Bump.. weitere Teilnehmer gerne gesehen :)

wacked
07.04.2017, 21:12
Oh sorry, ich auch. Hatte das irgendwann mal in die shoutbox geschrieben, ist aber untergegangen -- und hab mich dann nicht mehr drum gekümmert

Jut4h.tm
09.04.2017, 14:06
Also ich habe nen Kumpel der grade Coden lernt :-) Das wäre doch ne super Aufgabe nachdem er den klassischen Taschenrechner fertig hat :D

55F
09.04.2017, 21:18
Kannst du uns beiden dann helfen? :D Ich hab allerdings nicht mal den Taschenrechner fertig. :redface:
Ich bin aufjedenfall dran, aber ob ich es rechtzeitig schaffe bleibt fraglich. (Dass ich es schaffe steht außer frage.)

Barny
10.04.2017, 06:19
Einen schönen, guten Morgen allerseits! :)


Oh sorry, ich auch. Hatte das irgendwann mal in die shoutbox geschrieben, ist aber untergegangen -- und hab mich dann nicht mehr drum gekümmert
Ich versteh deine Aussage nicht.^^ Eingetragen bist du bereits. :) Wie du genau reingekommen bist in die Liste weiß ich nicht mehr.^^ Kann sein, dass cih das in der Shoutbox gelesen habe. Die Liste ist auch nur da um grob zu wissen wie viele ca. mitmachen. Ich melde mich bei allen vor der Auswertung auch nochmal.
Oder was meinst du?


Kannst du uns beiden dann helfen? :D Ich hab allerdings nicht mal den Taschenrechner fertig. :redface:
Ich bin aufjedenfall dran, aber ob ich es rechtzeitig schaffe bleibt fraglich. (Dass ich es schaffe steht außer frage.)
Die Serveranwendung wird ja nicht offline genommen wenn der Contest vorbei ist. :) Von daher hast du auch alle Zeit der Welt um dich dem Problem zu widmen. Zum Thema "Helfen" möchte ich aus meinem ersten Post in dem Thread etwas zitieren:


[...]
Anmerkungen:


Bei diesem Contest soll der Spaß und das Lernen im Vordergrund stehen! Demnach ist es auch erlaubt zum Thema Threads zu eröffnen und darüber zu sprechen! Es sollte sich jedoch jeder darüber im Klaren sein, dass der Gewinn nicht geteilt werden kann.

[...]

Ich denke also. dass dir auch geholfen wird, wenn du nen Thread aufmachst und dort deine Fragen stellst. :)


Also ich habe nen Kumpel der grade Coden lernt :-) Das wäre doch ne super Aufgabe nachdem er den klassischen Taschenrechner fertig hat :D
Auf jedenfall! :) Schreibst du eigentlich jetzt unabhängig vom Contest auch noch nen Bot? Der würde mich nämlich mal interessieren. :D

Viele Grüße,

Barny

sn0w
10.04.2017, 14:14
Wie du genau reingekommen bist in die Liste weiß ich nicht mehr.^^
Das war ich :D Sry :D

Barny
11.04.2017, 06:09
Das war ich :D Sry :D
Dann ist das auch geklärt. :D Dachte ich wär voll gewesen oder so :D

zzurc
11.04.2017, 12:52
topCard wird bei mir als topcard übergeben. Ist zwar nur groß/klein-Schreibung aber ich bin halt pingelig :D

{ "status" : "okay",
"topCard" : 19,
"drawTwoCards" : false,
"skipped" : false,
"wishedColor" : -1
"cardsLeft" : 7,
"hand" : [
4,
9,
15,
7,
30,
18,
1
] }

Und habe ich es richtig verstanden dass man bei einer 8 Aussetzen muss und eine Karte vom Stapel ziehen?

---------- Post added at 13:52 ---------- Previous post was at 12:52 ----------

Okay ich hab keine Ahnung warum, aber jetzt wirds wieder richtig übergeben :D

Barny
11.04.2017, 13:12
topCard wird bei mir als topcard übergeben. Ist zwar nur groß/klein-Schreibung aber ich bin halt pingelig :D
Da das bisher niemand angemerkt hat und mir es persönlich nicht aufgefallen ist, werde ich das jetzt nicht mehr ändern. Gebe dir aber Recht. Wäre unfair das jetzt noch zu ändern, da es sich hierbei nicht um einen Fehler handelt und die Anderen damit auch entwickelt haben. Ich übergebe einmal "topcard" und einmal "topCard"... *schäm* Sollte das noch zu ernsten Problemen führen (wüsste jetzt aber nicht warum) dann mal schauen. Das kam meine ich im Zuge der Anpassung die sich blackberry gewünscht hatte.^^


Und habe ich es richtig verstanden dass man bei einer 8 Aussetzen muss und eine Karte vom Stapel ziehen?
Nein, bei einer 8 muss man nur aussetzen.
-> Spieler 1 legt eine 8 (die Karte darf er legen und wurde vom Server angenommen)
-> Spieler 2 muss aussetzen. Dies erkennt er an dem "skipped" in seiner "turnOf"-Anweisung (Bin mir gerade nicht sicher weil ich unterwegs bin und den Server nicht vor mir hab, aber sollte so stimmen)
-> Spieler 1 ist an der Reihe

Falls dir doch noch was anderes aufgefallen sein sollte, dann schreib mir mal ne PM mit dem Problem und den Teil deines Codes der den Fehler verursacht. Logs wären auch immer hilfreich. Konnten bisher so schon viele Probleme lösen, die aber nicht der Server verursacht hat, was aber nicht sofort ersichtlich war. :)

Viele Grüße,

Barny

Barny
17.04.2017, 16:59
PUSH nochmal nach oben. :) Die letzte Woche läuft und noch könnt ihr teilnehmen, wenn ihr das nich schon getan habt! ;)

Viele Grüße,

Barny

wacked
21.04.2017, 21:20
Ähh bin ich doof oder wird einem nicht mitgeteilt welche Farbe sich gewünscht wurde? Also ich meine, in der Doku steht es beschrieben aber irgendwie sehe ich es jetzt gerade hier nicht (http://i.imgur.com/XgaADJh.png)

Edit: irgendwie habe ich es gerade auch geschafft das die "gameStart":true Nachricht nur bei einem Spieler ankam...

Edit 2: kann es sein das wenn Spieler a im ersten Zug eine 7 spielt, dann bei der "turnOf":"b" Nachricht trotzdem cardsLeft nur 7 (statt 9) steht?

Barny
22.04.2017, 18:54
Ähh bin ich doof oder wird einem nicht mitgeteilt welche Farbe sich gewünscht wurde? Also ich meine, in der Doku steht es beschrieben aber irgendwie sehe ich es jetzt gerade hier nicht (http://i.imgur.com/XgaADJh.png)

Edit: irgendwie habe ich es gerade auch geschafft das die "gameStart":true Nachricht nur bei einem Spieler ankam...

Edit 2: kann es sein das wenn Spieler a im ersten Zug eine 7 spielt, dann bei der "turnOf":"b" Nachricht trotzdem cardsLeft nur 7 (statt 9) steht?

Ich konnte die beschriebenen Fehler leider nicht reproduzieren. Wie bereits in einigen Beitägen von mir angemerkt, würde mich der Code der benutzt worden ist und ein paar Logs per PM weiterhelfen.

Aber mal abgesehen davon, ist es glaube ich sowieso zu spät jetzt noch Fehler zu fixen. Morgen ist die Auswertung und es wird die derzeit aktuelle Serverversion verwendet. Damit haben alle ihren Bot entwickelt und alle haben demnach immernoch die gleichen Chancen.

Demnach werde ich jetzt auch nix mehr fixen (falls da überhaupt irgendwas ist).

Viele Grüße,

Barny