Hi Pepe,
ein einfacher Weg ist es, alle Züge vom Anfang der Moves an nchzuspielen
ohne das der Spieler es sieht... So kannst du den genauen Spielverlauf
wiederherstellen...
Ob es so gemacht wird weiß ich allerdings ned.
Ciao Chris
Pepe schrieb:
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
--
Mit freundlichen Grüßen
Christoph Engelbert
------------------------------------------------------------
i-Style Design
Devision: WebServices & Softwaredeveloping
Ubierstr. 52A
56567 Neuwied
Germany
Tel: + 49 (2631) 94 23 14
Fax: + 49 (2631) 94 23 15
Cell: +49 (177) 28 27 803
Mail: engelbert at i-styledesign dot de
web: www.i-styledesign.de
------------------------------------------------------------
|