# c/c++ Abschlussprojekt - Schach ## Notwendige Umsetzungen 1. Klasse für Spielbrett 2. Oberklasse für Spielfiguren 1. Bauer 2. Dame 3. König 4. Läufer 5. Turm 6. Springer 3. Fancy User Interface 4. Speicherung des Spielbretts 5. Unentschieden anbieten 6. Aufgegeben ### Spielbrett - 8x8 Matrix - ANSI Linien checken - Unterscheidung von schwarzen und weißen Feldern - UTF-8 Spielfiguren - draw() Funktion - movement - Schachnotation - oder Klickbar? - Beschriftung des Spielbretts ### Spielfiguren - Interface für Implementierung? - Default Felder: - Art der Figure - UTF-8 Code - Schlagen: Ich sehe dich nach movement Regeln -> Du stirbst - Bauer: - Movement: 1 Felder, außer bei Start 1-2 Felder - Schlagen: 1 Feld vor Diagonal - Spezialmove: - Beförderung - En Passent - Wie? - Dame: - Movement: Fuck it, i do what i want - König: - Movement: Körperklaus. Ich kann nur ein Feld nach überall - Spezialmove: Castlen - Läufer: - Movement: Die Diagnal ist mir - Turm: - Movement: Vertikal und Horizontal - Springer: - Movement: L-Bewegung (2 nach vorn + 1 nach links oder rechts); Krake - Spezial Moves: - Rochade -> Kurz/Lang - En Passant - Stalemate - Bauer: 2 Felder - Umwandeln ## Optional wenn Lust und Zeit? 1. Bedienung per Maus 2. Multiplayer 3. Historie der Spielzüge 4. Gravejard der geschlagenen Figuren 5. König platzieren -> Anzeigen wer gewinnt # Gedankensammlung - Initialisierung: - Brett zeichnen - Figuren mit Zugmöglichkeiten ermitteln - Züge kalkulieren - Objekt mit allen Figuren erstellen -> alle Figuren initialisieren - Kalkulation der Züge - Anhand der aktuellen Position - Mit einbeziehen, dass Zug König nicht in Mate versetzt (verboten) - Sonder Züge, wie En passant, Rochade (Lang, Kurz), Bauern zwei Feld, beachten - Prüfen, ob andere Figuren im Weg stehen - Array von Linked Lists - Array Index steht für Richtung von Bewegungen (diagonalen, L, Gerade) - alles droppen, was nach pos mit Figur kommt -