realbasic-nug.de
[Top] [All Lists]

Parsen von Schachdaten

To: REALbasic NUG German <realbasic-nug dot de at lists dot realsoftware dot com>
Subject: Parsen von Schachdaten
From: Pepe <capone at macnews dot de>
Date: Wed, 19 Jan 2005 17:44:54 +0100
Delivered-to: realbasic-nug dot de at lists dot realsoftware dot com
Hallo Leute,

wenn ihr euch ein wenig mit Schach und Programmieren auskennt, könnt ihr bitte mal versuchen, meine zwei semi-OT-Fragen zu beantworten. Auch nach stundenlangem Nachdenken und Surfen nach Infos bin ich nicht drauf gekommen.

Es geht um die Struktur, wie man z.B. Brettspiele sichert. Es gibt da ja festgelegte Notationen, wie z.B. beim Spiel Schach. Ich würde diese gerne verstehen, da ich mit RB auch mal in die Lage kommen könnte, solch eine Struktur zu schreiben. Dann ist es besser, allgemeine Regeln anzuwenden, um Daten vielleicht mit anderen Progs austauschen zu können.

Wenn ihr mit Apple's Schachprogramm "Chess" mal eine Runde spielt, dann das Spiel sichert und die Datei des gesicherten Spiels mal mit TextEdit öffnet, seht ihr z.B. unter anderem Folgendes:

        <key>Moves</key>
        <string>e2e4
c7c5
d2d4
d7d5
b1c3
d5e4
c3e4
b8d7
e4g5
g8f6
f1d3
e7e6
g1f3
h7h6
g5e6
d8c7
g2g3
f7e6
</string>
        <key>Position</key>
<string>r1b1kb1r/ppqn2p1/4pn1p/2p5/3P4/3B1NP1/PPP2P1P/R1BQK2R w KQkq - 0 10</string>


Das ist ein Ausschnitt, der alle relevanten Infos zu den gespielten Zügen und der aktuellen Brettposition liefert.

Hier meine Fragen:

1, Mir fällt bei obigem Ausschnitt auf, dass die Moves ohne Info über das Schlagen eines gegnerischen Steines gespeichert werden. Wenn man das gespeicherte Spiel also in "Chess" wieder öffnet und den GameLog ansieht, dann sind plötzlich auch die Züge, in denen ein Stein geschlagen wurde, wieder da (diese werden im GameLog mit Square x Square anstatt Square - Square markiert). Anstatt "f7e6" in der letzten Zeile der "Moves" steht dann wieder richtigerweise "f7xe6", weil ein Stein bei dem Zug geschlagen wurde. Wieso wird das nicht in den Moves gespeichert und wie kann Chess dann nach dem Laden einer solchen Datei wissen, bei welchem Zug ein anderer Stein geschlagen wurde und bei welchem nicht?

2, Bei der letzten Zeile der Moves schlägt ein schwarzer Bauer einen weissen Springer (f7e6). Woher weiss Chess, wenn es das gespeicherte Spiel öffnet und diesen Zug rückgängig macht, dass Schwarz mit dem Bauern beim Zug von f7 auf e6 einen Springer geschlagen hat und nicht z.B. einen anderen Bauern oder einen Turm? Wenn es heissen würde f7Bauer x e6Springer würde jeder wissen, dass ein Bauer mit dem Sprung von f7 auf e6 einen Springer schlägt, aber bei f7e6 (siehe letzte Zeile Moves) verstehe ich nicht ganz, wie Chess das macht...

Insgesamt bin ich der Ansicht, dass Apple's Chess sicher nach den allgemeinen Vorgaben abspeichert (es gibt ja solche Portable Game Notation - Spezifikationen), und andere Schachprogs tun das auch; aber ich verstehe noch nicht ganz den Ablauf im Generellen. Wenn das also ein Damespiel wäre und der Move wäre 11x18 (also ein Stein von Square 11 überspringt einen anderen Stein und landet auf Square 18), dann weiss man doch immer noch nicht, ob der übersprungene Stein eine Dame war oder ein ganz normaler Stein. Das muss man aber wissen, wenn man geladene Spiele rückverfolgen will....

Sorry, konnte mich nicht kürzer fassen.

Vielen lieben Dank für Hilfe.

Gruss,
Pepe
<Prev in Thread] Current Thread [Next in Thread>