AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Schach

Ein Thema von Mathematiker · begonnen am 21. Mär 2013 · letzter Beitrag vom 28. Mär 2013
Antwort Antwort
Seite 3 von 4     123 4   
Mathematiker
Hallo,
als 3.Programm möchte ich mein Schachprogramm vorstellen. An diesem arbeite ich schon seit mehreren Jahren.

Gezogen werden die Figuren mit der Maus, wie sonst.
Man kann gegen den Computer spielen, was ganz gut geht. Die Wahl der Spielstufe gibt an, wie viele Halbzüge der Computer voraus denkt. Da mit jeder höheren Spielstufe der Berechnungsaufwand für den Computer exponentiell steigt, wird die "Denkzeit" des PCs auch schnell größer.
Auf einem hinreichend schnellen Computer dürfte Stufe = schwer noch machbar sein. Darüber hinaus braucht man etwas Geduld, bis das Programm den nächsten Zug macht.
Um ein Spiel nachzuverfolgen, kann man in der Zugliste einen Halbzug auswählen, so dass die Figuren auf diese Spielsituation positioniert werden. Durch Auswahl des nächsten Listeneintrags oder über die Schalter kann dann die Partie weiter verfolgt werden.

Wichtig ist noch, dass in meinem Schachprogramm keine Eröffnungsbibliothek enthalten ist. Alle Züge werden je nach Situation vom Computer berechnet. Dennoch gewinnt mein Programm gegen andere Schachprogramme, die mit einer Elo-Zahl von 1800 werben, in der Stufe "anspruchsvoll" fast immer.

Weitere Eigenschaften:
Der Spielstand einer Partie kann gespeichert und später wieder geladen werden.
Es kann ein Zugvorschlag abgerufen werden. Über das Menü können 26 verschiedene Standarderöffnungen geladen werden. Die Grundeinstellungen werden gespeichert.
Die Berechnung läuft über 2 Prozessorkerne.

Verrückt ist, dass ich gegen mein eigenes Programm (Stufe: anspruchsvoll) nur noch verliere. Aber unter Euch wird es ja bessere Schachspieler als mich geben.

Beste Grüße
Mathematiker

Rev 1: einige kleinere Änderungen, u.a. Korrektur der Zeitangabe.
Miniaturansicht angehängter Grafiken
schach.png  
Angehängte Dateien
Dateityp: zip schach2.zip (291,0 KB, 156x aufgerufen)

Geändert von Mathematiker (22. Mär 2013 um 21:21 Uhr)
 
Furtbichler
 
#21
  Alt 22. Mär 2013, 06:43
Nach http://oeis.org/A019319 gibt es schon für 10 Halbzüge am Spielanfang 81 Milliarden Möglichkeiten und mit jedem weiteren Halbzug mit einem Faktor steigend!
Ist das mit oder ohne Pruning?
  Mit Zitat antworten Zitat
Bjoerk

 
Delphi 10.4 Sydney
 
#22
  Alt 22. Mär 2013, 07:23
Würde mich interessieren wie du intern vorgehst? So?
  Mit Zitat antworten Zitat
Mathematiker
 
#23
  Alt 22. Mär 2013, 10:15
Hallo,
Ist das mit oder ohne Pruning?
Mit! Bei den 81 Milliarden werden nur die theoretisch möglichen Züge gezählt, wobei natürlich die mit der schlechtesten Bewertung schnell verworfen werden.
Würde mich interessieren wie du intern vorgehst? So?
Ganz so einfach ist es nicht.
Tatsächlich ermittelt das Programm zuerst alle möglichen Züge und Gegenzüge. Die Schwierigkeit ist aber, dass jede Stellung bewertet werden muss. In die Bewertung fließt die Figur, die Position auf dem Brett, ein möglicher Figurengewinnung, die Dynamik der Stellung und die Wechselwirkung mit anderen Figuren (Deckung, gemeinsamer Angriff, usw...) mit ein.
Gerade das macht die Berechnung aufwendig.
Das Programm versucht, so lange die Stellung als gut bewertet wird, zu gewinnen. Gibt es keine gute Bewertung mehr, wird ein Remis durch Figurenabtausch und Wiederholung der gleichen Stellung angestrebt.
Mein Programm arbeitet deterministisch, d.h. gleiche Stellungen liefern auch stets das gleiche Ergebnis. Das ist ein Nachteil gegenüber einem Schachspieler, der seine Züge auch psychologisch abwägt. Aus diesem Grund ist dieses Schachprogramm auch kein richtiger Gegner für gute Schachspieler.

Beste Grüße
Mathematiker

Geändert von Mathematiker (22. Mär 2013 um 10:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

 
FreePascal / Lazarus
 
#24
  Alt 22. Mär 2013, 12:00
Das Programm versucht, so lange die Stellung als gut bewertet wird, zu gewinnen. Gibt es keine gute Bewertung mehr, wird ein Remis durch Figurenabtausch und Wiederholung der gleichen Stellung angestrebt.
Ach darum. Nachdem ich die Qualität hatte, war das Program irgendwie "planlos".

Gruß
K-H
  Mit Zitat antworten Zitat
milchbrötchen
 
#25
  Alt 22. Mär 2013, 12:44
sehr gelungen das Spiel

was mir aufgefallen ist: die Zeiten "Computer rechnet" oben und "Zeit für.." rechts laufen bei mir unterschiedlich schnell..
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

 
Delphi 2007 Professional
 
#26
  Alt 22. Mär 2013, 16:01
Mein Programm arbeitet deterministisch, d.h. gleiche Stellungen liefern auch stets das gleiche Ergebnis.
Das ist mir auch schon aufgefallen, weil Computer gegen Computer häufig zu einer Zugwiederholung führt.
Frage: was passiert wenn mehrere Züge mit gleichgrossem Score gefunden werden, wählt das Programm dann immer den 1. Zug oder wird per Zufall einer der gleichwertigen Züge ausgewählt?
  Mit Zitat antworten Zitat
Mathematiker
 
#27
  Alt 22. Mär 2013, 16:58
Hallo,
Nachdem ich die Qualität hatte, war das Program irgendwie "planlos".
Das ist kein Wunder. Ein menschlicher Schachspieler erkennt seine Niederlage und gibt sich geschlagen. Ein "sturer" Computer versucht noch das Beste, d.h. den Gegner in ein Remis zu drängen. Der Gegner könnte ja noch einen Fehler machen.
was mir aufgefallen ist: die Zeiten "Computer rechnet" oben und "Zeit für.." rechts laufen bei mir unterschiedlich schnell..
Danke für den Hinweis. Werde ich überprüfen.
was passiert wenn mehrere Züge mit gleichgrossem Score gefunden werden, wählt das Programm dann immer den 1. Zug oder wird per Zufall einer der gleichwertigen Züge ausgewählt?
Die Züge werden nach Güte sortiert. Sind zwei gleichwertig, was sehr selten vorkommt, wird ein Halbzug weiter gerechnet. Sollte dann noch Gleichheit vorliegen, wird der 1.Zug genommen.

Beste Grüße
Mathematiker
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

 
Delphi 2005 Personal
 
#28
  Alt 22. Mär 2013, 19:44
Das Programm gefällt mir,
nur ich weiß nicht, ob jemand hier das Programm wirklich nach den gültigen Regeln gespielt hat. Wenn ich als weiss gegen Computer antrete, verbietet mir die Computerseite schon nach wenigen Zügen gültige Schachzüge, und zwar immer dann, wenn gegnerische Figuren bedroht sind.

Dazu wäre eine abspeichbare Aufzeichnung zum Spielverlauf hifreich
Wolfgang Mix

Geändert von Wolfgang Mix (22. Mär 2013 um 20:00 Uhr)
  Mit Zitat antworten Zitat
Mathematiker
 
#29
  Alt 22. Mär 2013, 20:25
Hallo,
Wenn ich als weiss gegen Computer antrete, verbietet mir die Computerseite schon nach wenigen Zügen gültige Schachzüge, und zwar immer dann, wenn gegnerische Figuren bedroht sind.
Bitte ein Beispiel!
Das Programm, zumindest der Zugmechanismus, wird seit Jahren von verschiedenen Leuten genutzt. Bisher gab es damit noch nie Probleme.
Kleinere Programmierfehler passieren mir immer mal wieder, aber so ein grober Schnitzer nicht!
Dazu wäre eine abspeichbare Aufzeichnung zum Spielverlauf hifreich
Ist ja vorhanden. Einfach über das Menü "Spielsteuerung/Spielstand speichern" die Zugliste abspeichern.

Beste Grüße
Mathematiker
  Mit Zitat antworten Zitat
Aviator

 
Delphi 10.3 Rio
 
#30
  Alt 22. Mär 2013, 21:17
was mir aufgefallen ist: die Zeiten "Computer rechnet" oben und "Zeit für.." rechts laufen bei mir unterschiedlich schnell..

Das ist mir ebenfalls aufgefallen. Nur so als Info, dass es kein "Einzelfall" ist
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf