Hi Leute hat hier schonmal jemand einen Schachcomputer programmiert?
Gibt es gute bekannte offene Quellcodes? Ich würde so ein Dingens gerne
bauen.
Auf diese Idee kam ich eigentlich nur weil ich keinen
Taschenschachcomputer finden konnte, vielleicht kennt jemand nen guten,
dann könnte ich mir die Arbeit sparen.
Hallo,
> Auf diese Idee kam ich eigentlich nur weil ich keinen> Taschenschachcomputer finden konnte, vielleicht kennt jemand nen guten,> dann könnte ich mir die Arbeit sparen.
wie wäre es mit einem Smartphone?
Viele Grüße
Michael
ML schrieb:> wie wäre es mit einem Smartphone?
Is ja todlangweilig. Ich habe ein wunderschönes Schachbrett und
Figurensatz, da will ich auch nen Schachcomputer dazu ;-)
Danke Olaf das sieht fürs Erste gut aus, das muss ich mir zu Gemüte
ziehen.
Ist doch pillepalle:
64 Felder, 32 Spielfiguren und Regeln, die im umständlichen
Menschen-Sprech auf 2 A4-Seiten mit lesbarer Schriftgröße passen.
Da brauchst du noch Hilfe? Selbst IBM hat es vor wenigen Jahren
geschafft, den Weltmeister "reproduzierbar" zu besiegen.
Jakob schrieb:> Da brauchst du noch Hilfe? Selbst IBM hat es vor wenigen Jahren> geschafft, den Weltmeister "reproduzierbar" zu besiegen.
Klar, wenn "selbst IBM" es geschafft hat, dann sollte es doch für Mike
erst Recht kein Problem darstellen. Oder? ;-)
Ja, entweder geht man da unbeirrt wie Mike ran, oder es wird
schon mal aus lauter Respekt vor IBM nix.
WAHRSCHEINLICH ist der Respekt vor DEEP BLUE gerechtfertigt,
aber wahrscheinlich sollte ein Rookie den auch vor 99,99% von
dem haben, was bisher amateurmäßig geleistet wurde.
Erwin D. schrieb:> Jakob schrieb:>> Da brauchst du noch Hilfe? Selbst IBM hat es vor wenigen Jahren>> geschafft, den Weltmeister "reproduzierbar" zu besiegen.>> Klar, wenn "selbst IBM" es geschafft hat, dann sollte es doch für Mike> erst Recht kein Problem darstellen. Oder? ;-)
Wenn ihm ein Smartphone zu doof ist ...
A. K. schrieb:> Mike schrieb:>> Hi Leute hat hier schonmal jemand einen Schachcomputer programmiert?>> Vor 40 Jahren in APL, auf einem Mainframe. ;-)
Ja, ja, immer der neueste heiße Scheiß!
FORTRAN oder Algol waren wohl nicht gut genug?
Mike schrieb:> Gibt es gute bekannte offene Quellcodes? Ich würde so ein Dingens gerne> bauen.
Für dem KIM-1 gibt es ein Schachprogramm unter 1k Speichergröße - nicht
übermäßig gut aber dafür überschaubar. Quellcode für 6502 ist vorhanden.
http://www.benlo.com/microchess/
Das KIM Microchess habe ich mir damals für den AIM-65 umgeschrieben,
(eigentlich nur die Ein/Ausgabe). Den Quelltext hatte ich irgendwoher
auf einem vielfach kopiertem Ausdruck bekommen. In dem Link oben steht
1k RAM, das stimmt nicht ganz, es wurden soweit ich noch weiß auch noch
die 128 Byte RAM im I/O-Port benutzt (im Sourcecode Adressen ab 1780h),
und irgendwie mit dem Stackregister manipuliert, damit es reinpasst.
(Sourcecode:
00B2 .SP2 : STACK POINTER FOR STACK 2
00B3 .SP1 : STACK POINTER FOR STACK 1)
Der Sourcecode ist hier auch gelistet:
http://www.benlo.com/microchess/Kim-1Microchess.html
Mike schrieb:> Gibt es gute bekannte offene Quellcodes?
Ist Google kaputt? "chess engine open source" findet mehr Treffer als
man verarbeiten mag.
> Ich würde so ein Dingens gerne bauen.
"Schachcomputer" ist ein weites Feld. Aber nachdem dir "Smartphone" bzw.
"Tablet" nicht gefallen haben, soll es wohl etwas aufwendiger werden. So
richtig mit Schachbrett und Figuren?
Die einfachste Variante wäre dann ein normales Brett und für den
Computer ein einfaches Display + Keypad, wo man seine Züge eintippt bzw.
er seine Züge anzeigt. Ziehen muß man von Hand.
Die nächste Eskalationsstufe verwendet ein Brett mit Sensoren, die
erkennen ob eine Figur auf dem Feld steht oder nicht. Ausgehend von der
Anfangsstellung kann der Computer so die Stellung tracken und Züge des
Spielers erkennen. Züge des Computers kann man z.B. per LED (eine pro
Feld) anzeigen.
Die high-end Variante verwendet dann Figuren mit individuellen
Kennungen, dadurch kann der Computer jede beliebige Aufstellung
erkennen, z.B. um Schachrätsel zu lösen.
Aber wenn dich schon eine einfache Google-Suche überfordert, dann wird
dir das alles viel zu aufwendig sein.
Axel S. schrieb:> Die high-end Variante verwendet dann Figuren mit individuellen> Kennungen, dadurch kann der Computer jede beliebige Aufstellung> erkennen, z.B. um Schachrätsel zu lösen.
Eine andere Variante würde mit einer oder mehreren Kameras arbeiten so
dass das Brett und die Figuren nicht verändert werden müssen. Die
Figuren müssen lediglich eindeutig voneinander unterscheidbar sein.
Eventuell reicht hierzu der Blick von oben. Ansonsten müssen mehrere
Kameras das Brenn von allen Seiten beobachten.
Dumpfbacke schrieb:> Eine andere Variante würde mit einer oder mehreren Kameras arbeiten so> dass das Brett und die Figuren nicht verändert werden müssen.
Kann ich nicht so recht ernst nehmen :-) Es ging mir darum nen
Schachcomputet zu bauen der kein Schachbrett braucht, nur die Anzeige
woher und wohin sozusagen.
Mike schrieb:> Hi Leute hat hier schonmal jemand einen Schachcomputer programmiert?
Ja. Ich hatte es auf einer Micro-VAX programmiert und zum Laufen
gebracht, scheiterte aber funktionell letztlich am OS und dem RAM.
Es funktionierte so:
Man beschreibe ein Schachspielfeld in C mit einem Array von 8x8 Feldern,
welche entweder Null (frei) oder die Nummer einer Figur enthält. Anhand
der Nummer ist klar, welche Figur (Typ und Farbe) es ist.
Ausgangsstellung ist die Grundstellung im Schach.
Man definiere eine Schleife über 8x8, die prüft, ob ein Feld frei ist
oder belegt. Wenn es belegt ist, teste man mit einer weiteren Schleife
alle für diese Figur zugelassenen Züge und ermittle die daraus folgenden
Brettstellungen. Diese ist charakterisiert, durch eine temporäre
Array-Variable, welche die Stellungen codiert enthält. Kommt es bei der
Bildung eines gedachten Zugs zu einem Schlagen einer gegnerischen Figur,
wird einer Variablen, die rekursiv geführt wird, ein Wert aufaddiert,
der dem virtuellen Wert der Figur entspricht. Diese Variable wird als
Gütewert der Stellung zugeordnet.
Man ermittle nun einen weiteren Gütewert dadurch, dass die hier
beschriebene Funktion mit der aktuellen neuen Stellung rekursiv
ausgerufen wird und addiere den zurückgebenen Wert der Rekursion zum
vorher ermittelten Gütewert aus dem Schlagen.
Man gebe diesen Wert als Rückgabewert nach oben, sofern die
Rekursionstiefe (mitzählen) >1 ist.
Damit ist die Rekursion geschlossen und die Rückgabewerte summieren
immer dann besonders hoch, wenn ein Zug zu einer Stellung führt, welche
zu weiteren gut bewerteten Stellungen geführt, weil sich bei den
durchgespielten Möglichkeiten ein guter Weg ergibt.
Abbruchkriterium ist "keine Figur mehr da", "König gefallen"
(Rückgabewert entsprechend groß) oder Rekursionstiefe > Limit.
Das System funktionierte so im Jahre 1993 am Hochschulrechenzentrum der
Uni Siegen und lieferte für jeden Eröffnungszug einen unterschiedlich
großen Wert zurück, sobald Züge dazu führen konnten, dass sich die
ersten Bauern ins Gehege kommen. Ich konnte es allerdings mit voller
Besetzung des Felder nur bis zur Rekursionstiefe von 3-4 laufen lassen,
weil sich der Server dann aufhängte.
Mit kleiner Besetzung, wie man es im Endspiel hat, ging es deutlich
weiter. Mit mehr Serverpower und RAM heutiger Rechner, müsste das weiter
zu treiben sein. In der gleichen Weise müsste sich auch ein Rubik-Würfel
lösen lassen.
Jürgen S. schrieb:> In der gleichen Weise müsste sich auch ein Rubik-Würfel> lösen lassen.
Dafür sind diese billigen massenhaft produzierten Kleincomputer ganz
praktisch, die mit Kamera und Display eine untrennbare Einheit bilden:
https://www.youtube.com/watch?v=_d0LfkIut2M
Ist schon älter, finde das aber immer wieder total beeindruckend.
Mike schrieb:> Kann ich nicht so recht ernst nehmen :-) Es ging mir darum nen> Schachcomputet zu bauen der kein Schachbrett braucht, nur die Anzeige> woher und wohin sozusagen.
Und bei den bereits in Beitrag
Beitrag "Re: Schachcomputer Eigenbau?" genannten war kein
passender dabei?
Percy N. schrieb:>> Vor 40 Jahren in APL, auf einem Mainframe. ;-)>> Ja, ja, immer der neueste heiße Scheiß!> FORTRAN oder Algol waren wohl nicht gut genug?
In der Schule waren recht viele Kinder von Mitarbeitern eines grösseren
Unternehmens aus der Nähe. Irgendwer kam auf die prägende Idee, ein IBM
Kugelkopf-Terminal mit Zugang zu dessen APL/SV System hin zu stellen.
Und so fing ich eben nicht mit BASIC oder PASCAL an, sondern mit APL.
Nun ist das nicht das beste Werkzeug für ein Schachprogramm, aber wenn
halt sonst nichts zur Verfügung steht... Die Schule fand die Idee mit
dem Schachprogramm allerdings nicht so gut, als die nächste Rechnung
kam.
Mike schrieb:> Ich habe ein wunderschönes Schachbrett und> Figurensatz, da will ich auch nen Schachcomputer dazu ;-)
Dann wäre vielleicht einer dieser billigen chinesischen Einarmroboter
die richtige Hardware dazu.