c/c++ Abschlussprojekt - Schach
Notwendige Umsetzungen
- Klasse für Spielbrett
- Oberklasse für Spielfiguren
- Bauer
- Dame
- König
- Läufer
- Turm
- Springer
- Fancy User Interface
- Speicherung des Spielbretts
- Unentschieden anbieten
- 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?
- Bedienung per Maus
- Multiplayer
- Historie der Spielzüge
- Gravejard der geschlagenen Figuren
- 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
Figuren
- Läufer (Bishop)
- König (King)
- Königin (Queen)
- Turm (Rook)
- Bauer (Pawn)
- Pferd (Knight)
ToDo
- Speicherfunktion
- ToDos abarbeiten
- Anleitung schreiben
- Befehlen während des Spiel implementieren
- Bewegen funktioniert nicht -> Fixen!!!!
- Historie -> Spielzüge speichern und anzeigen
- Meldung für falschen Zug (Fehlermeldungen beim Spielen)
- Nach Beenden nicht Pfad in Anzeige stehen lassen
- Dark Mode
Erledigt
- Schachnotation (Lange)
- Menü (ASCII Art of TurboSchach)
- Startmenü
- Spielmenü mit Historie, Kommand
- Plattformunabhängiges CMD clearing vor dem Zeichnen
- Spezialbewegung (Rochade, Umwandlung, En passant)
Build
g++ -o chess.exe main.cpp ChessPieces/*.cpp Chessboard/*.cpp Player/*.cpp Visualizer/*.cpp
Voraussetzungen
- C++ 17
Description
Languages
C++
99.7%
Makefile
0.2%
PowerShell
0.1%