![]() |
Re: Schachbrettmuster im Array
1. Verwende bitte die Delphi-Tags
Code:
[Edit]Habs zu spät gesehn[/Edit]
[delphi]
und [/delphi] 2. Das füllen der Felder geht mit einem DrawGrid einfacher als mit einem StringGrid. Dafür kannst du dir dann die Methoden von TDrawGrid namens Canvas.FillRect und CellRect angucken, im Fall hilft die OH oder die ![]() @Sharky: Ok, mit deiner Methode gehts auch, bloß nicht 'and not', sondern 'xor' nehmen ;) |
Re: Schachbrettmuster im Array
Zitat:
Delphi-Quellcode:
@tankm26: Die beiden "ShowMessage-Texte" sind aber nicht wirklich notwendig!!
procedure TForm1.spielfeldDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin if Odd (Acol) XOR (Odd (ARow)) then begin spielfeld.Canvas.Brush.Color := clBlack; end; spielfeld.Canvas.FillRect(Rect); end; |
Re: Schachbrettmuster im Array
Wegen der Texte/Messages:
Ja, die sind wirklich gemein. Es war nur eine Spielerei. Das mit den delphi-tags mache ich beim nächsten mal natürlich. Sorry! Die Möglichkeit von Sharky funktioniert wunderbar, danke erstmal! Wenn man die Version von Chimaira weiterverfolgt, (Kommentar: Das mit ... Dafür kannst du dir dann die Methoden von TDrawGrid namens Canvas.FillRect und CellRect angucken, im Fall hilft die OH oder die Suche hab' ich gar nicht kapiert.) wie sähe das dann aus? Ich war eben mit Sharky's Methode beschädtigt, hab sogar schon ein Foto davon gemacht (im Anhang). Was bedeutet eigentlich if Odd(ACol) xor Odd(ARow)? Odd=? xor=? Ich muss jetzt ersteinmal zum Essen. Bis gleich? |
Re: Schachbrettmuster im Array
Liste der Anhänge anzeigen (Anzahl: 1)
so, das bild.
|
Re: Schachbrettmuster im Array
(Du kannst deine Beiträge, somit auch Titel und Anhang durch den Edit-button rechts oben editieren)
Meine Lösung würde so aussehen:
Delphi-Quellcode:
Dabei ist aber zu beachten, dass dies in jedem OnShow-Ereignis zu erledigen ist, weil sich Canvas nicht von alleine neu zeichnet.
procedure FillRect(i, j: integer; Color: TColor);
begin DrawGrid1.Canvas.Brush.Color := Color; DrawGrid1.Canvas.FillRect(DrawGrid1.CellRect(i, j)); end; Also ist wohl Sharkys zu bevorzugen ;) Bezüglich Odd: Meine OH sagt mir, dass dies eine Funktion ist, die mir sagt, ob eine Zahl gerade ist. Macht also das selbe wie (Zahl mod 2 = 0). Bezüglich Xor: Xor ist ein boolscher operator mit folgender Wahrheitstabelle: (exclusiv or)
Code:
Also wenn a <> b (wobei a, b und c immer boolean sein müssen)
a xor b = c
a b|c ---+- 0 0|0 0 1|1 1 0|1 1 1|0 |
Re: Schachbrettmuster im Array
Zitat:
Odd() gibt True zurück wenn die übergebene Zahl undgerade ist (x mod 2 <> 0) ;-) |
Re: Schachbrettmuster im Array
Liste der Anhänge anzeigen (Anzahl: 1)
Danke!!!
|
Re: Schachbrettmuster im Array
Liste der Anhänge anzeigen (Anzahl: 1)
Ein Schachbrett sieht für mich so aus. :P
PS: Du kannst gar kein Informatiker sein, höhstens Auszubildender. In diesem Sinne angenehme pfingsten. |
Re: Schachbrettmuster im Array
Liste der Anhänge anzeigen (Anzahl: 1)
Jetzt scheitere ich mittlerweile einen Tag daran, zwei Spieler in das Programm einzubinden, die abwechselnd rote und blaue Steine setzen.
Die Positionierung der Kreise auf dem Spielfeld funktioniert nicht. Wo könnte hierbei ein Problem auftreten? |
Re: Schachbrettmuster im Array
Also bei mir funktioniert es einwandfrei wenn ich
Delphi-Quellcode:
durch
spielfeld.ColCount:=ANZAHL+3;
spielfeld.RowCount:=ANZAHL+3;
Delphi-Quellcode:
ersetzte. Mir ist sowieso schleierhaft, was genau du damit bezwecken wolltest...
spielfeld.ColCount:=ANZAHL;
spielfeld.RowCount:=ANZAHL; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz