Forum: Mikrocontroller und Digitale Elektronik Schachcomputer Eigenbau?


von Mike (Gast)


Lesenswert?

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.

von Olaf D. (Firma: O.D.I.S.) (dreyero)


Lesenswert?

Hi Mike,

schau mal Gnu Chess an:
https://www.gnu.org/software/chess/

Musst du nur portieren und mit einer geeigneten HW versehen.

Gruß
Olaf

: Bearbeitet durch User
von ML (Gast)


Lesenswert?

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

von Mike (Gast)


Lesenswert?

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.

von Michel (Gast)


Lesenswert?

Mike schrieb:
> Hi Leute hat hier schonmal jemand einen Schachcomputer programmiert?
> Gibt es gute bekannte offene Quellcodes? Ich würde so ein Dingens gerne
> bauen.

Kennst du den CT800? https://www.ct800.net
Den gibt es auch als Platine: https://github.com/d3rvita/ct800-pcb

Wenn es ein AVR sein soll, wie wäre es mit dem SHAH? (a.k.a. 
AVR-Schachzwerg) http://www.andreadrian.de/schach/
https://github.com/d3rvita/avr-schachzwerg

Es gibt noch den Mysticum: 
https://miclangschach.de/index.php?n=Main.MysticumE

Ansonsten gibts noch den hier: 
https://github.com/slashbyte/ChessComputer, RasPi in Chess Chellenger 
optik.

von Michel (Gast)


Lesenswert?

Michel schrieb:
> Wenn es ein AVR sein soll, wie wäre es mit dem SHAH?

Noch eine Variante davon: 
http://www.dietrich-kindermann.de/schachcomputer.html

von Guido L. (guidol1970)


Lesenswert?

Raspberry mit Display, wenn man ein Brett schon hat :)
https://hackaday.com/2019/01/06/raspberry-pi-powers-this-retro-chess-computer/

oder was kleines - der CHESSuino (evtl muss man da an einer besseren 
Zugeingabe arbeiten):
http://diego-cueva.com/projects/chessuino/

von (prx) A. K. (prx)


Lesenswert?

Mike schrieb:
> Hi Leute hat hier schonmal jemand einen Schachcomputer programmiert?

Vor 40 Jahren in APL, auf einem Mainframe. ;-)

von Jakob (Gast)


Lesenswert?

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.

von Sinus T. (micha_micha)


Lesenswert?

Sehr interessant zu diesem Thema und mit viel Geschichte, Teilweise 
Schaltungen vielen Links zu Quellen ist diese Seite:
http://www.andreadrian.de/schach/#Selbstbau_Schachcomputer_SHAH

Edit: edit

: Bearbeitet durch User
von Erwin D. (Gast)


Lesenswert?

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? ;-)

von Jakob (Gast)


Lesenswert?

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.

von Pandur S. (jetztnicht)


Lesenswert?

Allenfalls den IBM Deep Blue code downloaden ?

von Percy N. (vox_bovi)


Lesenswert?

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 ...

von Percy N. (vox_bovi)


Lesenswert?

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?

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

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/

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

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.

von Dumpfbacke (Gast)


Lesenswert?

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.

von Mike (Gast)


Lesenswert?

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.

von Michael W. (Gast)


Lesenswert?

Der Anspruch ist weniger, die Figuren zu machen und anzuzeigen, sondern 
eher die Strat hinter dem Spiel, sage ich mal.

von J. S. (engineer) Benutzerseite


Lesenswert?

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.

von retro (Gast)


Lesenswert?

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.

von Nop (Gast)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

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.

: Bearbeitet durch User
von Walter T. (nicolas)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.