Jazzy -- Schachvarianten online spielen

  • Schön! :D Also ich hab mir vor 2 min die neuste Version gezogen und von der Geschwindigkeit keinen merklichen Unterschied zu den Vorgängerversionen gespürt!?

    Edit: Ich hab nochmal ein bisschen rumprobiert und muss sagen, dass es wirklich etwas länger braucht, bis der Zug beim Client erscheint...
    Edit2: Darf bei LosAlamos der Bauer nicht nur ein Feld vorgehen? Das ist noch nicht implementiert...

    • Offizieller Beitrag

    Hi mal wieder,

    Neuigkeiten:
    Atomic Chess (Variante mit automatisch generierten "Zügen" [verschwindende Figuren])
    DarkChess (Variante mit unvollständiger Information)

    Coin Chess funktioniert nach der Umstellung zur Zeit nicht, die anderen Varianten müssten tun.

    Viel Spaß beim Testen, Code wie immer bei GitHub!
    Johannes

  • Hey!
    Schön, dass du nochmal weiter gemacht hast!
    Dark Chess hab ich nur kurz getestet, scheint aber zu funktionieren! :thumbup: Beim Atomschach ist mir etwas aufgefallen, was (so weit ich weiß) falsch ist: Wenn ein Stein geschlagen wird, müsste der schlagende Stein eigentlich mitverschwinden.
    Ansonsten toll ;)

    Kommt eigentlich in absehbarer Zeit auch noch en passant, Bauernumwandlung und Rochade rein? Dann könnte man nämlcih auch alles fertig spielen :)

    RapIt

    • Offizieller Beitrag

    Zusammenfassung der Neuigkeiten:
    - Marseillaise Chess: Weiß zieht einmal, dann jeder doppelt, bei Schach im ersten Zug fällt der zweite weg (das war ein ziemlicher Umbau, damit das auf der gleichen Basis funktioniert…)
    - Umwandlung (müsste für die meisten Varianten out-of-the-box so funktionieren)
    - Atomschach gefixt

    Johannes

  • Hey, Das neue Design gefällt mir ;)
    Hat sich ja viel getan!

    Zu 1: Marseillaise Chess geht ohne Bug, soweit ich es feststllen konnte. Auch das Schachgeben im ersten Zug geht einwandfrei.

    Zu 2: Toll, schön gemacht, aber kleiner Bug: Wenn man auf das betreffende Feld auf der Grundreihe drückt und dann wieder auf die Figur, die ziehen soll und dann wieder auf die Grundreihe, usw. , dann erscheinen ganz viele Figurensätze unter dem Brett!

    Zu 3: Bug einwandfrei gefixed...

    RapIt

    • Offizieller Beitrag

    So, ich bin dazu gekommen, das Interface schön zu machen, siehe https://github.com/jazzer/Jazzy/c…9715ee8313126c2

    Ein paar neue Varianten gibt es auch wieder (z.B. mit unbeweglichem König oder zwei-Felder-König).

    Viel Spaß damit!
    Johannes

  • Cool! Die neue modale Abfrage bei der Umwandluung gefällt mir sehr gut! :)

    Was ich so langsam schön fände, wäre eine übersichtliche Sortierung der Schachvarianten nach irgendeinem Kriterium. Die Box ist schon so voll, das man jetzt schon suchen muss :D Aber tolle und viele Varianten ;) Außerdem wäre Rochade schön, was ja eigentlich der letzte "wichtige" Punkt ist, der das Spiel komplett macht. (Neben en passant :))

    Mir sind keine Bugs aufgefallen, aber ich hab auch noch nicht intensiv gesucht :D

    • Offizieller Beitrag

    Danke für den Test und das Lob :).

    Noch ein paar Worte dazu, wie ich die nächste umzusetzende Funktion auswähle: Ich habe einen hohen Qualitätsanspruch an meinen Code und ich will gleichzeitig jede Funktion im Wesentlichen nur einmal designen. Zusammen bedeutet das, dass ich mir einige Gedanken dazu mache, wie ich bauen möchte. Bei mir dauert es dann tatsächlich einige Tage und U-Bahn-Fahrten lang bis ich mir im Klaren bin, wie ich es anpacke.
    In diesem speziellen Fall reicht ja auch nicht nur die aktuell nötige Lösung, sondern es muss auch so angelegt sein, dass spätere Varianten keine Probleme erzeugen. Diese Flexibilität (wenn ich es implementiere, ist es deutlich "zu" flexibel eigentlich) ist für mich der größte technische Spaß an dem Projekt.

    Im Moment reifen die Rochade und die Variantenkategorisierung in meinem Kopf und sind auch fast klar. Es muss dann nur noch die Zeit da sein, es umzusetzen.

    Weil ich mir am Anfang sehr lange Gedanken zur Gesamtarchitektur gemacht habe, sind (zum Glück!) einzelne Varianten schneller einzubauen. Da kann weniger schief gehen und man muss weniger in die Zukunft blicken. Wenn du Zeit und Bock zu Python hast, kannst du ja auch mal eine Variante versuchen ;).

    Happy Coding,
    Johannes

  • Cool, dass du weiter gemacht hast! Leider funktioniert das ausführen komischerweise jetzt nicht mehr!? Bisher hat immer alles einwandfrei geklappt.

    Folgender Error:

    Spoiler anzeigen


    raphael@raphael-PC:~/Dokumente/Autoit/JazzChess11/jazzer-Jazzy-4b83c97/src/jazzy/server$ export PYTHONPATH=../../../src:$PYTHONPATH
    raphael@raphael-PC:~/Dokumente/Autoit/JazzChess11/jazzer-Jazzy-4b83c97/src/jazzy/server$ python3 JazzyServer.pyTraceback (most recent call last):
    File "JazzyServer.py", line 36, in
    from jazzy.logic import DifferentSetupGames, DifferentBoardGames, \
    ImportError: cannot import name TestGames


    Ich hab kp, was ich tun muss...?!

    Wäre aber cool, wenn ich es ausprobieren könnte!
    RapIt

  • Hey,
    ja, jetzt klappts wieder einwandfrei :)

    Ich hab gerade alle, was mir eingefallen ist (und das ist ziemlich viel :D ), durchprobiert und muss sagen, dass mir beim normalen Schach kein Bug aufgefallen ist. :thumbup: Es funktioniert in jeder erdenklichen (Sonder)position genau richtig.
    Das mit den beiden Buttons finde ich jetzt nicht soo schick, ich fänds besser, wenn man den König auch richtig ziehen könnte, aber was solls ;) Es erfüllt ja seinen Zweck!

    Ich hab nicht alle 'Sondervarianten durchprobiert, doch ich denke nicht, dass du die Rochadenregeln an jede einzelne Variante angepasst hast, oder!? Also bei Extinction Chess darf man meines Wissens nach aus und durch das Schach rochieren, was noch falsch ist. Bei Antichess sollte man gar nicht rochieren dürfen, ich weiß nicht, ob du das beachtet hast. Ich konnte es nicht ausprobieren, da ich bei Antichess keinen einzigen Zug machen konnte. :huh: (Bug!? :D )
    Fehler:

    Spoiler anzeigen


    Exception happened during processing of request from ('127.0.0.1', 56691)
    Traceback (most recent call last):
    File "/usr/lib/python3.1/socketserver.py", line 283, in _handle_request_noblock
    self.process_request(request, client_address)
    File "/usr/lib/python3.1/socketserver.py", line 309, in process_request
    self.finish_request(request, client_address)
    File "/usr/lib/python3.1/socketserver.py", line 322, in finish_request
    self.RequestHandlerClass(request, client_address, self)
    File "/usr/lib/python3.1/socketserver.py", line 616, in __init__
    self.handle()
    File "/usr/lib/python3.1/http/server.py", line 352, in handle
    self.handle_one_request()
    File "/usr/lib/python3.1/http/server.py", line 346, in handle_one_request
    method()
    File "JazzyServer.py", line 232, in do_GET
    isLegalMove = game.isLegalMove(postedMove)
    File "/home/raphael/Dokumente/Autoit/JazzChess11/jazzer-Jazzy-f867499/src/jazzy/logic/ClassicGame.py", line 474, in isLegalMove
    self.parsePossibleMoves()
    File "/home/raphael/Dokumente/Autoit/JazzChess11/jazzer-Jazzy-f867499/src/jazzy/logic/ClassicGame.py", line 328, in parsePossibleMoves
    moveSet = self.getPossibleMoves(self.board, checkTest=self.CHECK_FOR_CHECK)
    File "/home/raphael/Dokumente/Autoit/JazzChess11/jazzer-Jazzy-f867499/src/jazzy/logic/ClassicGame.py", line 349, in getPossibleMoves
    moveSet = self.filterMovesByRules(moveSet, board, player, noCastlingMoves)
    TypeError: filterMovesByRules() takes exactly 4 positional arguments (5 given)
    ----------------------------------------

    (Es passiert einfach nichts, wenn ich einen Zug mache.)

    Die anderen Sondervarianten hab ich erstmal nicht durchprobiert, da die meisten keine speziellen Sonderregeln haben und es einfach funktionieren sollte. Außerdem kenn ich auch nicht alle Sonderregeln von den Varianten. ;)

    Ich finds echt cool, dass es bei normalem Schach einwandfrei funktioniert und somit jetzt (bis auf en passant) vollständig spielbar ist!!!
    Ich teste noch ein bisschen weiter, vielleicht fällt mir ja noch irgendwas auf. :)

    Weiter so!! :thumbup: :thumbup: :thumbup:
    RapIt

    • Offizieller Beitrag

    Hi RapIt,

    Vielen herzlichen Dank für deinen Test!

    Hey,
    ja, jetzt klappts wieder einwandfrei :)

    Ich hab gerade alle, was mir eingefallen ist (und das ist ziemlich viel :D ), durchprobiert und muss sagen, dass mir beim normalen Schach kein Bug aufgefallen ist. :thumbup: Es funktioniert in jeder erdenklichen (Sonder)position genau richtig.


    Das freut mich. Was anderes als Perfektion wäre einfach auch zu schlecht :D.
    Die ganzen Regeln kann man jetzt auch einzeln ein- und ausschalten (also z.B. Rochaden durchs Schach erlauben oder Rochaden bei bereits bewegtem Turm, solche Geschichten).

    Zitat

    Das mit den beiden Buttons finde ich jetzt nicht soo schick, ich fänds besser, wenn man den König auch richtig ziehen könnte, aber was solls ;) Es erfüllt ja seinen Zweck!


    Da habe ich mir was bei gedacht (wie du vielleicht auch vermutet hast :rofl::( Man kann auch in der Variante StrongKing rochieren, bei der der König auch alleine einen Doppelschritt machen kann. Deshalb musste eine Alternative her ;). Die einfachste Variante habe ich implementiert, eine andere wäre, dass man mit Strg+Maus rochieren kann. Das ist bisschen komplizierter und ich weiß nicht, ob man Strg von JavaScript aus abfangen kann. Mal gucken später ;).

    Zitat

    Ich hab nicht alle 'Sondervarianten durchprobiert, doch ich denke nicht, dass du die Rochadenregeln an jede einzelne Variante angepasst hast, oder!? Also bei Extinction Chess darf man meines Wissens nach aus und durch das Schach rochieren, was noch falsch ist.


    Extinction läuft bisher mit relativ normalen Regeln (Schach bedienen usw.), daher passt da m.M.n. die klassische Rochade!?


    Meine Interpretation: Man darf schon rochieren (warum auch nicht?) und das sogar aus dem Schach, durchs Schach und ins Schach, denn Schachgebote sind bei der gesamten Variante ja kein Problem. Einverstanden? ;)
    Den Fehler habe ich gefixt, man kann es wieder spielen. Danke für den schönen Stacktrace mit Fehlerbeschreibung!

    Zitat

    Die anderen Sondervarianten hab ich erstmal nicht durchprobiert, da die meisten keine speziellen Sonderregeln haben und es einfach funktionieren sollte. Außerdem kenn ich auch nicht alle Sonderregeln von den Varianten. ;)


    Ich habe versucht, bei unsinnigen Fällen die Rochade einfach zu deaktivieren. Es wird sich mit der Zeit herausstellen, wo das zu hart war (evtl. bei den großen Brettern, allerdings wäre der Fix, um zwei unabhängige Könige zu unterstützen, leider nicht ganz klein).

    Zitat

    Ich finds echt cool, dass es bei normalem Schach einwandfrei funktioniert und somit jetzt (bis auf en passant) vollständig spielbar ist!!!
    Ich teste noch ein bisschen weiter, vielleicht fällt mir ja noch irgendwas auf. :)


    Bock auf ein paar Partien morgen oder am Wochenende? Jetzt funktioniert ja wirklich das Meiste, es wird langsam :).

    Zitat

    Weiter so!! :thumbup: :thumbup: :thumbup:
    RapIt

    Schöne Grüße,
    Johannes