Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Schachbrettmuster im Array (https://www.delphipraxis.net/45959-schachbrettmuster-im-array.html)

JasonDX 15. Mai 2005 16:59

Re: Schachbrettmuster im Array
 
1. Verwende bitte die Delphi-Tags
Code:
[delphi]
und
[/delphi]
[Edit]Habs zu spät gesehn[/Edit]

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 Suche




@Sharky: Ok, mit deiner Methode gehts auch, bloß nicht 'and not', sondern 'xor' nehmen ;)

Sharky 15. Mai 2005 17:02

Re: Schachbrettmuster im Array
 
Zitat:

Zitat von Chimaira
....@Sharky: Ok, mit deiner Methode gehts auch, bloß nicht 'and not', sondern 'xor' nehmen ;)

*g* Ist mir eben auch aufgefallen ;-)

Delphi-Quellcode:
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;
@tankm26: Die beiden "ShowMessage-Texte" sind aber nicht wirklich notwendig!!

tankm26 15. Mai 2005 17:11

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?

tankm26 15. Mai 2005 17:16

Re: Schachbrettmuster im Array
 
Liste der Anhänge anzeigen (Anzahl: 1)
so, das bild.

JasonDX 15. Mai 2005 17:32

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:
procedure FillRect(i, j: integer; Color: TColor);
begin
  DrawGrid1.Canvas.Brush.Color := Color;
  DrawGrid1.Canvas.FillRect(DrawGrid1.CellRect(i, j));
end;
Dabei ist aber zu beachten, dass dies in jedem OnShow-Ereignis zu erledigen ist, weil sich Canvas nicht von alleine neu zeichnet.


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:
a xor b = c
a b|c
---+-
0 0|0
0 1|1
1 0|1
1 1|0
Also wenn a <> b (wobei a, b und c immer boolean sein müssen)

Sharky 15. Mai 2005 17:37

Re: Schachbrettmuster im Array
 
Zitat:

Zitat von Chimaira
... 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)....

Hai Chimaira,

Odd() gibt True zurück wenn die übergebene Zahl undgerade ist (x mod 2 <> 0) ;-)

tankm26 15. Mai 2005 17:39

Re: Schachbrettmuster im Array
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke!!!

bigg 15. Mai 2005 18:01

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.

tankm26 16. Mai 2005 15:59

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?

Spoon 16. Mai 2005 16:45

Re: Schachbrettmuster im Array
 
Also bei mir funktioniert es einwandfrei wenn ich

Delphi-Quellcode:
spielfeld.ColCount:=ANZAHL+3;
spielfeld.RowCount:=ANZAHL+3;
durch
Delphi-Quellcode:
spielfeld.ColCount:=ANZAHL;
spielfeld.RowCount:=ANZAHL;
ersetzte. Mir ist sowieso schleierhaft, was genau du damit bezwecken wolltest...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz