LibaryZusammenfassung und Quellen. Mit ChatGPTlinks und Githublink
parent
d16aa13804
commit
c8dfcab90e
|
@ -0,0 +1,259 @@
|
||||||
|
1. Methode toPGN ist vorhanden in Klasse Game.java!!! Mit MoveGenerator werden schon alle legalen züge angezeigt!!!
|
||||||
|
|
||||||
|
2. Klassen von GPT zusammengefasst:
|
||||||
|
https://chatgpt.com/share/684326dc-4ea0-8012-8c10-8b34993140b7
|
||||||
|
|
||||||
|
Event:
|
||||||
|
|
||||||
|
Die Klasse Event beschreibt ein Schachturnier oder -ereignis mit Name, Ort, Datum, Zeitkontrollen, Rundenstruktur und referenzierten PGN-Daten.
|
||||||
|
|
||||||
|
|
||||||
|
EventType:
|
||||||
|
|
||||||
|
EventType beschreibt den strukturellen Typ eines Schachturniers (z. B. KO-System, Rundenturnier oder Analyseveranstaltung).
|
||||||
|
|
||||||
|
|
||||||
|
Game:
|
||||||
|
|
||||||
|
Die Klasse Game speichert und verwaltet alle Informationen einer Schachpartie – wie Züge, Spieler, Kommentare und Metadaten – und erlaubt deren Analyse, Bearbeitung und Ausgabe im PGN-Format.
|
||||||
|
|
||||||
|
|
||||||
|
GameContext:
|
||||||
|
|
||||||
|
Die Klasse GameContext stellt alle benötigten Informationen und Methoden bereit, um Rochaden und Schachvarianten (z. B. Chess960) regelkonform zu verwalten und korrekt zu validieren.
|
||||||
|
|
||||||
|
|
||||||
|
GameFactory:
|
||||||
|
|
||||||
|
GameFactory stellt statische Hilfsmethoden bereit, um neue Schachobjekte (Spiel, Spieler, Runde, Event) schnell und einheitlich zu erzeugen.
|
||||||
|
|
||||||
|
|
||||||
|
GameMode:
|
||||||
|
|
||||||
|
GameMode legt fest, ob eine Partie zwischen Menschen, Maschinen oder gemischt (z. B. Engine vs Mensch) gespielt wird.
|
||||||
|
|
||||||
|
|
||||||
|
GameResult:
|
||||||
|
|
||||||
|
GameResult beschreibt, wie eine Schachpartie geendet hat (Sieg, Remis oder noch laufend) und verknüpft dies mit der entsprechenden PGN-Notation.
|
||||||
|
|
||||||
|
|
||||||
|
MoveGeneratorException
|
||||||
|
|
||||||
|
MoveGeneratorException signalisiert Fehler beim Generieren von Schachzügen und erlaubt dabei flexible Fehlerbeschreibungen.
|
||||||
|
|
||||||
|
|
||||||
|
MoveList
|
||||||
|
|
||||||
|
MoveList verwaltet eine Folge von Schachzügen und erlaubt deren Umwandlung, Validierung und Darstellung in verschiedenen Notationen basierend auf einer Ausgangsstellung.
|
||||||
|
|
||||||
|
|
||||||
|
GameLoader:
|
||||||
|
|
||||||
|
Die Klasse GameLoader lädt eine vollständige Schachpartie inklusive aller Metadaten und Züge aus einem PGN-Dateiiterator und wandelt sie in ein Game-Objekt um.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
GenericPlayer:
|
||||||
|
|
||||||
|
Die Klasse GenericPlayer implementiert das Player-Interface und speichert die wichtigsten Eigenschaften eines Schachspielers wie Name, Elo, Typ (Mensch/Maschine) und Beschreibung.
|
||||||
|
|
||||||
|
|
||||||
|
Mode:
|
||||||
|
|
||||||
|
Mode beschreibt den Austragungsort einer Partie: entweder als Präsenzspiel am Brett (OTB) oder über einen Online-Server (ICS).
|
||||||
|
|
||||||
|
|
||||||
|
MovePerTime:
|
||||||
|
|
||||||
|
MovePerTime beschreibt eine Zeitkontrolle, bei der eine bestimmte Anzahl an Zügen in einer definierten Zeit (in Millisekunden) gespielt werden muss, z. B. 40/5400 (40 Züge in 90 Minuten).
|
||||||
|
|
||||||
|
|
||||||
|
Player:
|
||||||
|
|
||||||
|
Player ist ein Interface, das die grundlegenden Eigenschaften und Methoden eines Schachspielers festlegt, darunter ID, Name, Elo, Typ und eine ausführliche Beschreibung.
|
||||||
|
|
||||||
|
|
||||||
|
PlayerType:
|
||||||
|
|
||||||
|
PlayerType unterscheidet, ob ein Spieler ein Mensch (HUMAN) oder eine Engine (ENGINE) ist.
|
||||||
|
|
||||||
|
|
||||||
|
Round:
|
||||||
|
|
||||||
|
Round speichert eine bestimmte Runde eines Schachturniers und enthält eine Liste aller Partien (Game), die in dieser Runde gespielt werden.
|
||||||
|
|
||||||
|
|
||||||
|
Termination:
|
||||||
|
|
||||||
|
Termination gibt an, warum eine Partie beendet wurde, z. B. regulär, durch Zeitüberschreitung, Regelverstoß oder Abbruch.
|
||||||
|
|
||||||
|
|
||||||
|
TimeControl:
|
||||||
|
|
||||||
|
TimeControl speichert verschiedene Zeitregelungen für eine Partie – etwa klassische Zeitkontrollen, Bonuszeiten (Inkrement), feste Zugvorgaben, Knoten-/Tiefenlimits (für Engines) und gibt sie als PGN-kompatible Zeichenkette zurück.
|
||||||
|
|
||||||
|
|
||||||
|
TimeControlType:
|
||||||
|
|
||||||
|
TimeControlType gibt an, in welchem Modus eine Zeitkontrolle funktioniert, z. B. klassisches Zeitlimit mit Inkrement, Zeit pro Zug, feste Tiefe oder Knotenzahl (für Engines).
|
||||||
|
|
||||||
|
|
||||||
|
VariationType:
|
||||||
|
|
||||||
|
VariationType gibt an, welche Schachvariante gespielt wird – z. B. Standard-Schach, Chess960 oder Varianten mit speziellen Rochaderegeln oder Figurenmechaniken.
|
||||||
|
|
||||||
|
|
||||||
|
Move:
|
||||||
|
|
||||||
|
Move repräsentiert einen einzelnen Schachzug mit Start- und Zielfeld, optionaler Bauernumwandlung sowie SAN-Notation, und kann als Ereignis (BoardEvent) weiterverarbeitet werden.
|
||||||
|
|
||||||
|
|
||||||
|
MoveConversionException:
|
||||||
|
|
||||||
|
MoveConversionException signalisiert, dass ein Zug nicht korrekt aus einem Text (z. B. "e2e99" oder "z9z8Q") in ein gültiges Move-Objekt umgewandelt werden konnte.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MoveException:
|
||||||
|
|
||||||
|
MoveException signalisiert, dass ein Zug nicht auf dem aktuellen Spielstand ausgeführt werden kann – typischerweise, weil er regelwidrig, unmöglich oder logisch inkonsistent ist.
|
||||||
|
|
||||||
|
|
||||||
|
MoveGenerator:
|
||||||
|
|
||||||
|
MoveGenerator stellt statische Hilfsmethoden bereit, um aus einem gegebenen Schachbrettzustand alle möglichen Züge (pseudo-legal oder legal) zu erzeugen, einschließlich Spezialzüge wie Rochade oder Bauernumwandlungen.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PgnException
|
||||||
|
|
||||||
|
Die Klasse PgnException signalisiert Laufzeitfehler beim Parsen oder Einlesen von PGN-Schachpartien.
|
||||||
|
|
||||||
|
|
||||||
|
PgnHolder
|
||||||
|
|
||||||
|
Die Klasse PgnHolder verwaltet das Einlesen, Speichern und Abrufen von Schachpartien aus PGN-Dateien und organisiert dabei Spieler, Events und Spiele zentral in einer leicht zugänglichen Struktur.
|
||||||
|
|
||||||
|
|
||||||
|
PgnIterator
|
||||||
|
|
||||||
|
Die Klasse PgnIterator ermöglicht das speicherschonende Durchiterieren von Schachpartien in einer PGN-Datei, indem sie zeilenweise liest und jede Partie einzeln verarbeitet.
|
||||||
|
|
||||||
|
|
||||||
|
PgnLoadListener
|
||||||
|
|
||||||
|
Die Schnittstelle PgnLoadListener erlaubt es, auf Fortschritte beim Laden von PGN-Partien zu reagieren, indem sie bei jedem Ladefortschritt benachrichtigt wird.
|
||||||
|
|
||||||
|
|
||||||
|
PgnProperty
|
||||||
|
|
||||||
|
|
||||||
|
Die Klasse PgnProperty modelliert eine einzelne PGN-Eigenschaft (Tag) und stellt Hilfsmethoden bereit, um sie aus einer Textzeile zu erkennen und zu extrahieren.
|
||||||
|
|
||||||
|
|
||||||
|
UnicodePrinter
|
||||||
|
|
||||||
|
|
||||||
|
Die Klasse UnicodePrinter druckt ein Schachbrett-Objekt (Board) als ASCII-Art mit Unicode-Schachsymbolen zeilenweise in die Konsole oder in einen beliebigen Ausgabestrom.
|
||||||
|
|
||||||
|
|
||||||
|
LargeFile
|
||||||
|
|
||||||
|
|
||||||
|
Die Klasse LargeFile erlaubt das effiziente und speicherschonende zeilenweise Lesen großer Textdateien oder Eingabeströme durch Bereitstellung eines einfachen Java-Iterators.
|
||||||
|
|
||||||
|
|
||||||
|
StringUtil
|
||||||
|
|
||||||
|
|
||||||
|
Die Klasse StringUtil stellt nützliche Methoden zur Verfügung, um Zeichenketten effizient zu analysieren, zu verändern und zu übersetzen – insbesondere bei der Verarbeitung von Schach-PGN-Daten.
|
||||||
|
|
||||||
|
|
||||||
|
XorShiftRandom
|
||||||
|
|
||||||
|
Die Klasse XorShiftRandom implementiert einen leistungsfähigen, einfachen Pseudozufallszahlengenerator auf Basis des Xorshift-Verfahrens, der deterministische long-Werte durch Bitoperationen erzeugt.
|
||||||
|
|
||||||
|
|
||||||
|
Bitboard
|
||||||
|
|
||||||
|
Die Klasse Bitboard stellt für jedes Schachfeld und diverse Feldergruppen (Reihen, Linien, Diagonalen) Bitmasken bereit, um Schachpositionen effizient mit Bitoperationen zu verarbeiten.
|
||||||
|
|
||||||
|
|
||||||
|
Board
|
||||||
|
|
||||||
|
Die Klasse Board modelliert ein vollständiges Schachbrett inklusive Spielregeln, Figurenpositionen, Zugverlauf und ermöglicht die Validierung, Durchführung und Rücknahme von Schachzügen.
|
||||||
|
|
||||||
|
|
||||||
|
BoardEvent
|
||||||
|
|
||||||
|
Das Interface BoardEvent definiert die Struktur für Ereignisse, die beim Ändern des Schachbretts ausgelöst und an Listener weitergegeben werden können.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BoardEventListener
|
||||||
|
|
||||||
|
Das Interface BoardEventListener erlaubt es, auf Ereignisse wie Züge oder Statusänderungen des Schachbretts zu reagieren, indem es über die Methode onEvent() benachrichtigt wird.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BoardEventType
|
||||||
|
|
||||||
|
Das Enum BoardEventType definiert die Arten von Ereignissen, die auf einem Schachbrett ausgelöst und über Event-Listener verarbeitet werden können – etwa beim Ziehen, Zurücknehmen oder Laden.
|
||||||
|
|
||||||
|
|
||||||
|
CastleRight
|
||||||
|
|
||||||
|
Das Enum CastleRight beschreibt, ob eine Seite im Schach kurz, lang, beides oder gar nicht rochieren darf.
|
||||||
|
|
||||||
|
|
||||||
|
Constants
|
||||||
|
|
||||||
|
Die Klasse Constants bündelt feste, zentrale Informationen und Züge wie die Start-FEN, Rochadepfade und Figur-Notation, um typische Schachsituationen schnell und konsistent abrufen zu können.
|
||||||
|
|
||||||
|
|
||||||
|
DiagonalA1H8
|
||||||
|
|
||||||
|
Die Enum DiagonalA1H8 listet alle rechtsschiefen (↘️) Diagonalen des Schachbretts als konstante Werte mit eindeutiger Namensgebung der Begrenzungsfelder auf.
|
||||||
|
|
||||||
|
|
||||||
|
DiagonalH1A8
|
||||||
|
|
||||||
|
Die Enum DiagonalH1A8 listet alle linksschiefen (↙️) Diagonalen des Schachbretts auf, wobei jede Diagonale durch ihre Randfelder eindeutig benannt ist.
|
||||||
|
|
||||||
|
|
||||||
|
File
|
||||||
|
|
||||||
|
Das Enum File beschreibt die Spalten (A–H) des Schachbretts samt zugehöriger Notation und ermöglicht deren einfache Nutzung in Code und Notationen.
|
||||||
|
|
||||||
|
|
||||||
|
MoveBackup
|
||||||
|
|
||||||
|
Die Klasse MoveBackup speichert alle relevanten Zustandsinformationen eines Schachbretts vor einem Zug, um diesen später vollständig rückgängig machen zu können.
|
||||||
|
|
||||||
|
|
||||||
|
Piece
|
||||||
|
|
||||||
|
Die Klasse Piece repräsentiert jede konkrete Schachfigur mit Farbe und Typ und bietet Methoden zur Erstellung und Notation dieser Figuren.
|
||||||
|
|
||||||
|
|
||||||
|
PieceType
|
||||||
|
|
||||||
|
PieceType beschreibt die Typen von Schachfiguren (z. B. Turm, König) und verknüpft sie mit ihrer algebraischen Notation für einfache Identifikation und Verarbeitung.
|
||||||
|
|
||||||
|
|
||||||
|
Rank
|
||||||
|
|
||||||
|
Rank beschreibt die horizontalen Reihen des Schachbretts und stellt deren numerische Notation zur Verfügung, um Positionen eindeutig identifizieren zu können.
|
||||||
|
|
||||||
|
|
||||||
|
Side
|
||||||
|
|
||||||
|
Side repräsentiert eine der beiden Spielerparteien im Schach – Weiß oder Schwarz – und ermöglicht den einfachen Wechsel der Seite mit der Methode flip().
|
||||||
|
|
||||||
|
|
||||||
|
Square
|
||||||
|
|
||||||
|
Square ist ein mächtiges enum, das jedes Schachfeld eindeutig repräsentiert und dabei zahlreiche Hilfsmethoden zur Brettlogik und Bitboard-Darstellung bereitstellt. Es ist eine der Grundpfeiler des gesamten Schachsystems.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
Quellen
|
||||||
|
|
||||||
|
Valentin Weller | 3019075
|
||||||
|
|
||||||
|
Junit: https://chatgpt.com/share/6859a713-4b98-8012-8cb2-a9f3c7fb37c8
|
||||||
|
QuickSave: https://chatgpt.com/share/6859a73f-e750-8012-a168-f9fa7c5487bd
|
||||||
|
PGNs: https://chatgpt.com/share/6859a8f1-d3c4-8012-98f4-6ae4b057be73
|
||||||
|
https://chatgpt.com/share/6859a95a-cca8-8012-bbbe-4e4b4517d5d9
|
||||||
|
|
||||||
|
Eröffnungserkennung: https://github.com/hell-sh/CompactChessOpenings/blob/master/src/sh/hell/compactchess/game/Opening.java
|
Loading…
Reference in New Issue