Abend all,
Hier ist der Quellcode eines Schach-Proggs. Es soll kein Spielzug (erstmal) zum ausführen da sein, sondern nur die Visualisierung enthalten.
Dem array brett (brett : array[TSpalte,TZeile] of TFigur wird immer zugewiesen, welche Figur auf welchem Feld (a1, b1, c2, ... ) steht und welche Farbe das Feld hat. An der Stelle im Quellcode "//Visualisierung (Figuren/Farben)" soll nun die Zuweisungen im Stringgrid bidllich ausgegeben werden. Dazu lasse ich das Array brett durchlaufen und für jede Zelle lasse ich einen Outstring ausgeben.Diesen Outstring habe ich vorher unter "//Outstringzuweisung" (//Farben, //Figuren) immer deklariert. Mein Problem jetzt ist, dass in jedem Feld des Stringggrids, egal welche Figur/Farbe ich vorher zugewiesen hab ein grosses "T" (für Bauer) ausgeben wird und Farben gänzlich fehlen.
<PRE>
type
TKoerper = (Turm, Springer, Laeufer, Dame, Koenig, Bauer, Leer);
TFarbe = (Weiss, Schwarz, Keine);
TSpalte = (a, b, c, d, e, f, g, h);
TZeile = 1..8;
TFigur = record
form: TKoerper;
farbe: TFarbe;
end;
TForm1 = class(TForm)
BrettStringGrid: TStringGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
</PRE><PRE>
procedure TForm1.FormCreate(Sender: TObject);
var
brett : array[TSpalte,TZeile] of TFigur;
Spalte : TSpalte;
Zeile : TZeile;
outstring : string;
muh : integer;
begin
//Zweisungen (Figuren)
//erste und letzte Zeile
for Spalte := a to h do
begin
brett[Spalte,1].form := Turm;
brett[Spalte,1].form := Springer;
brett[Spalte,1].form := Laeufer;
brett[Spalte,1].form := Dame;
brett[Spalte,1].form := Koenig;
brett[Spalte,1].form := Laeufer;
brett[Spalte,1].form := Springer;
brett[Spalte,1].form := Turm;
end;
</PRE><PRE>
for Spalte := a to h do
begin
brett[Spalte,8].form := Turm;
brett[Spalte,8].form := Springer;
brett[Spalte,8].form := Laeufer;
brett[Spalte,8].form := Dame;
brett[Spalte,8].form := Koenig;
brett[Spalte,8].form := Laeufer;
brett[Spalte,8].form := Springer;
brett[Spalte,8].form := Turm;
end;
</PRE><PRE>
//zweite und vorletzte Zeile
for spalte := a to h do
begin
brett[spalte,2].form := Bauer;
brett[spalte,7].form := Bauer;
end;
</PRE><PRE>
//dritte bis sechste Zeile
for Spalte := a to h do
for Zeile := 3 to 6 do
Brett[Spalte,Zeile].form := Leer;
</PRE><PRE>
//Zuweisungen (Farben)
</PRE><PRE>
//Farbe: Weiss
for spalte := a to h do
for zeile := 1 to 8 do
brett[Spalte,Zeile].farbe := Weiss;
</PRE><PRE>
//Farbe: Schwarz
Zeile := 1;
for spalte := a to h do
repeat
brett[spalte,Zeile].farbe := Schwarz;
Zeile := Zeile+2;
until zeile > 7;
</PRE>
<PRE>
//Outstringzuweisung
</PRE><PRE>
//Farben
for Spalte := a to h do
for Zeile := 1 to 8 do
case brett[Spalte,Zeile].farbe of
Weiss : outstring := 'w';
Schwarz : outstring := 's';
Keine : outstring := 'k' ;
end;
</PRE><PRE>
//Figuren
for Spalte := a to h do
for Zeile := 1 to 8 do
case brett[Spalte,Zeile].form of
Turm : outstring := 'T' ;
Springer : outstring := 'S' ;
Laeufer : outstring := 'L' ;
Dame : outstring := 'D' ;
Koenig : outstring := 'K' ;
Bauer : outstring := 'B';
Leer : outstring := '-';
end;
</PRE><PRE>
//Visualisierung (Figuren/Farben)
for spalte := a to h do
for zeile := 1 to 8 do
BrettStringGrid.Cells[succ(ord(spalte)),9-Zeile] := outstring;
</PRE>
end.
So des ist es. Aber wieso gibt es nun "T" statt, den jeweiligenString aus ?
CeYa
Hier ist der Quellcode eines Schach-Proggs. Es soll kein Spielzug (erstmal) zum ausführen da sein, sondern nur die Visualisierung enthalten.
Dem array brett (brett : array[TSpalte,TZeile] of TFigur wird immer zugewiesen, welche Figur auf welchem Feld (a1, b1, c2, ... ) steht und welche Farbe das Feld hat. An der Stelle im Quellcode "//Visualisierung (Figuren/Farben)" soll nun die Zuweisungen im Stringgrid bidllich ausgegeben werden. Dazu lasse ich das Array brett durchlaufen und für jede Zelle lasse ich einen Outstring ausgeben.Diesen Outstring habe ich vorher unter "//Outstringzuweisung" (//Farben, //Figuren) immer deklariert. Mein Problem jetzt ist, dass in jedem Feld des Stringggrids, egal welche Figur/Farbe ich vorher zugewiesen hab ein grosses "T" (für Bauer) ausgeben wird und Farben gänzlich fehlen.
<PRE>
type
TKoerper = (Turm, Springer, Laeufer, Dame, Koenig, Bauer, Leer);
TFarbe = (Weiss, Schwarz, Keine);
TSpalte = (a, b, c, d, e, f, g, h);
TZeile = 1..8;
TFigur = record
form: TKoerper;
farbe: TFarbe;
end;
TForm1 = class(TForm)
BrettStringGrid: TStringGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
</PRE><PRE>
procedure TForm1.FormCreate(Sender: TObject);
var
brett : array[TSpalte,TZeile] of TFigur;
Spalte : TSpalte;
Zeile : TZeile;
outstring : string;
muh : integer;
begin
//Zweisungen (Figuren)
//erste und letzte Zeile
for Spalte := a to h do
begin
brett[Spalte,1].form := Turm;
brett[Spalte,1].form := Springer;
brett[Spalte,1].form := Laeufer;
brett[Spalte,1].form := Dame;
brett[Spalte,1].form := Koenig;
brett[Spalte,1].form := Laeufer;
brett[Spalte,1].form := Springer;
brett[Spalte,1].form := Turm;
end;
</PRE><PRE>
for Spalte := a to h do
begin
brett[Spalte,8].form := Turm;
brett[Spalte,8].form := Springer;
brett[Spalte,8].form := Laeufer;
brett[Spalte,8].form := Dame;
brett[Spalte,8].form := Koenig;
brett[Spalte,8].form := Laeufer;
brett[Spalte,8].form := Springer;
brett[Spalte,8].form := Turm;
end;
</PRE><PRE>
//zweite und vorletzte Zeile
for spalte := a to h do
begin
brett[spalte,2].form := Bauer;
brett[spalte,7].form := Bauer;
end;
</PRE><PRE>
//dritte bis sechste Zeile
for Spalte := a to h do
for Zeile := 3 to 6 do
Brett[Spalte,Zeile].form := Leer;
</PRE><PRE>
//Zuweisungen (Farben)
</PRE><PRE>
//Farbe: Weiss
for spalte := a to h do
for zeile := 1 to 8 do
brett[Spalte,Zeile].farbe := Weiss;
</PRE><PRE>
//Farbe: Schwarz
Zeile := 1;
for spalte := a to h do
repeat
brett[spalte,Zeile].farbe := Schwarz;
Zeile := Zeile+2;
until zeile > 7;
</PRE>
<PRE>
//Outstringzuweisung
</PRE><PRE>
//Farben
for Spalte := a to h do
for Zeile := 1 to 8 do
case brett[Spalte,Zeile].farbe of
Weiss : outstring := 'w';
Schwarz : outstring := 's';
Keine : outstring := 'k' ;
end;
</PRE><PRE>
//Figuren
for Spalte := a to h do
for Zeile := 1 to 8 do
case brett[Spalte,Zeile].form of
Turm : outstring := 'T' ;
Springer : outstring := 'S' ;
Laeufer : outstring := 'L' ;
Dame : outstring := 'D' ;
Koenig : outstring := 'K' ;
Bauer : outstring := 'B';
Leer : outstring := '-';
end;
</PRE><PRE>
//Visualisierung (Figuren/Farben)
for spalte := a to h do
for zeile := 1 to 8 do
BrettStringGrid.Cells[succ(ord(spalte)),9-Zeile] := outstring;
</PRE>
end.
So des ist es. Aber wieso gibt es nun "T" statt, den jeweiligenString aus ?
CeYa
Comment