AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schach - Fehlerbeseitigung

Ein Thema von Danny92 · begonnen am 21. Mär 2019 · letzter Beitrag vom 25. Mär 2019
Antwort Antwort
Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Schach - Fehlerbeseitigung

  Alt 21. Mär 2019, 22:00
Ich habe im Anhang mein geschriebenes Schachprogramm angehängt. Leider funktioniert es nicht so ganz perfekt. Manchmal zieht die KI einen meiner Figuren, oder sie folgt nicht den Regeln. Zum Beispiel kam es vor, dass die KI hin und wieder das Schach nicht parierte.

Dass es nicht gerade effizient programmiert ist, kann ich mir aufgrund der Langsamkeit (Schwierigkeitsstufe höchstens auf 2 Züge vorraus) schon denken. Auch sind ein paar Einzelheiten, wie beispielsweise die Rochade oder die Bauernumwandlung, noch nicht programmiert. Ich sitze schon sehr lange nur an der KI und bekomme sie einfach nicht schnell, oder zumindest fehlerfrei, programmiert.

Ich würde mich freuen, wenn jemand den einen oder anderen Fehler darin erkennen und ihn mir mitteilen würde. Ich kann nämlich echt nichts mehr finden. Auch über hilfreiche Tipps freue ich mich!

Vielen Dank!
Angehängte Dateien
Dateityp: zip Schach.zip (916,0 KB, 28x aufgerufen)

Geändert von Danny92 (21. Mär 2019 um 22:02 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Schach - Fehlerbeseitigung

  Alt 22. Mär 2019, 07:55
Hallo,
habe nur kurz reingeschaut. Erster Tpp: dokumentiere mal alles. Da machst du es erstens anderne leichter den Code zu verstehen und zum anderen kommst du dann eher selber drauf was falsch läuft.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.034 Beiträge
 
Delphi 12 Athens
 
#3

AW: Schach - Fehlerbeseitigung

  Alt 22. Mär 2019, 14:18
Nutze dazu am besten xmldoc Kommentare. Vor einer Methoden Deklaration Strg-J daran s und summary auswählen. Enter und Kommentar schreiben. Mit der Maus dann über einen Aufruf der Methode fahren...
Gibt es auch als param und return
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Schach - Fehlerbeseitigung

  Alt 23. Mär 2019, 12:25
Ja ich war noch nie ein großer Fan von Kommentaren, der Code ist ohnehin schon lange genug. Ich verstehe dass Kommentare zur Verständlichkeit beitragen mögen. Ich habe aber versucht, den Funktionen, Prozeduren und Variablen sprechende Namen zu geben, die eigentlich schon für sich sprechen. Also was die boolesche Funktion "IstSchach" macht oder was in vkoenigweisskoordinate vom Typ TPoint gespeichert ist, muss ich ja wohl nicht groß erläutern. Aber ich beantworte gerne jede unklare Frage.

Ich habe das Programm nochmal bearbeitet und bin auch schon viel weiter gekommen: Das Programm ist jetzt spielbar und die KI sollte keine Fehler mehr machen; Schach, Patt und Matt wird erkannt und en passant sollte ebenfalls funktionieren. Bauernumwandlung und Rochade muss ich immer noch implementieren. Mir ging es aber wie gesagt zunächst um die Fehlerbehebung, damit es überhaupt spielbar ist. Ob die KI auch als schwarz fehlerfrei arbeitet, habe ich noch nicht getestet.

Nun geht es mir nur noch um die Spielstärke und dann zuletzt noch um die Effizienz bzw. Schnelligkeit. Selbst bei acht vorausberechnenden Zügen (wo die KI hier schon (zu) lange rechnen muss) gewinnt man immer noch spielend leicht, was eigentlich gar nicht sein dürfte/sollte. Daraus schließe ich, dass in dem Quellcode, genauer gesagt im Alpha-Beta-Algorithmus (welcher für solche Spiele gängig ist) oder vielleicht auch in der Bewertungsfunktion, ein Fehler stecken muss. Und den zu finden, finde ich fast unmöglich in Anbetracht der Komplexität des Programms. Kann mir da irgendwer weiterhelfen?

Ansonsten macht es jetzt schon echt Spaß mit dem Programm rumzuspielen..

Danke.
Angehängte Dateien
Dateityp: zip Schach.zip (922,3 KB, 18x aufgerufen)

Geändert von Danny92 (23. Mär 2019 um 12:31 Uhr)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Schach - Fehlerbeseitigung

  Alt 23. Mär 2019, 13:19
Zitat:
Selbst bei acht vorausberechnenden Zügen (wo die KI hier schon (zu) lange rechnen muss)
Alles eine Frage der Codeeffizienz. Hier gibt es bestimmt Optimierungsmöglichkeiten (habe nicht in deinen Code reingeguckt).
Vielleicht hilft dir diese Seite https://www.chess.com/de/analysis
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Schach - Fehlerbeseitigung

  Alt 23. Mär 2019, 17:34
Wie macht man denn zum Beispiel den Code effizient? Ich könnte u. a. ausschließlich Referenzparameter in den Methoden übergeben, um zeit-intensives Kopieren der Variablen zu sparen. Außerdem verwende ich mit Mergesort schon einen Sortieralgorithmus mit bester asymptotischer Laufzeit. Die Vorsortierung der Züge anhand ihrer Bewertungen wird ja beim Alpha-Beta-Algorithmus ohnehin empfohlen. Aber viel mehr weiß ich dann auch nichts effizienter zu machen...

Die Website ist echt interessant, aber ob mir das viel weiterhelfen wird...

Geändert von Danny92 (23. Mär 2019 um 17:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 21:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz