bin Programmiereinsteiger: Schach-Logik

6 Antworten

Mal eine kleine mathematische Überlegung: für den ersten Halbzug beim Schach gibt es 20 Möglichkeiten (8 Bauern, die jeweils ein oder zwei Felder vorrücken können + 4 Positionen der Springer), beim ersten ganzen Zug sinds 40. Nach zwei Zügen hast du schon insgesamt (laut Wikipedia) 72084 Möglichkeiten, nach noch mehr Zügen explodiert dir diese Anzahl förmlich. Du siehst also, dass eine richtige Schachtaktik gar nicht mal so leicht zu implementieren ist.

Eine ganz simple KI könntest du so bauen, dass du eine zufällige Schachfigur auswählst, ein zufälliges Feld nimmst, auf das diese Figur ziehen darf (wenn es kein Feld gibt, dann muss eine andere Figur gewählt werden) und dann den Zug vornimmst. Erweitern könnte man das noch, dass alle Figuren und ihre Positionen durchgegangen werden und wenn eine Figur schlagen kann, dann wird geschlagen. Insgesamt halte ich die Aufgabe aber trotzdem für sehr anspruchsvoll, ich würde lieber erstmal Dame, Mensch ärgere dich nicht oder ein einfaches Kartenspiel (etwa Black Jack) nachbauen. Eine schöne Anfängeraufgabe ist es auch, programmiertechnisch zu ermitteln, auf welchem Feld man bei Monopoly mit der höchsten Wahrscheinlichkeit landet.

HTML und CSS sind keine Programmiersprachen und JavaScript ist für die Aufgabe auch nicht ganz so gut geeignet, da doch recht inperformant im Umgang mit großen Datenmengen ist.

Wäre es nicht besser, wenn er einfachere Dinge programmieren würde. Er ist Programmieranfänger!!

0
@wolfgang1956

Den qualitativen Unterschied zwischen meinem Schachalgorithmus und Houdini, Fritz 10 … 13, Stockfish, Shredder … erkennst du aber auch, oder? Und mMn. ist die Aufgabe durchaus begleitend zu seinem Lehrbuch machbar und wenn er eine Aufgabe vor Augen hat, dann ist seine Motivation auch höher. Es ist doch langweilig, wenn beim Programmieren immer alles gleich klappt, weil die Aufgabe zu einfach ist.

1
@ceevee

Mehr wie Hello World oder ein Kaufhausprogramm hast du ja noch nicht zusammengestoppelt, sonst würdest du nicht so einen totalen Unsinn daherschreiben.

0
@wolfgang1956

Geht der Kommentar noch arroganter? Komm, da kannst du dich sicher noch steigern. Ich bin schon seit ein paar Jahren Softwareentwickler, ich denk mir auch was bei meinen Kommentaren. ;)

0
@ceevee

Doch!! Ich spiele seit über 50!! Jahren Schach und kenne die Schachengines von Fritz 10 … 13, Shredder und einige andere. Daher weiß ich zum einen, was diese Programme leisten und zum anderen wie sie funktionieren. Dieses Wissen sollte man eben haben, bevor man in Programmiereinsteigern völlig falsche Hoffnungen weckt …

Battlechess u.ä. sind diese Programme schon längst entwachsen …

0

Er will nicht die Anzahl der Halbzüge wissen, sondern ein „KI-Schachprogramm“ programmieren.

KI war in den von Mitte der 70er bis Mitte der 90er Jahre ein Thema, zu dem jedes Quartal ein anderer Forscher was veröffentlicht hat, bis die KI-Forscher auf den realen Boden der Tatsachen zurückkamen und seither sehr sehr sehr leise wurden; d.h. sie haben andere Forschungsgebiete entdeckt, auf denen man wirklich vorwärtskommen kann.

Ebenso wie die Neurochirurgen im Hirn keinen Geist finden, vermochten die KI-Forscher in den KI-Routinen keine „Intelligenz“ in den Algorithmen zu finden. Obwohl man die Algorithmen heute deutlich intelligenter gestaltet als vor 30 Jahren. Es ist ja immerhin ein Fortschritt, wenn man objekt-orientiert programmiert, statt in Assembler oder imperativ-deklarativ!

0

Man kann zwar sagen, daß Du Dir für einen Anfänger die Latte gleich hoch gelegt hast. Aber das macht nichts, ganz im Gegenteil. Wenn gerade diese Aufgabe Dich motiviert, dann sorgt sie dafür, daß Du Deine Energie gut darauf bündeln kannst und nicht gleich wieder Langeweile bekommst und aufgibst, sobald es anstrengend wird. Du wirst unterwegs öfters merken, daß Du an Deine Grenzen kommst, aber das ist gut so, denn die Grenzen ist das beste Navi, das Dir ansagt, was als nächstes dazuzulernen ist und so merkst Du auch, wie Du vorankommst.

Ein Schachprogramm in JavaScript zu schreiben, ist eine schöne Übung. Einige haben das schon gemacht.

  • google.de/#q=chess+program+javascript
  • js1k.com/2010-first/demo/750

Meine Empfehlung: Fang mit dem Spielfeld und den Figuren an, schreib den Code für die Maus und dann kümmere Dich um die Spielregeln. Dann siehst Du weiter.

Viel Spaß dabei!

Wäre es nicht besser, wenn er einfachere Dinge programmieren würde. Er ist Programmieranfänger!!

0
@wolfgang1956

Am besten ist es, wenn er selbst erfährt, was einfach und was schwierig für ihn ist. Man hilft Kindern ja auch nicht beim Laufenlernen, indem man sie dazu anhält, sich zuerst im Krabbeln zu üben. Krabbeln tun sie ganz von selbst, weil sie von hier nach dort wollen. Sobald sie aber Lust haben, auf zwei Beinen dorthin zu laufen, wo sie hinwollen, ist das gut so. Das Hinfallen und wieder Aufstehen gehört dazu.

3
@Franz1957

Das Laufenlernen ist ja wohl an ganz miserabler Vergleich zum Lernen der Programmierlogik!

In der Schule lernt man erst einmal die Ziffern und Buchstaben kennen, bevor man schreiben und rechnen lernt. Weder den Zahl- noch den Schriftzeichen kann man ansehen, dass später ein geschriebenes Wort oder eine Zahl Sinn und Bedeutung haben.

0
@wolfgang1956

Daß die Zeichen Sinn und Bedeutung haben, sehen Kinder daran, wie die größeren Mitmenschen mit den Zeichen umgehen, wie sie lesen und wie sie schreiben. Als ich ein Kind war, wurden in meiner Umgebung Zeitungen und Bücher gelesen und Briefe geschrieben und in der Küche packte meine Mutter nach dem Einkauf Päckchen aus, auf denen auch solche Zeichen drauf waren. Ich fragte sie, was die Zeichen bedeuten und sie erklärte mir, was sie bedeuten: IMI, ATA, OMO, PRIL, MAGGI, PFANNI, AURORA, KABA, usw. Ich fragte weiter und bekam Antworten und so lernte ich lesen und schreiben. Da war ich vier. So funktioniert Lernen.

2
@Franz1957

Aber Laufenlernen ist da eine völlig andere Art von Komplexität wie Schreiben- oder Rechnenlernen …

0

Ehrlich gesagt, bewundere ich die Geduld der Leute, die deine Frage ernst nehmen. Die Frage ist eigentlich der Brüller des Tages!

Der erste Schachcomputer wurde ganz sicher nicht in einer Hochsprache programmiert und schon gar nicht in einer Browsersprache geschrieben.

Selbst ein Sudokulöser ist eine Herausforderung! Bei Schach sind dermaßen viele strategische Variablen zu berücksichtigen ... Es ist Zeitverschwendung, das hier ernsthaft zu erörtern. Wie soll der Computer entscheiden, welcher von 50 möglichen Zügen der sinnvollste ist?

Vorschlag: Versuche es mit einem Damespiel. Das kannst du dann noch immer zum Schach erweitern, wenn du bis dahin nicht verzweifelt bist.

Ein anderer Vorschlag für textbasierte KI: Schreib ein Psychiater-Programm, mit dem man sich unterhalten kann und nicht merkt, dass der Gegenüber kein Mensch ist!

Du hast nicht einmal sooo Unrecht. Wir hiesigen Laien können ihm ja wohl kaum die Algorithmen für ein Schachprogramm oder eines deiner Programme liefern … :-)

0

Wie kann ich mich im Schach verbessern?

Ich habe das Grfühl, dass ich im Schach eine Niete bin und möchte mich verbessern, wie kann ich dafür trainieren?

...zur Frage

Sozialversicherungsnummer wo bekomme ich sie her?

Hallo, ich fange in kürze meine Ausbildung an, daher benötige ich meine Sozialversicherungsnummer woher bekomme ich die?

...zur Frage

Wie kann ich einem Anfänger das Schach am besten beibringen?

Hallo alle zusammen,

ich möchte jemanden, den ich gut kenne, das Schach beibringen, die Regeln kennt er ja schon. Aber wie soll ich mit dem Beibringen weitermachen? Wie bringe ich ihm bei, wie man taktische Motive erkennt? Geht das auch, ohne Bücher zu kaufen? Zum Einen habe ich nicht das Geld, um mir Bücher zu kaufen, zum Anderen fürchte ich, dass das Material in den Büchern zu komplex und somit zu schwierig wäre.

Am besten auch kein Online-Schach.

Ich freue mich schon auf eure gewohnt hilfreichen Antworten
Gruß rofl07

...zur Frage

Master-Studium nach Fachinformatiker-Ausbildung?

Hallo. Ich bin mit meiner Fachinformatiker-Ausbildung fertig. Natürlich weiß ich genau so viel und vor allem viel praktischer und angewandter wie der Hase läuft als meine akademischen Kollegen. Dennoch möchte ich nun auch noch ein Studium drauf setzen. Muss ich mit einem Bachelor wieder bei 0 anfangen oder kann ich direkt mit dem Master anfangen?

...zur Frage

Prüfung Fachinformatiker Anwendungsentwicklung ohne Ausbildung?

Hallo, kann man die Prüfung zum Fachinformatiker schreiben ohne eine Ausbildung gemacht oder gehabt zu haben? Wenn ja, wird das auch von allen/den meisten Betrieben akzeptiert? Und wo kann ich mich diesbezüglich informieren?

...zur Frage

Welche Mathe-Themen sollte man drauf haben, wenn man die Ausbildung "Fachinformatiker für Anwendungsentwicklung" einschlagen möchte?

...zur Frage

Was möchtest Du wissen?