Hallo Leute,
ich sitz grad an einem C++ Codeproblem und hoffe auf Hilfe.
Ich wollte ein kleines Schachspiel programmieren um mit Klassen, Vererbung und Objektorientierung besser umzugehen.
Dafür habe ich die Klasse "c_piece" erstellt, die für die Verwaltung der einzelnen Spielfiguren zuständig ist. Diese beinhaltet grundlegende Sachen wie Position, Farbe und einzelne set und get-Funktionen für diese Variablen.
Das ganze habe ich so definiert:
|
C-/C++-Quelltext
|
1
|
c_piece c_pieces[32];
|
Nun habe ich 7 abgeleitete Klassen dieser Basisklasse erstellt, nämlich für die einzelnen Figurentypen (Bauer, Turm, Pferd, Läufer, Dame, König)
Bisher habe ich diese der Basisklasse recht umständlich zugewiesen und ich bin mir ziemlich sicher, dass dies auch nicht richtig ist, denn wenn ich auf eine Funktion der abgeleiteten Klasse über die Basisklasse (z.B. c_pieces[1]) zugreifen möchte, kennt dieser nur die Funktion der Basisklasse, obwohl ich diese als virtual definiert habe!
Hier meine Zuweisung:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
c_piece c_pieces[32]; // Erstelle 32 Figurenklassen für Zeiger
c_pawn c_pawns[16]; // und die abgeleiteten Klassen davon
c_rook c_rooks[4];
c_knight c_knights[4];
c_bishop c_bishops[4];
c_king c_kings[2];
c_queen c_queens[2];
// Weise der Basisklasse die abgeleiteten Klassen zu
for (unsigned int i = 0; i < 32; i++)
{
// Reihenfolge
// pawns, rooks, knights, bishops, kings, queens
if (i < 16)
c_pieces[i] = c_pawns[i];
else if (i < 20)
c_pieces[i] = c_rooks[i-16];
else if (i < 24)
c_pieces[i] = c_knights[i-20];
else if (i < 28)
c_pieces[i] = c_bishops[i-24];
else if (i < 30)
c_pieces[i] = c_kings[i-28];
else if (i < 32)
c_pieces[i] = c_queens[i-30];
}
|
Ich hoffe auf eure Unterstützung,
Gruß
Rusty1s